我想恢复合并,因为我使用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
这确实会在树中引入我合并中忽略的更改(我的队友的更改)。问题是,现在,我的更改不再在树中了。我已经尝试恢复恢复,但没有成功。
有关如何还原此类合并的任何建议吗?
答案 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