這可能是因爲快進。如果Git不需要進行合併,它不會。當你合併一個分支但是沒有改變它的父項時會發生這種情況。
A - B - C - D - E [master]
\
F - G - H [feature]
在這種回購沒有出現過更改master
因爲feature
爲分行。 master
是feature
的祖先。 E和F之間的那個明顯的分支不是真的存在,歷史是直的。
如果你git checkout master; git merge feature
它將「快進」,你會得出這個結論。
[master]
A - B - C - D - E - F - G - H [feature]
master
被移動到同犯爲feature
,沒有合併完成。
您可以用git merge --no-ff
關閉此功能。我在合併功能分支時建議這樣做,以避免丟失重要信息來理解代碼。在上面的例子中,沒有證據表明F,G和H是作爲單一特徵完成的。沒有鏈接到討論該功能的故障單。
相反,如果我們有git checkout master; git merge --no-ff feature
這將強制Git合併,即使它不必。
A - B - C - D - E ---------- I [master]
\ /
F - G - H [feature]
我是合併提交,你會得到一個很好的功能泡泡。
我認爲合併是一種快速合併。你所期望的是一個真正的合併。在你的情況下,快速合併是可能的默認行爲。 'master'指向的提交是'my-branch'指向的提交的祖先。您可以添加'--no-ff'(表示*無快進合併*)來強制執行真正的合併。 – ElpieKay