此問題與git rebase interactive: squash merge commits together非常相關。融合在一起合併提交
假設您正在爲某個項目編寫新功能。您從某個分支開始,如devel
,然後爲您的功能feature/X
構建分支。您不時會在項目中發現一些問題,因此您決定建立第二個分支,名稱爲fixes
,從devel
開始。
由於需要爲feature/X
的推移,你繼續不時做git merge fixes
應用修復,所以你在下列情況下結束:
a --- b --- M --- c --- M --- d ---- e --- M (feature)
/ / / /
/ / / /
devel ----- fix1 ------ fix2 ------------- fix3 (fixes)
,因爲這是從來沒有推(所以我不「T打破別人的歷史),我想所有的合併因式分解連成一片,獲得如下:
a ---------------------- M --- b --- c --- d --- e (feature)
/ /
/ /
devel -- fix1 -- fix2 -- fix3 (fixes)
獲得這一結果的方法是
git co -b feature2 devel
git merge --no-ff fixes
git rebase featur2 feature
這實際上做的工作,但迫使我創建一個進一步的分支feature2
,後來將出現在合併的提交消息。此外,當你在兩個以上的分支上工作時,請嘗試這樣做!
有沒有更好的方法來做到這一點?這似乎是一種值得方便的操作,所以我假設有一些捷徑。
感謝您的幫助
我想''devel^0'語法。這不應該只是「發展」本身嗎? – Dacav
如果你使用'devel',你將會在那個分支上,如果你使用'devel^0',你不會,而是你將會在一個分離的頭上。如果你在'devel'上,那麼你會合併到那個分支,但是如果你在一個分離的HEAD中,你將會合併到沒有分支。 – FelipeC