Obsah GIT ....................................................................................................................................................... 2 Příkazy ............................................................................................................................................. 3 Nástroje pro práci s GIT................................................................................................................... 4 Větvení - Git flow........................................................................................................................... 10 GIT GIT je distribuovaný verzovací systém původně vyvinutý pro správu verzí jádra operačního systému Linux. Tento systém pro správu verzí je využíván od roku 2005. Dalo by se říct, že postatou GITu je jeho distribuovanost (každý vývojář má u sebe lokální kopii celé historie vývoje, na rozdíl od CVS - tam je historie pouze na serveru). Každá kopie repositáře je tak vlastně kompletní zálohou centrálního/vzdáleného repositáře. Lokální kopie = lokální repositář + pracovní adresář (working directory WD) Lokální kopie = lokální repositář + pracovní adresář (working directory WD) Mezi lokálním repositářem a pracovním adresářem je ještě tzv. index. Do něj přidáváme nebo odebíráme modifikované soubory, které chceme přenést z pracovního adresáře do lokálního repositáře. Tím dosáhneme toho, že budeme přenášet pouze vybrané soubory, nikoli všechny modifikované soubory. GIT Repository 1 Repository 3Repository 2 Local Repository 11 WD 11 Local Repository 12 WD 12 Local Repository 21 WD 21 Příkazy Základní příkazy: add - přídání modifikovaného nebo nového souboru na index commit - přenesení souborů z indexu do lokálního repositáře commit -a - přenesení všech modifikovaných a nových souborů do lokálního repositáře push - přenesení změn z lokálního do vzdáleného repositáře reset - odebrání souboru/ů z indexu pull/rebase/clone - přenesení změn ze vzdáleného repositáře do pracovního adresáře fetch - přenesení změn ze vzdáleného do lokálního repositáře checkout/checkout HEAD - přenos změn z lokálního repositáře do pracovního adresáře diff - porovnání souboru v pracovním adresáři s jeho kopií/vzorem v lokálním repositáři Konflikty se řeší pouze při příkazů pull. Git sám udělá merge na základě reverzního algoritmu, v konfliktních souborech vyznačí změny a je nutné merge provést ručně - v používaném editoru nebo pomocí mergovacího nástroje. Podrobnější popis všech příkazů gitu naleznete na http://ndpsoftware.com/git- cheatsheet.html. reset Nástroje pro práci s GIT Stejně jako u CVS se nejčastěji používají příkazy přímo na příkazové řádce, ale opět existují grafické nástroje pro práci s GITem - např. SmartGIT, TortioseGIT, GITk, gitea. Případně mohou být přímo příkazy verzovacího systému GIT součástí nějakého vývojového prostředí - viz Oracle SQL developer nebo Netbeans. Příkazová řádka Příkazem status jsme si vypsali stav pracovního adresáře. Výpis rozlišuje mezi modifikovanými soubory a novými soubory, o nichž neví ani index, natož lokální či vzdálený repositář. Příkazem diff si pak můžeme zobrazit rozdíl mezi modifikovaným souborem a souborem uloženým v lokálním repositáři. Zeleně jsou označeny přidané řádky,červeně smazané. Místa beze změn zůstávají bílá. Pokud chceme přidat změny do lokálního repositáře, pak je nejprve musíme přidat na index pomocí příkazu add. Z následujícího obrázku je vidět, že můžeme přidávat nejen jednotlivé soubory, ale i celé adresáře. Git už za nás vyřeší to, že na index z požadovaného adresáře přidá pouze modifikované či nové soubory. Příkazu commit je nutné doplnit o log/komentář pro daný commit. Vložený komentář bude vložen ke všem souborům, kterých se commit týká. Git vypíše kolik souborů jsme commitovali a kolik změn náš commit vyvolal. Vypsáním status se pak dozvíme, že naše větev je 1 commit od stavu hlavní větve v centrálním repositáři a že máme provést příkaz push, abychom publikovali naše změny do vzdáleného repositáře a tím je zpřístupnili ostatním vývojářům v týmu. SmartGIT Program WinCVS je grafickým prostředím pro práci s verzovacím systémem GIT. Prostředí aplikace je v duchu vývojových prostředí. Prostředí aplikace je rozděleno do oken pro správu jednotlivých repositářů a větví v rámci konkrétního repositáře. Dále máme k dispozici graf dané větve, včetně všech commitů v dané větvi ve formě popisu commitu (message). U konkrétního commitu pak máme k dispozici informaci o uživateli i čase, kdy daný commit proběhl. Následuje informaci o souborech, jejichž změny byly commitem dotčeny, včetně zobrazení změn formou porovnání verzí daného souboru. Jednotlivé příkazy jsou dostupné buď z hlavního menu aplikace nebo přes tlačítka na tlačítkové liště, příp. přes kontextové menu vyvolané přes pravé tlačítko myši. V rámci hlavního menu je odděleno menu pro přepínaní mezi repositáři. Příkazy GITu jsou odděleny do skupin podle toho, zda pracujeme s lokálním repositářem (Local) nebo se vzdáleným repositářem (Remote). Zvláštní skupinu pak tvoří příkazy pro práci s větvemi (Branch). Do této skupiny je včleněn také příkaz pro tvorbu značek Add tag, pro vytváření releasů. V rámci nastavení si pak můžeme prostředí upravit, jak jsme zvyklí. Např. změnit jednotlivé klávesové zkratky nebo definovat svůj oblíbený externí nástroj pro porovnání změn jednotlivých souborů. TortoiseGIT Prostředí TortioseGIT, stejně jako TortioseCVS, není ucelenou aplikací, jak jsme u vývojových prostředí zvyklí. Prostředí TortoiseGIT je dostupné z kontextového menu pro jednotlivé soubory a adresáře. Jeho obsah se mění podle toho, co vybraný adresář nebo soubor reprezentuje. Na rozdíl od TortoiseCVS je TortoiseGIT dostupný v rámci samostatného podmenu kontextového menu, ale i tak jednotlivé položky odpovídají kontextu a zobrazí se nám různá menu pro repositář či konkrétní soubor. Historii jednotlivých commitů si pak můžeme zobrazit volbou Show log. Z tohoto místa pak výběrem konkrétního souboru můžeme vyvolat interní program pro porovnání verzí TortoiseGitMerge. Z obrázku je patrné, že operace tohoto srovnávacího nástroje voláme tlačítky z tlačítkové lišty. Funkce odpovídají standardním srovnávacím nástrojům, jak jsme již dříve ukazovali u programu WinMerge. V rámci nastavení programu můžeme samozřejmě změnit tento nástroj na libovolný externí program. Větvení - Git flow https://nvie.com/posts/a-successful-git-branching-model/