
- Git 入門
- Git - 首頁
- Git - 版本控制
- Git - 基本概念
- Git - 命令列
- Git - 安裝
- Git - 首次設定
- Git - 基本命令
- Git - 獲取幫助
- Git - 工具
- Git - 速查表
- Git - 術語
- Git 分支
- Git - 簡述分支
- Git - 建立新分支
- Git - 切換分支
- Git - 分支與合併
- Git - 合併衝突
- Git - 管理分支
- Git - 分支工作流程
- Git - 遠端分支
- Git - 跟蹤分支
- Git - 變基
- Git - 變基與合併
- Git - 合併提交
- Git 操作
- Git - 克隆操作
- Git - 標籤操作
- Git - 別名操作
- Git - 提交操作
- Git - 暫存操作
- Git - 移動操作
- Git - 重新命名操作
- Git - 推送操作
- Git - 拉取操作
- Git - Fork 操作
- Git - 修補操作
- Git - 差異操作
- Git - 狀態操作
- Git - 日誌操作
- Git - HEAD 操作
- Git - origin master
- Git 撤銷
- Git - 撤銷更改
- Git - Checkout
- Git - 恢復
- Git - 重置
- Git - 恢復操作
- Git - Rm
- Git - 切換操作
- Git - Cherry-pick
- Git - Amend
- Git 在伺服器上
- Git - 本地協議
- Git - 智慧 HTTP 協議
- Git - 啞 HTTP 協議
- Git - SSH 協議
- Git - Git 協議
- Git - 在伺服器上獲取 Git
- Git - 設定伺服器
- Git - 守護程序
- Git - GitWeb
- Git - GitLab
- Git - 第三方託管選項
- 分散式 Git
- Git - 分散式工作流程
- Git - 為專案做貢獻
- Git - 維護專案
- 自定義 Git
- Git - 配置
- Git - 鉤子
- Git - 屬性
- Git - Init
- Git - Commit
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** 來將您的本地提交上傳到遠端分支來解決此問題。