如何停用快進合併?在 Git 中它的優缺點是什麼?


可以停用快進合併 -

  • 在合併時
  • 對於整個倉庫
  • 對於所有倉庫。

停用快進合併既有優點也有缺點。

當我們停用快進合併時,git 將執行合併提交以合併來自兩個分支的更改。合併提交的缺點是它變得難以閱讀和理解提交歷史,尤其是在我們有很多分支的情況下。如果您的團隊更喜歡保持分支的線性歷史,那麼應該選擇快進合併。停用快進合併將建立合併提交,這會汙染提交歷史。

停用快進合併(啟用合併提交)的好處是它顯示了提交歷史的真實反映。合併提交將顯示分支何時合併以及如何合併。另一個優點是合併提交有助於輕鬆撤消功能。如果要維護線性歷史,則撤消功能會很複雜。

使用以下命令,我們可以在合併時停用快進合併。

$git merge --no-ff branch_name

我們可以為特定倉庫或所有倉庫停用快進合併。

git config ff no

對於所有倉庫,請使用 --global 標誌

git config --global ff no

示例

讓我們舉一個例子,看看如何使用 --no-ff 選項停用快進合併。在這個例子中,我們建立一個文字檔案 - file1.txt,新增一些內容,暫存,最後提交檔案。讓我們將其稱為提交 c1,如下面的圖所示。我們正在建立一個指向相同提交 c1 的新分支 feature

現在,我們將透過將新值追加到 file.txt 並提交更改來向前移動 feature 分支。讓我們將提交稱為 c2,如圖所示。

現在我們需要使用以下命令將 feature 分支的更改合併到 master 分支

$git merge --no-ff feature

這將建立一個新的合併提交,並且 Master 分支現在將指向合併提交,如圖所示。

示例

$ git init
$ echo abc>file1.txt
$ git add .
$ git commit -m 'fiel1.txt'
$ git branch feature
$ git switch feature
$ echo pqr>>file1.txt
$ git add .
$ git commit -m 'pqr'
$ git switch master
$ git merge --no-ff feature
$ git log --all --oneline --graph

輸出

Merge made by the 'recursive' strategy.
file1.txt | 1 +
1 file changed, 1 insertion(+)

* 62e51ff (HEAD -> master) Merge branch 'feature'
|\
| * c94629d (feature) pqr
|/
* 35d3b1b fiel1.txt

更新於: 2021-04-30

2K+ 閱讀量

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.