Git je skvělý nástroj pro správu verzí zdrojového kódu. Většina operací běží lokálně a rychle. Do širšího povědomí se Git dostal právě díky serveru GitHub, kde je dnes hostována spousta nadějných open-source projektů. Git je ale primárně sada příkazů pro příkazovou řádku. Na Linuxu nebo Macu s tím není problém, vývojáři jsou zvyklí a mají k dispozici spoustu nástrojů pro textový režim. Na Windows to je ale jiný příběh. Nativní shell je nedostatečný a pro práci s Gitem je potřeba instalovat jiné shelly, emulovat části souborového systému Linuxu atd. Toto zvlášť začínající uživatel Gitu nechce řešit. Přesně tento problém se snaží GitHub for Windows odstranit.
Screenshot hlavní obrazovky programu GitHub for Windows. Obsahuje lokální repozitáře i ty z GitHubu a Google Code.
Alternativy
Před GitHub aplikací jsem používal utilitu samotného gitu – git gui. Ta umožňuje základní operace – práce s repozitáři, commity, branchování, mergování, prohlížení historie. Problémy ale nastaly při pushování do vzdálených repozitářů. Muselo se googlit, složitě nastavovat SSH klíče a příkazové řádce se nešlo vyhnout. Samotné uživatelské rozhraní je docela zastaralé a ošklivé. Navíc tam je jeden nepříjemný UX problém – při každém commitu se musí manuálně označit všechny soubory a zmáčknout CTRL+T (Stage to commit). Po hodně commitech to začíná lézt na nervy.
Z alternativ bych ještě zmínil TortoiseGit. Je to port známého TortoiseSVN do Gitu. Program je dobrá volba pro ty, co přechází z Tortoise SVN. Všechny příkazy jsou na známém místě a přechod z SVN bude bezbolestný. Nicméně pro nováčka je i toto rozhraní moc složité – většinu příkazů nikdy nepoužijete a v menu jenom matou.
Výhody
V čem je tedy lepší Github for Windows? Především v důrazu na tzv. developer experience (UX pro vývojáře). Program se snaží odstranit maximum překážek, zejména při práci s hostingem GitHub. Ale není to podmínka, přes program můžete spravovat jak čistě lokální repozitáře, tak jiné vzdálené repozitáře (např. Google Code). V ostatních nástrojích většinou pouze nastavujete parametry pro git příkazy. Tady díky intuitivnímu UI Git příkazy vůbec nemusíte znát (stačí vědět co to je repozitář, branch a commit). Třeba branchování a mergování je opravdu hodně jednoduché. Program je tedy ideální pro začátečníky s Gitem, kteří se do toho mohou vrhnout bez učení příkazů. Ale ani pokročilí uživatelé nepřijdou zkrátka – v repozitáři můžete jedním klikem spustit příkazovou řádku a využít plnou sílu Gitu. Při instalaci se rovnou nainstaluje distribuce Gitu a rozšíření pro Windows shell – to si dřív vývojář musel řešit sám.
Hodně mě potěšila autentizace k vzdáleným repozitářům. Program to sám zařídí tak, aby buď nebyly potřeba SSH klíče (komunikace probíhá po HTTPS), nebo program SSH klíče nastaví a pošle e-mail s informací, že klíče byly přidány do GitHub účtu. I nastavení Google Code autentizace bylo jednodušší. Dříve jsem vždy musel chvíli bojovat s SSH klíči. Samozřejmá je integrace s GitHubem – u repozitářů na webu uvidíte tlačítko Clone in Windows, kterým si repozitář jedním klikem naklonujete. Obousměrná synchronizace se vzdálenými repozitáři je automatická a funguje pěkně. Program obsahuje další maličkosti, která zpříjemní život – např. může vložit defaultní .gitignore soubor, který skryje většinu nepotřebných generovaných souborů bez dalšího nastavování.
Nevýhody
Hned po instalaci mě zaskočilo uživatelské rozhraní v metro stylu. Je to moje první aplikace na Windows 7, která používá čistý metro styl. Tak to byl trochu nezvyk, ale chápu že tímto směrem nyní jdou celé Windows a vývojáři se s tím srovnají rychleji než běžní uživatelé. Také by se hodila lepší vizualizace větví, kterou zvládá například příkaz gitk. Ale bez toho se dá obejít. Dál už jenom maličkost – někdy při commitu program napíše „Commit failed“, ale přitom jsou změny v pořádku commitlé.
Závěr
Když to shrnu, program bych určitě doporučil začátečníkům s Gitem, těm, co mají svoje repozitáře na GitHubu nebo těm, kteří preferují GUI před příkazovou řádkou. Ušetříte si spoustu nervů a místo nastavování Gitu se budete moci soustředit to hlavní – samotné kódování.