GitKraken - git gui klient
V předchozím kvízu, Kvíz - Git, jsme si ověřili nabyté zkušenosti z kurzu.
V tomto článku si ukážeme grafickou nadstavbu pro správu git repozitářů GitKraken a její výhody oproti terminálu a jiným grafickým nadstavbám. Pro úplné pochopení článku se předpokládá základní znalost gitu.

GitKraken je multiplatformní git gui klient, který umožňuje uživateli pracovat s repozitáři rychle a přehledně. Pravděpodobně si kladete otázku - proč bych měl použít zrovna GitKraken místo mého oblíbeného git gui klienta? GitKraken nabízí:
- Interaktivní graf větví, ve kterém se uživatel jednoduše orientuje. Vývojářům se podařilo velmi dobře vyřešit merge větví, které uživatel může spojovat pomocí drag & drop, ale hlavně v případě merge konfliktů poskytuje přehledný nástroj pro jejich vyřešení.
 - Dále umožňuje spravovat více repozitářů, které se otevírají v tabech podobně jako u webových prohlížečů.
 - Berličkou pro začátečníky s gitem může být Undo&Redo funkcionalita, která vás v případě nechtěného commitu (nebo merge) vrátí hned zpět.
 - Samožřejmostí je integrace remote služeb jako GitHub, GitLab, Bitbucket nebo Azure DevOps.
 - GitKraken také obsahuje editor s podporou syntax highlight, souborovou minimapou a mezisouborovým vyhledáváním.
 
Přehledný interface

Moderní a přehledný interface je rozdělen na 4 hlavní části:
- Levý panel
		
- Local & Remote obsahují seznamy všech větví, které jsou v lokálním a remote repozitáři.
 - Tags, Submodules, Stashes - tady asi není třeba nic dodávat - seznam tagů, submodulů a aktivního stashe.
 - Pull Requests zobrazuje aktivní Pull Requesty z GitHubu, Bitbucketu a GitLabu (v tomto případě jde o Merge Requesty), v případě integrace GitHub nebo Bitbucket účtu umožňuje vytváření pull requestů přímo z GUI bez nutnosti použití webového rozhraní.
 - V případě použití Git Flow (což je ve zkratce sada pravidel pro práci s větvemi jako master/develop/release/feature/hotfix) můžete jednodušeji spravovat tyto větve. Například po ukončení prací na hotfixu za vás GitKraken provede merge/rebase.
 
 - Graf
		
- V levé části se zobrazují větve a tagy, které představují ukazatele na konkrétní commit. Jednotlivé větve se dají skrývat pro lepší přehlednost v grafu. Lze také zobrazit "solo" větev.
 - V pravé části zobrazuje každý řádek jeden commit, vedle kterého jde vidět Commit Message. Commity jsou řazeny od nejnovějších po nejstarší. Každá vertikální čára představuje branch dostupnou v lokálním repozitáři. Na jednom commitu může být více větví, které se zobrazí najetím myši na zobrazenou větev. Může se zde také nacházet Tag.
 - // WIP upozorňuje, že jsou změněny nějaké soubory v repozitáři a tato změna zatím není commitnuta.
 - Stash Node zobrazuje, že ve větvi jsou uložené změny ve Stash oblasti pro pozdější použití.
 
 

- Commit Panel
		
- Unstage / Stage oblast slouží k rozlišení souborů, které mají být v commitu - umožňuje zobrazení seznamu s cestou k souboru, nebo zobrazení ve stromové adresářové struktuře.
 - U každého souboru se zobrazuje stav pro lepší orientaci. Při kliku na soubor si můžete zobrazit změny v souboru, nebo celý soubor v editoru, kde můžete soubor přímo upravovat.
 - V commit panelu se také zobrazuje seznam souborů, ve kterých nastal konflikt v případě merge dvou větví. Nabízí pak vyřešení konfliktu, kdy přesměruje uživatele do Merge Toolu.
 
 

- Toolbar a ovládací lišta
		
- Undo a Redo - umožňuje vracet zpět a vpřed některé akce, jako například nechtěnný commit, nebo merge (například push na remote repozitář nejde vrátit).
 - Pull stáhne změny z remote repozitáře, případně umožňuje po rozkliknutí Fetch All, nebo další možnosti pullu jako fast-forward a rebase.
 - Push nahraje commity na remote repoziřář.
 - Stash uloží změněné soubory, které nebyly commitnuty do stashe.
 - Pop vrátí změněné soubory ze stashe do working directory.
 - Glo Boards otevře nástroj pro správu úkolů a github issues. Tuto část GitKrakenu si popíšeme v samostatném odstavci níže.
 - Taby umožňují otevřít více git repozitářů zároveň a plynule mezi nimi přepínat.
 
 
