Git
合併簽名/註釋標籤時Git不創建合併送出
我希望 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
選項。