这个问题与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)
由于这从未被推动(所以我不会破坏其他人的历史),我想将所有合并分解为一个,获得以下结果:
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
,稍后将出现在合并的提交消息中。此外,当您在两个以上的分支上工作时,请尝试这样做!
有没有更优雅的方式来做到这一点?这似乎是一个值得一个方便命令的操作,所以我认为有一些捷径。
谢谢你的帮助