Git - 分支跟蹤



在 Git 中,**跟蹤分支** 是一個本地分支,它被設定為跟蹤遠端倉庫中的一個分支的狀態。當本地分支跟蹤遠端分支時,Git 允許您輕鬆同步這兩個分支。

使用簡單的命令,如 **git pull** 和 **git push**,可以從遠端分支獲取更改或將您的更改傳送到遠端分支,而無需每次都顯式指定遠端分支。

當一個分支跟蹤遠端分支時,Git 還會告知您您的本地分支是在遠端分支之前還是之後。這使得更容易管理更改流程並維護最新的程式碼庫。

分支跟蹤的工作原理

當您第一次將本地分支推送到遠端倉庫時,Git 會自動在本地分支和遠端分支之間建立跟蹤關係。遠端分支通常稱為 **origin/branch-name**,其中 **origin** 是遠端倉庫的預設別名。

例如

  • 您在本地機器上建立一個名為 **feature-branch** 的新分支。

  • 您使用 **git push origin feature-branch** 將此分支推送到遠端倉庫。

  • Git 將 **feature-branch** 設定為跟蹤 **origin/feature-branch**。

從這一點開始,Git 知道本地機器上的 **feature-branch** 對應於遠端倉庫上的 **origin/feature-branch**。

設定跟蹤分支

在建立新的本地分支時,或者當我們想要在現有本地分支和遠端分支之間建立關係時,我們可以顯式地設定分支跟蹤。讓我們看看如何在不同的場景中設定跟蹤分支

建立新的跟蹤分支

在建立新分支時,我們可以使用 **-u** 或 **--set-upstream-to** 選項與 **git branch** 或 **git checkout** 命令一起使用,將其設定為跟蹤遠端分支。

git checkout -b feature-branch
git push -u origin feature-branch

在此示例中

  • **-b** 選項建立一個名為 **feature-branch** 的新分支。

  • 使用 **git push** 的 **-u** 選項將 **feature-branch** 設定為跟蹤 **origin/feature-branch**。

  • 從這一點開始,**git pull** 和 **git push** 將自動同步本地和遠端分支之間的更改。

跟蹤現有分支

要設定現有分支與遠端分支之間的跟蹤關係,可以使用以下命令

 git branch --set-upstream-to=origin/feature-branch feature-branch

這會在本地 **feature-branch** 和遠端分支 **origin/feature-branch** 之間建立跟蹤關係。現在,我們可以輕鬆地拉取和推送更改,而無需每次都指定遠端分支。

克隆倉庫並跟蹤分支

當您使用 **git clone** 克隆遠端倉庫時,Git 會自動為預設分支(通常為 **main** 或 **master**)設定跟蹤。例如,克隆倉庫後,本地 **main** 分支將自動跟蹤 **origin/main**。

git clone https://github.com/user/repository.git

檢查分支跟蹤狀態

我們可以使用幾個 Git 命令檢視本地和遠端分支之間當前的跟蹤關係。

檢視所有分支及其跟蹤狀態

要檢視哪些本地分支正在跟蹤遠端分支,以及它們的同步狀態,請在 **git branch** 命令中使用 **-vv** 選項

git branch -vv

此命令列出所有本地分支,並顯示它們正在跟蹤哪個遠端分支。它還指示分支是在遠端分支之前還是之後。例如,我們可能會看到如下輸出

  * main  123abc [origin/main: behind 2] Latest commit message
  feature-branch 456def [origin/feature-branch: ahead 1] Another commit message

此輸出告訴您

  • main 分支落後於 **origin/main** 兩個提交。

  • **feature-branch** 比 **origin/feature-branch** 超前一個提交。

檢視特定分支的跟蹤狀態

要檢查特定分支是否正在跟蹤遠端分支,請使用以下命令

git status

Git 將顯示一條訊息,指示您的分支是否正在跟蹤遠端分支,以及它是在之前、之後還是最新狀態。

與跟蹤分支同步

一旦分支跟蹤遠端分支,Git 就可以輕鬆地使用 **git pull** 和 **git push** 命令同步這兩個分支之間的更改

排查分支跟蹤問題

在使用跟蹤分支時,可能會遇到一些常見問題,但通常很容易解決。

錯誤:沒有跟蹤資訊

如果我們嘗試在未設定為跟蹤遠端分支的分支上執行 **git pull** 或 **git push**,我們可能會看到類似這樣的錯誤

fatal: The current branch feature-branch has no upstream branch.

要解決此問題,我們可以使用 **--set-upstream-to** 選項設定上游分支

git branch --set-upstream-to=origin/feature-branch

或者,我們可以在首次推送時使用 **-u** 選項設定上游分支

git push -u origin feature-branch

之前/之後狀態

如果 Git 告訴我們該分支“之前”或“之後”遠端分支,則表示一個分支中有一些提交,而另一個分支中沒有。我們可以透過執行 **git pull** 來獲取和合並來自遠端分支的更改或 **git push** 來將您的本地提交上傳到遠端分支來解決此問題。

廣告