Sdílet prostřednictvím


Vysvětlení historie Gitu

Git představuje historii zásadně odlišným způsobem než centralizované systémy správy verzí (CVCS), jako je Team Foundation Version Control, 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 commity v Gitu, mohou mít více rodičů a historie pak vypadá spíše jako graf než přímka. 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 commitů

Začněte jednoduchým příkladem historie: repo se třemi lineárními commity.

Tři potvrzení na řádku

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 commit C je větev. Větve jsou ukazatele na konkrétní komity, což je důvod, proč je větvení v Gitu tak lehké a snadné.

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ě. Proveďte to tak, že stáhnete 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é Git ve výchozím nastavení pojmenuje jako origin. Tento příkaz přinesl jeden nový commit a hlavní větev v místním úložišti se přesune na tento commit.

Na řádek se přidá commit D jako čtvrtý.

Porozumět historii 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 přepnutí na 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řit větev
  • git checkout cool-new-feature a začít pracovat na větvi

Přidána nová větev cool-new-feature.

Dvě větve teď ukazují na stejný commit. Vezměme v úvahu, že na větvi cool-new-feature došlo k několika změnám ve dvou nových commitech, E a F.

Přidání commitů do větve

Potvrzení jsou dostupná z cool-new-feature větve, 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

Sloučení větve

Struktura grafu historie se zobrazí, když dojde ke sloučení. Git vytvoří nový commit, když se větev sloučí 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. Tři lidé sloučují commity ze svých vlastních větví do main větve přibližně ve stejnou dobu.

Protokol konzoly git graphu

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.