恢复git合并 - 我们的

时间:2010-07-12 10:14:06

标签: git merge revert

我想恢复合并,因为我使用git merge -s recursive -X ours而不是git merge -s ours

我已阅读this blog post关于还原合并的内容,但它似乎对我的情况不起作用。

所以,我有master分支,然后是topic分支。在某些时候,我将master合并到topic,然后将topic合并到master。当我将master合并到branch时,我在文件上发生了冲突,但我认为它没有做任何重要的事情,所以我想我会说git跳过它,然后使用我的版本。那是我使用git merge -s ours而不是git merge -s recursive -X ours的时候,我今天发现它忽略了我的一个队友所做的一切。

现在,我正在尝试恢复此合并:

git checkout master
git revert -m 2 c475f0ac

这确实会在树中引入我合并中忽略的更改(我的队友的更改)。问题是,现在,我的更改不再在树中了。我已经尝试恢复恢复,但没有成功。

有关如何还原此类合并的任何建议吗?

1 个答案:

答案 0 :(得分:1)

revert子命令进行新的提交以撤消指定的提交,这对于恢复合并提交通常很复杂

您可以将树设置为任何特定提交的状态,搜索合并提交(是c475f0ac?)然后将树设置为该提交的状态父(请注意命令末尾的点,这很重要):

git checkout c475f0ac^ .

如果要将状态设置为提交的不同父级,则应使用

git checkout c475f0ac^2 .

等等。 你会发现有用的gitk命令可以在继续之前分析提交(选择你想要的提交):

gitk c475f0ac

将状态设置为上一次提交后,您可以提交

git commit --message 'restored tree to state previous to merge commit c475f0ac'

然后按

git push