GIT je distribuovaný systém správy verzí, který byl vytvořen Linusem Torvaldsem pro vývoj jádra Linuxu. Git ovlivnil projekt BitKeeper, který byl předtím pro vývoj jádra Linuxu využíván a Monotone. V současnosti je GIT velmi rozšířený mezi známými projekty, je využíván pro jádro Linuxu, X.Org nebo Ruby on Rails. Projekt je spravován Juniem Hamanem a šířen pod GPL verzí 2. Jedná se open source software.

Charakteristika GITu

Vývoj Gitu byl inspirován verzovacími systémy BitKeeper a Monotone. Byl původně zamýšlen jako nízkoúrovňový nástroj, který měl ostatním umožnit tvorbu uživatelského rozhraní po vzoru Cogito nebo StGIT. Jádro projektu se ale následně rozrostlo o kompletní systém, který spravuje revize a je plně použitelný bez doplňkových nástrojů.

Git byl sice původně určen pro operační systém Linux, ale je velmi snadno přenositelný i na ostatní UN*Xové systémy, včetně BSD, Solarisu nebo Darwina a je zároveň implementován i pro Windows. Existuje rovněž reimplementace JGit v Javě a podpora ve formě plug-inu pro Eclipse s názvem EGit.

Návrh systému těžil ze syntézy zkušeností Linuse Torvaldse, který měl zkušenosti s údržbou rozsáhlého projektu, kterým jádro Linuxu bezpochyby bylo. Bylo zároveň vyvíjeno distribuovaným tedy kolektivním způsobem a za důkladné znalosti výkonnosti souborového systému a potřeby vytvořit během co nejkratší doby použitelný nástroj. Tyto vlivy tak vedly k následujícím důsledkům:

  • Mocná podpora pro nelineární vývoj. Git obsahuje podporu rychlé tvorby větší a rychlého slučování těchto větší. Obsahuje vestavěné grafické nástroje, které mají za úkol vizualizovat a navigovat v nelineární historii vývoje projektu. Jedním z klíčových předpokladů, na kterých je Git založen je, že změny bývají do jiných větví začleňovány častěji, než jsou vytvářeny. Tím projde rukama různých recenzentů.
  • Distribuovaný vývoj. Stejně jako u systémů Darcs nebo BitKeeper poskytuje Git každému z vývojářů lokální kopii celé historie vývoje. Změny se pak z jednoho takového úložiště kopírují do jiného. Importují se v podobě vývojových větví, které mohou být začleněny do jiné větve stejně tak, jako lokálně vyvíjené větve.
  • Práce s velkými projekty. Git je rychlý a škálovatelný. Výkonnostní testy prokázaly, že Git je přibližně 10x rychlejší, nežli jiné testované systémy a některé operace byly dokonce přibližně 100x rychlejší.
  • Kryptografická autentizace historie. Uložení historie v Gitu je nastaveno tak, že jméno specifické revize, nazývané v Gitu „commit“ závisí na celkové vývojové historii, která k tomuto commitu vede. Jakmile jednou dojde ke zveřejnění, staré verze není možné bez povšimnutí změnit.

Výhody použití GITu

  • Distribuovaný model. Práce vývojáře je oddělená od ostatních a může ji zpřístupnit teprve ve chvíli, kdy se pro to rozhodne. Ne všechno musí být veřejné. Vývoj je zároveň rychlejší, protože téměř všechno je spouštěno lokálně a je možné pracovat i offline.
  • Větvení a spojování větví. Je možné jednoduše pracovat v rámci různých větví, které jsou rychlé, spotřebují málo místa a snadno se spojí s jinými větvemi kdykoliv je potřeba. Proto je možné každou funkcionalitu vyzkoušet v odděleném prostředí a zároveň ji rychle připojit do hlavní větve, když je připravená.
  • Flexibilní workflow. Je možné si zvolit mezi jednoduchým centralizovaným workflow i libovolnou hierarchií.
  • Datová integrita. Díky použití SHA1 stromů je narušení dat z externích důvodů snadno detekovatelné.

Nevýhody použití GITu

  • Náročný na učení. GIT obsahuje mnoho příkazů s mnoha možnostmi, některé z nich nejsou příliš intuitivní a potřebují pochopení vnitřního fungování gitu, příkazů a argumentů, které nejsou vždycky plně konzistentní.
  • Problém s binárními soubory. Pokud projekt obsahuje netextové soubory, které jsou často aktualizované, například obrázky pro webové stránky nebo dokumenty MS Office, může být GIT značně pomalý.