2

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

我已经阅读了这篇关于恢复合并的博客文章,但它似乎不适用于我的情况。

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

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

git checkout master
git revert -m 2 c475f0ac

这确实将我的合并中忽略的更改(我的队友的更改)引入了树。问题是现在,我的更改不再出现在树中。我试过还原还原,但没有成功。

关于如何恢复这种合并的任何建议?

4

1 回答 1

1

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

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

git checkout c475f0ac^ .

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

git checkout c475f0ac^2 .

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

gitk c475f0ac

设置状态为上一次commit后,就可以commit了

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

然后推

git push
于 2011-04-11T18:15:00.080 回答