我读到过这样的说法,即执行 git reset commitBeforeDoingMerge --hard 操作不会撤销合并:
1pm-3pm This is my branch and I need to merge master into it
1pm-2pm This was master
1pm-2pm-3pm-4pm Merging ended up doing this, 4pm being the merge commit
1pm-2pm-3pm if This is the result if you do git reset 3pm --hard, because it does not undo the merge, it just goes back to that commit in the branch that was merged.
现在,另一个提议是执行 git revert 4pm -m 1,但是根据手册,这样做存在问题:
通常情况下,您无法撤消合并,因为您不知道应该将合并的哪一侧视为主线。此选项指定了主干的父代编号(从1开始),并允许回退相对于指定父代的更改。
撤消合并提交意味着您永远不想使用合并引入的树更改。结果,以后的合并只会带来那些不是之前撤消合并祖先的提交所引入的树更改。这可能是您想要的,也可能不是。
那么,有没有一种简单清晰的方式可以取消 Git 合并操作呢?
git reset --hard
可以撤销合并操作(始终如一且干净),但我认为您应该澄清如何完成“合并”,因为合并至少应该有两个平行的分支,而不是单个线条。 - ian