【发布时间】:2012-07-19 06:15:53
【问题描述】:
首先,我必须道歉 - 关于 SO 有很多“如何撤消合并”问题,但我对 git 太陌生了,我真的不明白如何使解决方案适应我的情况(尽管我确信他们可以)。
我有两个分支,versionA 和 versionB。我在versionA 中进行了一些更改并将它们合并到versionB,这很好,因为versionA 中的更改是向前兼容的。然后,我想我一定是不小心将versionB 合并回versionA,这不好,因为versionB 不向后兼容versionA。
如何撤消此操作?
为了让事情更清楚,这就是我所做的:
versionA C--C--C--C'--M2
\ /
\ /
versionB C--M--C--C*
M: merged versionA into versionB. this is fine.
M2: accidentally merged versionB back into versionA
这就是我想要的:
versionA C--C--C--C'
\
\
versionB C--M--C--C*
如果我在 Mercurial 上,我会做 hg rollback 一切都会好起来的,或者我会 hg update C' 并在那里为 versionA 分支做出未来的提交,尽管这会使 M2 作为一个死悬垂的头(因此我更喜欢rollback 方法)。
从versionA 分支清除最后一次提交M2 的git 方法是什么? (所有更改都已推送)。
【问题讨论】: