Git

合併簽名/註釋標籤時Git不創建合併送出

  • June 5, 2018

我希望 Git 在我合併簽名或帶註釋的標籤時創建合併送出,但它會快進分支指針。我在隨附的 openSUSE Tumbleweed 上使用 Git 2.17.0 版本。

根據它的手冊頁,git-merge(1)在合併簽名/註釋標籤的情況下應該創建一個合併送出:

–no-ff即使合併解析為快進,也創建合併送出。這是合併未儲存在 refs/tags/ 層次結構中的自然位置的帶註釋(可能還有簽名)標籤時的預設行為。

我發出的命令序列如下所示:

git init foobar
cd foobar
git commit --allow-empty -m 'Empty root commit'
git checkout -b feature
git commit --allow-empty -m 'Feature one commit ahead of master'
git tag -a -m 'Feature ready for non fast-forward merge' ready-to-merge-feature
git checkout master
git merge ready-to-merge-feature

不幸且出乎意料的是,註釋標籤的合併ready-to-merge-feature確實會導致快進合併而不是創建合併送出。我在使用帶符號而不是帶註釋的標籤時觀察到了同樣的意外行為。

我的假設是錯誤的嗎?難道我做錯了什麼?什麼是解決方案?

請注意您引用的聯機幫助頁中我在下面加粗的部分:

這是合併未儲存在 refs/tags/ hierarchy 中的自然位置的帶註釋(可能還有簽名)標籤時的預設行為。

使用您提供的命令序列,標籤位於其自然位置,因此該預設條件將不適用。

這個預設設置是為了幫助從貢獻者儲存庫中獲取標籤,就像FETCH_HEAD在維護者的儲存庫中一樣。此類標籤可能是短暫的,因此如果它們具有內容(註釋和/或簽名),通常最好在合併送出中保留該資訊。但是,已經存在的標籤refs/tags/很可能是項目永久狀態的一部分,因此內容應該保持可用,而無需轉移到送出。

最簡單的解決方案可能是顯式使用該--no-ff選項。

引用自:https://unix.stackexchange.com/questions/446154