正确还原git merge to commited to origin

时间:2013-01-15 11:49:50

标签: git git-revert

我的分支历史如下:

enter image description here

现在我想恢复与分支558的合并。我有它的代码,所以我在做:

git revert -m 1 1784adf300f43fb76391e92f80be01132eddb680

结果是:

[master d51e2b3] Revert "Merge branch '558'" 1 files changed, 15 insertions(+), 29 deletions(-)

此时,当我尝试将恢复恢复到原点时,我发现只有合并的558分支的最后一次提交被还原(以及合并中的多个文件受到影响)。如何从合并的分支恢复所有提交,或者我在这里做了别的错误。

1 个答案:

答案 0 :(得分:2)

您可以使用git revert指定多个提交,提交间隔。在这里,您需要找到分支558中的第一个提交,该提交在两个分支合并之前与master和提交分开。

然后,您可以使用:

git revert -n {first_commit}..{last_commit}

这里,-n选项允许不为每个还原的提交进行提交,它只会对您之后可以提交的更改进行分级。

如果您的历史很简单,就应该有效,就像您的例子一样。

更正和澄清: git不会直接接受合并提交或包含合并的间隔以进行还原。然而,可以仅使用合并提交和选项-m i来恢复整个分支,其中i表示合并的哪一侧要恢复(从1开始,所以这里它将是2)。

整个问题非常微妙,this document对此有用。