Vysvětlení historie Gitu

Git představuje historii základním způsobem než centralizované systémy pro správu verzí (CVCS), jako jsou Správa verzí Team Foundation, Perforce nebo Subversion. Centralizované systémy ukládají samostatnou historii pro každý soubor v úložišti. Git ukládá historii jako graf snímků celého úložiště. Tyto snímky, označované jako potvrzení v Gitu, můžou mít více nadřazených prvků a vytvořit historii, která místo přímky vypadá jako graf. Tento rozdíl v historii je neuvěřitelně důležitý a je hlavním důvodem, proč uživatelé, kteří znají CVCS, najdou Git matoucí.

Základy historie potvrzení

Začněte jednoduchým příkladem historie: úložiště se třemi lineárními potvrzeními.

Three commits in a line

Commit A je nadřazeným objektem potvrzení B a potvrzení B je nadřazeným objektem potvrzení C. Tato historie vypadá velmi podobně jako CVCS. Šipka ukazující na potvrzení C je větev. Větve jsou ukazatele na konkrétní potvrzení, což je důvod, proč je větvení v Gitu tak jednoduché a jednoduché.

Klíčovým rozdílem v Gitu oproti CVCS je, že vývojář má vlastní úplnou kopii úložiště. Potřebují udržovat své místní úložiště synchronizované se vzdáleným úložištěm získáním nejnovějších potvrzení ze vzdáleného úložiště. Uděláte to tak, že přetáhne hlavní větev pomocí následujícího příkazu:

git pull origin main

Tím se sloučí všechny změny z hlavní větve ve vzdáleném úložišti, které názvy Gitu origin ve výchozím nastavení mají. Tato žádost přinesla jedno nové potvrzení a hlavní větev v místním úložišti se přesune na toto potvrzení.

A fourth commit, D, is added to the line

Principy historie větví

Teď je čas provést změnu kódu. Při paralelní práci na různých funkcích je běžné mít více aktivních větví. Je to ve velkém kontrastu s CVCS, kde jsou nové větve těžké a zřídka vytvářené. Prvním krokem je rezervovat novou větev pomocí následujícího příkazu:

git checkout -b cool-new-feature

Toto je zkratka, která kombinuje dva příkazy:

  • git branch cool-new-feature vytvoření větve
  • git checkout cool-new-feature a začít pracovat ve větvi

Branch cool-new-feature is added

Dvě větve teď ukazují na stejné potvrzení. Předpokládejme, že ve větvi existuje několik změn cool-new-feature ve dvou nových potvrzeních, E a F.

Add commits to a branch

Potvrzení jsou dostupná cool-new-feature pro větev, protože byla potvrzena do této větve. Teď, když je tato funkce hotová, je potřeba ji sloučit do hlavní větve. K tomu použijte následující příkaz:

git merge cool-new-feature main

Merge a branch

Struktura grafu historie se zobrazí, když dojde ke sloučení. Git vytvoří nové potvrzení při sloučení větve do jiné větve. Toto je potvrzení sloučení. Toto potvrzení sloučení neobsahuje žádné změny, protože nedošlo ke konfliktům. Pokud dojde ke konfliktům, potvrzení sloučení bude obsahovat změny potřebné k jejich vyřešení.

Historie v reálném světě

Tady je příklad historie Gitu, která se blíže podobá kódu v aktivním vývoji v týmu. Existují tři lidé, kteří sloučí potvrzení ze svých vlastních větví do main větve přibližně ve stejnou dobu.

Console log of git graph

Další kroky

Přečtěte si další informace o práci s historií Gitu v GitHubu a Azure Repos nebo zjednodušení historie protokolů Gitu.