Share via


瞭解 Git 歷程記錄

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Git 會將歷程記錄儲存為整個存放庫的快照集圖表,稱為認可。 每個認可也包含一或多個先前認可的指標。 認可可以有多個父代,建立看起來像圖形而非直線的歷程記錄。 這段歷史差異非常重要,而且是用戶發現 Git 混淆的主要原因。

注意

如果您在您知道的 Git 歷程記錄中找不到變更,請深入瞭解 Git 歷程記錄簡化如何在 Git 中簡化我的變更:查看 Git 的歷程記錄簡化

認可歷程記錄基本概念

從簡單的歷程記錄範例開始:具有3個線性認可的存放庫。

一行中的三個認可

認可 A 是認可 B 的父代,而認可 B 是認可 C 的父代。此歷程記錄看起來與 CVCS 非常類似。 指向認可 C 的箭號是分支。 其名稱 main 為 ,因為這是 Git 存放庫中 mainline 分支的預設名稱。 分支是特定認可的指標,這就是為什麼分支在 Git 中是如此羽量且容易。

Git 與 CVCS 相比的主要差異在於我有自己的存放庫完整複本。 我需要從遠端存放庫取得最新的認可,讓本機存放庫與遠端存放庫保持同步。 若要這樣做,我會使用下列命令提取 main 分支:

git pull origin main

這會將所有認可從 main 遠端存放庫的分支(預設呼叫 originmain 複製到本機存放庫的分支。 提取作業複製了一個新的認可,而 main 本機存放庫中的分支現在指向這個新的認可。

第四個認可 D 會新增至行

瞭解分支歷程記錄

現在我想變更我的程序代碼。 通常有多個作用中分支,您可以在其中平行處理不同的功能。 這與 CVCS 形成鮮明對比,其中新分支繁重且很少建立。 第一個步驟是使用下列命令簽出至新的分支:

git checkout -b cool-new-feature

這是結合兩個命令的快捷方式: git branch cool-new-feature 建立分支, git checkout cool-new-feature 後面接著開始在分支中工作。

已新增分支非經常性存取功能

兩個分支現在指向相同的認可。 我會在兩個新的認可 E 和 F 中,在 cool-new-feature 分支上進行一些變更。

已新增兩個新的認可

自從我在該分支中建立認可之後,我的認可可透過 cool-new-feature 分支來連線。 我已完成功能,並想要將其合併至 main。 若要這樣做,我將使用下列命令:

git merge cool-feature main

合併之後

當合併時,記錄的圖表結構就會變成可見。 當我將分支合併到另一個分支時,Git 會建立新的認可。 這是合併認可。 由於我沒有衝突,因此此合併認可中並未包含任何變更。 如果我發生衝突,合併認可會包含解決這些衝突所需的變更。

真實世界的歷史

以下是 Git 歷程記錄的範例,更類似於小組作用中開發中的程式碼。 有三個人會同時將自己的分支認可合併到主要分支。

git graph 的控制台記錄

既然您已瞭解分支和合併如何建立圖形的形狀,這不應該太可怕!