Git 还原合并的还原

Git Revert a Revert for a Merge

我创建了一个功能分支,假设 feature/branch1 在 github 上。 我为它创建了一个拉取请求并将其合并。

当它到达我们的管道时,我们认为存在问题,我们使用 Git 上的恢复按钮将其恢复 这创建了一个 "Revert" PR,我们将其与 master 合并,一切顺利。

几周后,post 其他 PR 合并到 master 中,我们认为我们会 revert-the-revert。这一次,我们进入关闭的 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.

如何完成还原?

我想要的最理想的情况是有一个新的分支,其中包含 revert 的 revert,这样我就可以进行进一步的更改并通过公关流程。

您可以尝试的是:

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

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

This is a merge commit. The PR is already closed and merged.

在那种情况下,如果你已经获取了那个旧的 PR 分支,你可以这样做:

  • 一个git log就可以了(git log origin/old_pr_branch)
  • 来自旧 SHA1 提交的新分支代表您现在想要的内容

    git checkout -b new_pr_branch old_sha1
    
  • 原点推送

    git push -u origin new_pr_branch

然后您可以使用正确的内容从该新分支创建新的 PR。

您看到的错误是github的人为检查,我个人认为不需要。您可以在本地还原还原:

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

这应该会成功,模数与还原后所做的更改冲突。

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