====== Verzování kódu a Git ====== **Verzování kódu** (Version Control System – VCS) je systém, který zaznamenává změny v souborech v průběhu času. Umožňuje programátorům pracovat na stejném kódu současně, spravovat různé verze aplikace (např. stabilní verze vs. vývojová) a dohledat, kdo, kdy a proč provedl konkrétní změnu. ===== 1. Typy systémů pro správu verzí ===== ==== Lokalizované (Local VCS) ==== Jednoduché databáze v počítači uživatele. Riziko ztráty dat při poruše disku. ==== Centralizované (CVCS) ==== Jeden centrální server (např. **Subversion - SVN**), kde jsou uloženy všechny verze. Uživatelé si stahují pouze aktuální verzi. * **Nevýhoda:** Pokud server vypadne, nikdo nemůže ukládat změny ani prohlížet historii. ==== Distribuované (DVCS) ==== Každý uživatel má v počítači **kompletní kopii** celého projektu včetně celé jeho historie. **Git** je nejznámějším zástupcem. * **Výhoda:** Práce je možná offline, operace jsou bleskové a systém je vysoce odolný proti ztrátě dat. ---- ===== 2. Co je to Git? ===== **Git** vytvořil Linus Torvalds (tvůrce Linuxu) v roce 2005. Je to open-source nástroj, který se stal celosvětovým standardem pro vývoj softwaru. ==== Tři stavy souboru v Gitu: ==== * **Modified:** Soubor byl změněn, ale změna ještě není uložena v historii. * **Staged (Index):** Soubor je označen k uložení do příští verze (příprava na "commit"). * **Committed:** Změny jsou bezpečně uloženy v lokální databázi Gitu. --- ===== 3. Základní pojmy a příkazy ===== ^ Pojem ^ Popis ^ Příkaz ^ | **Repository (Repo)** | Adresář s projektem sledovaný Gitem. | ''git init'' | | **Clone** | Stažení existujícího projektu z internetu. | ''git clone [URL]'' | | **Commit** | "Snímek" stavu projektu v daný čas. | ''git commit -m "Zpráva"'' | | **Branch (Větev)** | Izolovaná linka vývoje (např. pro novou funkci). | ''git branch [název]'' | | **Merge** | Sloučení změn z jedné větve do druhé. | ''git merge [název]'' | | **Push / Pull** | Odeslání změn na server / stažení změn ze serveru. | ''git push / git pull'' | ---- ===== 4. Větvení (Branching) a spolupráce ===== Nejsilnější stránkou Gitu je práce s větvemi. Vývojář si vytvoří vlastní větev (např. ''feature-login''), kde pracuje, zatímco hlavní větev (''main'' nebo ''master'') zůstává stabilní. ==== Pull Request (Merge Request) ==== Proces, kdy vývojář požádá o sloučení své větve do hlavní větve. Ostatní členové týmu mohou kód zkontrolovat (**Code Review**), napsat připomínky a teprve po schválení se kód sloučí. ---- ===== 5. Platformy pro hostování Gitu ===== Zatímco Git je samotný nástroj (běžící v příkazové řádce), existují webové služby, které k němu přidávají grafické rozhraní a nástroje pro týmovou spolupráci: * **GitHub:** Nejpopulárnější platforma, domov většiny open-source projektů. * **GitLab:** Silný nástroj s důrazem na [[it:dev:testing|CI/CD automatizaci]]. * **Bitbucket:** Často používaný ve firmách (integrace s nástrojem Jira). ---- ===== 6. Strategie verzování (Git Flow) ===== V profesionálních týmech se používají pravidla, jak větve pojmenovávat a kdy je slučovat: * **Main:** Vždy stabilní kód připravený k vydání. * **Develop:** Místo, kde se integrují nové funkce. * **Hotfix:** Větve pro okamžitou opravu kritických chyb v produkci. ---- //Související články:// * [[it:dev:agile|Metodiky vývoje (Scrum a Kanban)]] * [[it:dev:testing|Testování a QA (Automatické spouštění testů)]] * [[it:dev:web_tech|Webové technologie a vývoj]] //Tagy: {{tag>dev git github version_control programming team_collaboration devops}}//