2
我知道標題有點毛茸茸 - 因此引用了!「櫻桃選擇合併」的最簡單方法
假設我有一個分支b_feature
,它從主開發分支b_master
分支併合並。還有另一個分支b_release
,我希望將這些更改添加到(作爲一個發佈版本)。 b_master
和b_release
已經發生分歧,不會再合併。
---------Bm----k1-----Mm-----> b_master (k1 isn't to be included in b_release)
\ \ /
\ c1--c2--c3 (b_feature)
\
\----Br---------Mr-----> b_release
\ /
cA-cB-cC
我知道我能摘櫻桃整個事情與git cherry-pick -m Mm
一個差異,給
----Br--Squashed----> b_release
其中Squashed
是提交包含該功能的全部變化,隨着消息合併Mm
。
但是,如果我想保留更改歷史記錄和單個提交消息呢?我可以隨時手動摘櫻桃與此近似的工作流程:
git checkout b_release
git checkout -b b_release_feature
git cherry-pick c1^..c3
git checkout b_release
git merge b_release_feature
git commit --amend --reedit-message=Mm
git branch -d b_release_feature
但是,這似乎是一個笨拙的解決方法,以更優雅的解決方案,我不知道!
rebase --onto b_release Bm Mm
也似乎並沒有產生我期待的結果。
還有更好的方法嗎?