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ý.