1. díl - Git - Historie a principy

Software Git Git - Historie a principy

Historie a principy

Git je dle wiki „distribuovaný systém správy verzí. Co to ale ve skutečnosti znamená? A proč bych jej měl používat? Na to se podíváme v následujícím článku.

Git logo

Trocha povinné historie

První oficiální verze Gitu byla uvolněna 7. dubna 2005. Otcem Gitu je Linus Torvalds, jeden z hlavních vývojářů Linux kernelu. Původně byl Linux kernel vyvíjen za pomoci Bitkeeperu, ale společnost tento produkt zpoplatnila a tak byli vývojáři Linuxu přinuceni vyvinout vlastní nástroj pro správu verzí. Tohoto úkolu se ujal již zmiňovaný Linus Torvalds. Git je přizpůsobený k tomu, aby dokázal pracovat s velkými projekty (jádro Linuxu je toho důkazem) a dokázal zajistit každému vývojáři maximální pohodlí (to znamená rychlé naučení, nevyžaduje připojení k internetu a podporuje nelineární vývoj).

Systém správy verzí

Co nám tedy vlastně Git přináší? Můžeme jednoduše zákazníkům publikovat náš projekt ve verzích, které nám vyhovují. Zákazníkům to bude připadat pouze jako další verze, i když mezi předchozí a aktuální verzí může být například 10 vývojářských verzí. Dává nám jednoduchý přístup k celé historii projektu. Můžeme se libovolně v historii přesouvat a máme přehled o tom, kdo vytvořil jakou část kódu a co se konkrétně změnilo. Díky větvení (viz další kapitoly) můžeme vytvářet novou funkcionalitu, aniž by to mělo jakýkoliv dopad na zbytek projektu. Jestliže selže, není nic jednoduššího, než tento pokus nezahrnout do projektu, vrátit se na původní místo v historii a začít znovu. Projekt zůstane po celou dobu ve stejném stavu.

Principy Gitu

První důležitou věcí v Gitu je způsob ukládání souborů. Git každý soubor uloží pouze jednou a poté ukládá jen tzv. snapshoty. V každém commitu (pomyslný uzel systému) jsou uloženy všechny soubory jako snapshot. To dává Gitu výhody oproti ostatním verzovacím systémům (Perforce, CVS, Bazaar), které ukládají soubor vždy při jeho změně. Kromě toho Git ukládá všechny soubory binárně. Je tedy možné ukládat i netextové soubory (například obrázky) a Git poskytne stejné pohodlí. Velikost repositáře přitom zůstane prakticky stejná. Poté už závisí více na formátu souboru, zda se po malé změně změní celý binární soubor, nebo pouze část.

Další důležitou věcí je, že každá operace, kterou uděláte, je nejdříve lokální. Než řeknete, že je to nevýhoda, protože se mezi vás a server přidá další článek řetězce, pojďme se nad tím nejdříve zamyslet. V první řadě nám to dává možnost snadné opravy. Jakmile již něco publikujete, není možnost to změnit, protože někdo jiný již váš kód může mít stáhnutý a Git nenechává žádná zadní vrátka k ostatním uživatelům. Díky lokálnímu repositáři máte možnost po sobě kód dodatečně opravit, a teprve poté jej umístit na internet. Další výhoda, která z tohoto přístupu vyplývá, je, že není prakticky nic, co by vám Git nedovolil bez připojení k internetu. Můžete pracovat na svém lokálním repositáři a teprve po připojení můžete vše vzít a umístit na internet.

Do Gitu je také velmi silně zakomponována integrita. Pro každý soubor nebo složku Git spočítá kontrolní součet, který se nazývá SHA-1 hash (40-ti místné hexadecimální číslo). Nemůžete tedy změnit nebo poškodit soubor, aniž by o tom Git nevěděl. Git interně neukládá soubory podle jména, ale právě podle tohoto kontrolního součtu.

Git pouze přidává data. I když vymažete řádek, Git pouze dostane informaci o přidání „ničeho“ do souboru. Po provedení commitu už je velmi složité soubor poškodit do takového stavu, aby nešel obnovit. Nenastanou-li nějaké extrémní situace (poškození harddisku nebo kdyby se v repositáři přehraboval někdo neoprávněný) data jsou naprosto v bezpečí. Když navíc repositář nahrajete na nějaký server, ošetříte i tyto situace.

