从已推送的合并分支中恢复特定提交

Posted

技术标签:

【中文标题】从已推送的合并分支中恢复特定提交【英文标题】:Revert a specific commit from a merged branch that has already been pushed 【发布时间】:2017-02-26 04:39:55 【问题描述】:

我正在阅读下面的帖子,我有一个问题希望有人知道答案。

How to revert a merge commit that's already pushed to remote branch?

所以我知道我可以通过在 git revert -m 命令中指定其父分支来完全恢复我的 master 的合并提交。我的问题是我可以从合并的分支而不是整个分支恢复单个提交。

例如,我从 master 分支到 feature_1 分支。我在 feature_1 分支上做了 14 次提交,然后合并回我的 master,然后我推送。

我将如何从 master 中删除合并分支的 commit 7,同时将其他 13 个留在 master 中。希望它是可能的,并提前感谢任何回复或 cmets。

【问题讨论】:

***.com/q/2318777/4286990 的可能副本。 感谢 vatsal,我假设恢复合并中的提交比恢复正常提交更难,因为恢复合并时需要 -m 选项。原来我错了。再次感谢 【参考方案1】:

第 1 步:确定您要恢复的提交的 <sha1>

第 2 步:在 master 分支上执行此操作:

$ git revert <sha1>

这将创建一个新的提交,该提交还原由&lt;sha1&gt; 标识的提交。

【讨论】:

哇,我感觉很愚蠢,我只是假设因为它是合并的一部分,我需要考虑到这一点。很抱歉提出这么愚蠢的问题。

以上是关于从已推送的合并分支中恢复特定提交的主要内容,如果未能解决你的问题,请参考以下文章

将推送的分支恢复为具体的提交

在恢复的合并中查找提交

在没有变基的情况下恢复合并

恢复推送的合并以删除错误推送的本地不需要的更改

如何恢复从一个分支合并的所有提交

在分支合并之前恢复到特定状态