正确还原提交给源的git合并

正确还原提交给源的git合并,git,git-revert,Git,Git Revert,我的分会历史如下: 现在我想恢复与分支558的合并。我有sha代码,所以我在做: git还原-m 1 1784adf300f43fb76391e92f80be01132eddb680 结果是: [master d51e2b3]还原“合并分支'558'” 1个文件更改,15个插入(+),29个删除(-) 此时,当我尝试将恢复推回到原点时,我看到只有来自合并558分支的最后一次提交被恢复(以及在合并中有多个文件受到影响)。如何还原合并分支中的所有提交,或者我在这里做了其他错误。您可以使用git r

我的分会历史如下:

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

git还原-m 1 1784adf300f43fb76391e92f80be01132eddb680

结果是:

[master d51e2b3]还原“合并分支'558'”
1个文件更改,15个插入(+),29个删除(-)


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

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

然后,您可以使用:

git revert -n {first_commit}..{last_commit}
在这里,
-n
选项不允许对每个恢复的提交都进行提交,它只会对更改进行阶段性处理,您可以在之后提交相应的描述

如果您的历史记录很简单,如您的示例中所示,那么它应该会起作用

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


整个问题相当微妙,是一个有用的读物。

但是-m参数呢?现在我得到:
MacBook-$git revert-n first\u commit merge\u commit-m 1 fatal:Mainline已指定,但commit first\u commit不是合并。
@mike\u hornbeck抱歉,我的研究有点马虎。我做了一个更正并添加了一些细节。是的,文档也不是很清楚你应该做什么以及这个-m真正做什么。谢谢重复-?不是重复,因为它涉及合并