在 Git 中合併分支而不使用快進
本教程將介紹如何在 Git 中合併分支而不使用快進。
我們使用 Git 在協作開發環境中工作。我們為不同的目的建立了許多分支,最終,我們將這些分支合併到主分支中以提供釋出版本。
我們在 Git 中使用快進或不使用快進合併分支。
我們現在將用一個例子來說明這一點。
在 Git 中使用帶有和不帶有 --no-ff
(無快進)選項的 git merge
命令
在協作開發環境中,我們經常會在 Git 中建立多個分支,以服務於不同的目的。然後我們最終將這些分支合併到主分支中以提供釋出版本。
有時,我們的主線分支的 HEAD
提交是我們嘗試合併的分支的提交的祖先。在這種情況下,合併是通過快進完成的。
當從當前分支尖端到目標分支的線性路徑時,可能會發生快進合併。假設我們有分支 feature1
,我們將它合併到我們的主線分支 main
。
現在,假設 main
分支的 HEAD
提交是分支 feature1
的提交的祖先,我們想要合併的那個。
在這種情況下,Git 無需合併分支,而是整合歷史記錄所需要做的就是移動(即)將當前分支尖端快進到目標分支尖端。
因此,在我們的例子中,通過快進,main
分支的當前 HEAD
將向上移動到 feature1
分支尖端。
請看下圖合併前分支 main
和 feature1
的情況。
E---F---G feature1
/
A---B---C---D main
因此,當我們使用 git merge
命令合併兩個分支時,將發生快進。
要進行合併,我們執行命令如下。
$ git merge feature1
執行命令後,main
分支將被快進。
請看下面快進的圖示。
E---F---G feature1, main
/
A---B---C---D
因此,現在 main
分支的當前 HEAD
現在快進了。在這種情況下,不會建立合併提交。
有時,我們可能想要進行實際的合併而不是快進。假設我們要維護分支拓撲。
在這種情況下,我們可以使用帶有選項 --no-ff
的 git merge
命令。
命令選項 --no-ff
會導致在所有情況下建立合併提交,即使合並可以被解決為快進。
因此,在我們的例子中,要在沒有快進的情況下進行合併,我們需要執行以下操作。
$ git merge --no-ff feature1
因此,現在 git merge
命令將分支 feaure1
合併到 main
分支並生成一個合併提交(即使它是一個快進合併)。
這對於記錄倉庫中發生的所有合併很有用。
因此,我們詳細說明了如何在 Git 中合併分支而不使用快進。
欲瞭解更多資訊,請訪問 -