使用git rebase压缩带有恶意合并的历史



我想用git rebase压缩前N个提交:

/usr/share/git/rerere-train.sh --all
git rebase -i --rebase-merges --root
label onto
# Branch some-branch
reset [new root]

p ccc6a0a833 name
s 5a7651a1d2 name
s 255e0fd61a name
s 318a289219 name
s 988f43e817 name
s b11124c7ee name
s 9f026f4c6d name
p ccc6a0a833 name # first non-squashed commit
# ... and so on, nothing is modified below

当我在编辑器中不更改任何内容时,则一切正常。但是,如果我只压缩第二次提交,那么rebase就会停止,我必须手动解决冲突,这很奇怪,因为那个压缩的提交与合并提交历史完全无关

当使用--rebase-merges时,Git不会复制合并,因为它不能。Git重新执行合并。

如果您上次进行了邪恶合并,并且邪恶不是冲突的一部分您没有使用版本特性记录此解决方案,则新的合并将是"良好的";合并。这可能就是问题的根源:训练步骤只会从冲突解决方案中找出任何邪恶。

要获得想要的效果,可能需要完全避免使用git rebase。如果你需要它,并且需要重现一个邪恶的合并,让Git在重新执行合并后停止,这样你就可以重新引入邪恶。

最新更新