【发布时间】:2013-10-05 22:07:20
【问题描述】:
这个问题和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,稍后将出现在合并的提交消息中。此外,当您在两个以上的分支上工作时,请尝试这样做!
有没有更优雅的方式来做到这一点?这似乎是一个值得一个方便的命令的操作,所以我假设有一些捷径。
感谢您的帮助
【问题讨论】:
标签: git merge feature-branch