Čtyři pracovní prostory

Git pracuje ve třech vrstvách. Ukázáno to je na následujícím obrázku.

Graf stavů souboru

Working directory je vaše složka, ve které pracujete. Nikde ovšem není přikázáno, že všechny soubory ve vaší složce musí být zároveň v repositáři. Git vás nenutí k určitému postupu práce. Jak budete pracovat je čistě na vás, Git se přizpůsobí. Pro soubory, které chcete aby Git zpracoval, slouží staging area. Staging area je taková virtuální složka pro Git. Vše, co se do ní dostane, bude v následujícím commitu přeneseno do lokálního repositáře. Lokální repositář je vaše historie projektu, na kterém pracujete. V něm jsou uloženy všechny snapshoty a všechny předchozí verze systému. A jak již bylo řečeno, vše co se dostane do repositáře už prakticky není možné smazat. Posledním článkem je vzdálený repositář (remote repo). Na vzdálený repositář nahráváte lokální repositář. Tady platí podmínky, bez kterých se akce neprovede, ale o tom až v některém z dalších dílů.

Cesta jde samozřejmě absolvovat i opačně - stáhnout soubory ze vzdáleného repositáře a následně tento stažený repositář přidat do lokálního. Jde obnovit pracovní složku do stavu, v jakém byl aktuální stav vzdáleného repositáře, ale jde také obnovit složku do stavu při jednom z commitů (tedy podívat se jak složka vypadá v tom určitém commitu).

Kdo Git používá

Git se stal jedním z nejvíce používaných verzovacích systémů dnešní doby. Zde uvádím pár projektů, které používají Git jako verzovací systém.

Jak jde vidět, Git používají i velké projekty, na kterých pracují stovky lidí. To ovšem neznamená, že Git není vhodný pro menší projekty. Poslouží stejně tak dobře, jen místo pětistovky commitů budete mít třeba jen 10. Díky své filozofii lze uplatnit naprosto všude.

Vzdálené repositáře

Vzdálené repositáře slouží k uložení vašeho lokálního repositáře pro ostatní uživatele. Ti si poté mohou váš kód stáhnout a sami na něm pracovat. Důležité je si uvědomit, že jakmile něco umístíte na vzdálený repositář, již není možnost to změnit, protože nevíte kdo si váš repositář již stáhl. U člověka, který si již naklonoval váš repositář, nemáte možnost jeho repositář změnit.

Mezi nejznámější servery patří:

Rozdíly mezi servery jsou služby, které poskytují. Závisí to na tom, zda poskytují repositáře jen veřejné (každý je může najít a stáhnout) nebo privátní (stáhnout je můžou pouze ověření uživatelé) a popřípadě kolik členů může přistupovat k privátnímu repositáři. Co se u free verzí týče, GitHub povoluje pouze veřejné repositáře, GitLab a Bitbucket mají ve verzi zdarma 5 uživatelů pro soukromý repositář. V příštím dílu se zaměříme na instalaci a vytvoření repositáře.


 

  Aktivity (1)

Článek pro vás napsal patrik.valkovic
Avatar
Věnuji se programování v C++ a C#. Kromě toho také programuji v PHP (Nette) a JavaScriptu.

Jak se ti líbí článek?
Celkem (13 hlasů) :
4.846164.846164.846164.846164.84616


 


Miniatura
Všechny články v sekci
Git

 

 

Komentáře

Avatar
Michal Žůrek (misaz):

Git poslouží dobře i pro jednotlivce a to na zálohy kódu.

Odpovědět 29.8.2014 21:37
Nesnáším {}, proto se jim vyhýbám.
Avatar
Posix
Člen
Avatar
Odpovědět  ±0 29.8.2014 23:04
Proč to dělat jednoduše, když to jde složitě.
Avatar
Odpovědět 29.8.2014 23:10
Nesnáším {}, proto se jim vyhýbám.
Avatar
Posix
Člen
Avatar
Odpovídá na Michal Žůrek (misaz)
Posix:

To je už lepší :D Protože já to pro vlastní projekty používám a ne jen pro zálohy :)

Odpovědět 29.8.2014 23:56
Proč to dělat jednoduše, když to jde složitě.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.