我目前提交的代码库有点类似这种结构的,C2 和 C3 有两次 merge 到 master 的记录
我想把 C2 和 C3 2 次 merge 合并到一次 merge 里,变成下面这种图的样式
而 C3' 后面可能还有一些提交存在,我还不想改变 C3 后面的图结构,可以忍受 commit-id 改变 但我希望还是保留中间的 merge 关系,大家一般都怎么操作呢?
用 git rebase 操作就行了
#1 楼 @ninehills rebase 后就变成直线了啊
从 HEAD 用 interactive 的方式 rebase 到 C1, 然后
这时候我猜有两种可能,一种是直接就符合了你的要求. 第二种是不符合,那手工修订一下状态
git reset --hard <C1> # 消灭 C3', HEAD 回归到 C1 git merge --no-ff <C3> git rebase --continue
#3 楼 @ruohanc 那后面的提交就有可能受到影响了
应该不会,因为这样合完的结果跟 C3' 是一致的。后面的 commits 没理由失败
C3'
#5 楼 @ruohanc 我的意思是后面的 Commit 会变直……
你试一下吧...我想不到别的招了..