Git 恢复到合并分支之前的状态

Git 恢复到合并分支之前的状态,git,Git,我有我的主分支,然后我正在开发另一个功能,将它合并到我的本地主分支,然后将它推送到Github 现在,我需要删除由于这次合并而发生的所有更改,直到另行通知,但可以在稍后将它们重新合并 如何实现这一点?您必须找出哪些预合并提交代表“主线”,即您要保留的部分。您可以使用git日志执行此操作: commit b556759a560650506da58e59f6a7c6a2c4bcb8f4 Merge: e3dac0d 090ad85 。。。以及对两个父项的外观检查。(看起来,git merge fo

我有我的主分支,然后我正在开发另一个功能,将它合并到我的本地主分支,然后将它推送到Github

现在,我需要删除由于这次合并而发生的所有更改,直到另行通知,但可以在稍后将它们重新合并


如何实现这一点?

您必须找出哪些预合并提交代表“主线”,即您要保留的部分。您可以使用git日志执行此操作:

commit b556759a560650506da58e59f6a7c6a2c4bcb8f4
Merge: e3dac0d 090ad85
。。。以及对两个父项的外观检查。(看起来,
git merge foo
总是将
头放在父母列表的第一位,而
foo的头放在第二位,但我不确定这是否可以保证。)

假设
e3dac0d
是主线,那么我们想要还原
090ad85
的合并,那么这就是

git revert -m e3dac0d b556759

有关更多详细信息,请参阅Torvalds和Hamano提供的。

还要确保
090ad85
仍在分支中(或在提交时创建一个新分支),以便以后可以检索/重新合并该分支。@Arjan:这是一个
还原
,而不是一个
重置
,因此可以在需要时重新还原<代码>090ad85将保留在历史记录中。