2

我的分支的历史如下:

在此处输入图像描述

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

git revert -m 1 1784adf300f43fb76391e92f80be01132eddb680

结果是:

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

此时,当我尝试将我的恢复推送回原点时,我看到只有来自合并558分支的最后一次提交被恢复(以及在合并中超过 1 个文件受到影响)。如何从合并的分支中恢复所有提交,或者我在这里做错了什么。

4

1 回答 1

2

您可以指定多个提交,使用git revert. 在这里,您需要从分支 558 中找到与 master 不同的第一个提交以及两个分支合并之前的提交。

然后,您可以使用:

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

在这里,该-n选项允许不对每个恢复的提交进行提交,它只分阶段您可以提交的更改,然后提供适当的描述。

如果你的历史很简单,它应该可以工作,就像你的例子一样。

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

整个问题非常微妙,这篇文档是一本有用的读物​​。

于 2013-01-15T12:05:05.390 回答