Git还原合并的还原

时间:2017-04-05 04:22:50

标签: git github merge git-revert

我创建了一个功能分支,让我们在github上说feature/branch1。 我为它创建了一个pull请求并将其合并。 Initial PR Merge Commit

当它到达我们的管道时,我们发现存在问题,我们使用Git上的Revert按钮将其恢复 这创造了一个" Revert"我们与主人合并的公关很好。 Reverted Merge Commit

几周之后,发布其他合并到主人的PR,我们认为我们会恢复 - 恢复。这一次,我们进入了已关闭的Revert PR并尝试再次使用Revert按钮。但是我们收到了此错误消息

Sorry, this pull request couldn't be reverted automatically. 
It may have already been reverted, or the content may have changed since it was merged.

如何完成此还原?

我希望拥有的最理想的情况是拥有一个包含还原版本的新分支,因此我可以进行进一步的更改并返回PR流程。

2 个答案:

答案 0 :(得分:10)

你看到的错误是github的人工检查,我个人觉得不需要。您可以在本地恢复还原:

git fetch origin master
git checkout origin/master (or reset)
git revert <REVERT HASH>
git push origin master

这应该成功,与自恢复以来所做的更改发生模数冲突。

PS:实际上,错误可能是因为冲突。

答案 1 :(得分:1)

你可以尝试的是:

  • 重置(git reset --hard old_commit)PR分支到您要恢复的提交(已还原的提交)
  • 强制推送(git push --force)该分支:将更新PR

这样,PR再次使用旧提交完成。

  

这是合并提交。 PR已经关闭并合并。

在这种情况下,如果您获取旧PR分支,则可以执行以下操作:

  • 一个git loggit log origin/old_pr_branch
  • 来自旧SHA1提交的新分支,代表您现在想要的内容

    git checkout -b new_pr_branch old_sha1
    
  • 推送到原点

    git push -u origin new_pr_branch

然后,您可以使用正确的内容从该新分支制作新的PR。