Merge, rebase a merge conflict editor
Merge a rebase pomocí drag & dropu je příjemná vychytávka, ale není problém provádět tyto akce pomocí kliku pravého tlačítka na cílovou větev. V GitKraken můžete interaktivně mergovat i ty větve, na kterých aktuálně nepracujete. Taktéž můžete na ostatních větvích provádět Fetch, Pull a Push bez zbytečného stashování a přepínání větví.

Určitě jste se mnohokrát setkali s konflikty při mergování větších větví. Řešení konfliktů umí být někdy velmi zákeřnou činností, u které padají různé expresivní výrazy. Merge conflict editor vám tuto práci usnadní. Přehledně si vyberete, které řádky se mají vložit do výsledku merge. V případě potřeby můžete přímo do editoru vložit další kód, nebo doplňující komentář. Tato funkce je součástí PRO verze.
Pull Requesty
GitKraken nabízí integraci pull requestu (případně merge requestů v případě GitLabu) pro usnadnění a zrychlení práce. V případě propojení se službami jako je GitHub nebo GitLab vám GitKraken nabídne vytváření nových pull requestů přímo z GUI. Již existující pull requesty můžete spravovat přímo v aplikaci bez nutnosti použití webového rozhraní. Využít se dají také assignee a labely.
OAuth integrace
GitKraken můžete propojit pomocí OAuth se službami jako GitHub, GitLab, Bitbucket, nebo Azure DevOps. V případě GitLabu není problém služby propojit i na self-hosted instancích. Pokud budete například chtít naklonovat projekt, nebo budete chtít přidat remote repozitář, tak vám GitKraken nabídne přístup na služby, které máte připojeny.
Glo Issues Boards

Glo Boards slouží k organizaci a trackování tasků nebo issues. Jednotlivé tasky se dají spravovat v kalendářovém zobrazení, nebo případně v tabulkovém módu. Mezi tasky se dá jednoduše vyhledávat/filtrovat, tasky se dají přidělovat členům teamu a dají se dělit na privátní nebo veřejné. Popisy tasků podporují Markdown, je možné si v nich vytvářet checklisty, labely, připojit přílohy formou souborů a aktivitu tasků můžete sledovat přes notifikace. Glo Boards mají také svou vlastní mobilní aplikaci, takže s nimi jde pracovat i mimo PC. S použitím GitHub integrace můžete spravovat issues přes GitKraken Glo Boards a změny provádět v reálném čase z GitKrakenu do GitHub webového rozhraní.
Důvody proč použít GitKraken
Už jsme si dostatečně popsali funkcionality GitKrakenu a teď si shrneme, proč byste měli dát GitKrakenu šanci:
- GitKraken je multiplaftormní (Mac, Linux, Windows)
 - mezi hlavní výhody patří přehledný graf
 - merge/rebase větví pomocí drag & drop, u kterých vás nezaskočí žádný merge konflikt díky merge conflict editoru
 - jednoduchá správa a integrace webových remote služeb jako je GitHub, GitLab
 - další funcionalita undo/redo pro vrácení předešlé akce
 - možnost správy více repozitářů v tabech
 - samozřejmostí jsou také klávesové zkratky, nebo light/dark theme
 - velmi užitečným nástrojem může být Glo Issue Boards pro správu úkolů, nebo správu issues z připojeného GitHubu
 - můžete se také těšit na časté aktualizace
 
Pro pořádek si uvedeme i nevýhody:
- i když má GitKraken free verzi, tak si pro použítí musíte vytvořit GitKraken účet
 - free verze je také omezena na nekomerční použití, z toho také plyne, že se nejedná o open-source projekt
 - někteří uživatelé si v dřívějších verzích stěžovali na paměťovou náročnost (ale já jsem se s tím po roce používání nikdy nesetkal)
 - taktéž byla softwaru vyčítána rychlost, na kterou se ve verzi 6
	zaměřili a aktuálně je GitKraken rychlý jako blesk 

 
Závěr
Všechny informace jsem čerpal z vlastních zkušeností a dokumentace GitKrakenu (odsud
pochází i většina obrázků). Pokud byste chtěli využít PRO verzi, tak
přikládám svůj referal link níže. Věřím, že se vám bude GitKraken
líbit a ulehčí vám práci na vašich projektech 
Referal link
Můj referal link pro registraci
				