如何快進和更新 Git 分支
使用 Git 分支時,通常需要保留不同的分支,例如“開發”、“發布”或“暫存”分支。使用 Git,可以輕鬆快速轉發分支以使其與另一個分支保持同步,例如更新發布分支以包含暫存更改。
快進 Git 分支
在 Git 中,分支只是指向特定提交的指針,稱為分支的 HEAD。分支只是一個標籤,當分支用新的提交更新或與另一個分支合併時,該標籤可以更改。
要將兩個不同的分支合併在一起,您可以使用git merge
. 通常,這會創建一個“合併提交”,組合兩個分支的歷史記錄,例如來自功能分支的提交通過拉取請求拉入主分支。
但是,如果兩個分支具有相同的歷史記錄,Git 將執行特殊的快進合併。在上面的示例中,release
分支 HEAD 包含在develop
的歷史記錄中,這意味著不需要合併提交。相反,release
更新為指向develop
.
沒有專門的git fast-forward
命令可以做到這一點;與其他合併一樣,這是一個簡單的合併。合併時,您想要檢查將接收更改的分支。在這種情況下,release
分支是否正在更新,因此我們檢查發布:
git checkout release
然後我們可以將開發分支合併到其中,這將執行快進:
git merge develop
如果您使用 Git GUI 客戶端,此過程可能會更直觀。大多數客戶都可以選擇右鍵單擊過時的分支,並將其更新為您正在處理的分支。
快速轉發遠程分支
需要注意的一件事是快進只會更新您的本地存儲庫。您需要推送到 Github 來更新遠程。如果您使用的是 GUI 客戶端,您可能會看到遠程存儲庫的標籤在您推送之前已過期。
快進分支不會創建提交,但它仍然應該觸發 CI/CD 管道,例如 Github Actions。如果沒有,可以選擇始終創建合併提交:
git merge --no-ff
在某些情況下,這對於維護更明確的分支拓撲也很有用,其中功能分支始終與主分支分開,並在組合時創建合併提交。默認情況下,如果您在合併功能時沒有更改主分支上的任何內容,Git 將快進主分支,而不是創建您可能期望的通常合併提交。該--no-ff
標誌將阻止這種行為。
或者,如果您想嘗試快進,並且在需要合併提交時失敗,則可以使用該--ff-only
標誌。
發佈留言