GIT pro začátečníky
GIT je verzovací systém, díky kterému můžeme spravovat a sledovat vývoj kódu v čase. Vidíme tak přehledně všechny provedené změny, můžeme se v kódu vracet a označovat nové verze. Jedním z dalších důvodů, proč se GIT používá, je možnost snadného sdílení projektu s ostatními a systématická spolupráce týmu vývojářů na stejném projektu.
Další skvělou výhodou je i to, že díky online GIT repozitáři máme svůj projekt bezpečně zálohovaný a nemusíme se bát, že bychom o něho přišli kvůli technickým problémům našeho stroje.
Služby pro GIT repozitář online
Vlastní GIT repozitář si můžeme vytvořit jednoduše i u sebe na svém lokálním stroji. Přicházíme tak ale o spoustu výhod, hlavně o možnost spolupráce na projektu s ostatními vývojáři. Z toho důvodu je potřeba mít repozitář umístěný online. Můžeme využít buď vlastní server nebo sáhnout po službách, které hostování GIT repozitářů online zdarma nabízí.
Nejrozšířenějšími službami, na které v praxi narazíte, jsou Github a Bitbucket. Obojí je dobré znát, obojí se hodí na něco jiného.
Github repozitář pro open source projekty
Webová služba github.com nabízí možnost zdarma hostovat své veřejné GIT repozitáře. Díky tomu se používá především na open source projekty, které jsou snadno dostupné všem.
Bitbucket pro privátní GIT repozitář
Pokud chcete zdarma hostovat privátní GIT repozitáře, které budete sdílet pouze se svým týmem, určitě narazíte na službu bitbucket.org. U jednotlivých projektů můžete libovlně nastavovat oprávnění a kód je tak vždy v bezpečí.
Instalace GITu
Abyste mohli GIT používat ve svém lokálním vývojovém prostředí, musíte si ho nejprve nainstalovat. Instalace je závislá na Vašem operačním systému, proto doporučuji postupovat podle oficiálního návodu na instalaci GIT.
GIT můžete nainstalovat také v rámci software Sourcetree, který určitě doporučuji všem začátečníkům vyzkoušet, více si o něm povíme dále.
Základní prvky systému GIT
Commit
Commit je základním kamenem verzovacího systému GIT. Díky commitu můžeme uložit a pojmenovat provedené změny v kódu. Společně s provedenými změnami se uloží informace o čase uložení, na čemž GIT dále staví.
Větev – branch
Pokud pracujeme sami na jednoduchém projektu, vystačíme si nejspíše s hlavní větvi, která se nejčastěji nazývá master. V této větvi provádíme všechny změny, zjednodušeně řečeno ukládáme své commity. Pokud však pracujeme v týmu nebo vyvíjíme současně několik funkčnosti aplikace, budeme se muset naučit práci s větvemi.
O práci s větvemi píšu ještě detailněji níže v článku.
Push
Důležitou akcí při práci s GITem je tzv. push. Pushem odešleme naše commity, tedy provedené změny, do vzdáleného GIT repozitáře, kde je od této chvíli vidí všichni a mohou s úpravami dále pracovat.
Pull
Pull je opakem pushe. V případě provedení pullu aktualizujeme náš lokální projekt oproti vzdálenému repozitáři. Pull je důležité provádět před zahájením jakýchkoliv úprav, abychom vždy pracovali na aktuálním projektu.
Obě akce push a pull se provádějí vždy vzhledem k aktuální větvi, ve které se nacházíme. Pokud tedy pracujeme ve vlastní větvi „dev“ a provedeme push, odešleme tak pouze commity v rámci větve „dev“. Naopak pokud provedeme pull ve větvi „dev“, aktualizuje se nám pouze tato větev, nikoliv další větve, jako například master apod.
Jak používat verzovací systém GIT
GIT lze používat několika způsoby. Hardcore uživatelé ho můžou používat samozřejmě přímo z příkazové řádky, pro kterou je GIT hlavně určen, tento článek je však určen začátečníkům a proto si ukážeme, jak GIT používat pohledně v rámci GUI aplikací.
Aplikace Sourcetree
Jak jsem již zmínil, Sourcetree bych doporučil všem začátečníkům, aby se s GITem oťukali. Jedná se o GUI aplikaci, takže historii Vašeho projektu uvidíte pěkně graficky a lze si tak lépe představit, jak GIT funguje a jak ho můžeme používat.
Aplikaci Sourcetree můžeme jednoduše propojit s našimi účty na Githubu nebo Bitbucketu. Jednoduše můžeme commitnout provedené změny a graficky vidíme historii projektu včetně všech aktivních větví, mezi kterými můžeme snadno přepínat.
GIT integrovaný v IDE
Pokročilejším uživatelům se doporučuji naučit pracovat s VCS (Version Control System) integrovaným přímo v jejich IDE (vývojové prostředí), na které jsou zvyklá. Většina moderních IDE má tuto funkčnost už součásti základní instalace nebo lze GIT doinstalovat pomocí pluginů. Pokud to vaše IDE neumí, změňte IDE. 🙂
Díky integrovanému GITu přímo v IDE získáváte nové možnosti psaní kódu, o kterých se vám ani nesnilo. Nejenže máte vše dostupné v rámci jedné aplikace a nemusíte se tak přepínat mezi více okny, ale hlavně už při psaní kódu vidíte všechny provedené změny už přímo v editoru kódu, můžete si jednoduše zobrazit historii každého řádku, vracet provedené změny a mnohem více.
Každé IDE má práci s VCS / GITem řešenou malinko jinak, proto nemá cenu zde něco popisovat do detailu. Nicméně osobně používám VCS integrovaný v PHP Stormu a práce s GITem je zde velmi intuitivní a jednoduchá a už si nedokáži představit pracovat na projektu, kde GIT nemám.
Práce s GIT větvemi
Nejtěžší věc pro většinu začátečníky je naučit se pracovat s větvemi. U jednoduchých projektů, na kterých pracujeme sami, si můžeme vystačit i s jednou hlavní větvi, většinou nazvanou master.
Github.com dlouhá léta označoval hlavní větev jako master. V roce 2020 se hlavní větev změnila na main. Technicky se ale nic nemění, jedná se pouze o pojmenování.
U složitějších projektů a především při práci v týmu se už budeme muset naučit pracovat s větvemi.
Na diagramu výše můžete vidět, jak zhruba větvení v GITu funguje. Každá linie je vlastní větev, kolečka jsou commity. Díky větvím můžeme současně vyvíjet několik funkcí a ty pak pomocí tzv. merge spojit do jedné větve. Nestává se nám tak, že bychom si navzájem kód nějak ovlivňovali nebo přepisovali. Větev vytváříme vždy z nějakého již existujícího commitu a jakmile máme na dané části aplikace hotovo, provedeme merge zpět do hlavní větve.
Při provedení merge můžou nastat konflikty, např. když jsou v obou větvích změny na stejném řádku souboru. Díky GITu je lze však jednoduše vyřešit a předejít tak spoustě problémům.
Větve doporučuji pojmenovávat systematicky, aby bylo jasné, k čemu slouží a na čem se v ní pracuje. Někteří pojmenovávají větve podle svého jména / příjmení, to je poměrně k ničemu, když k projektu přijde druhý vývojář a neví, na čem v té větvi pracujete.