【问题标题】:Git Revert a Revert for a MergeGit Revert a Revert 以进行合并
【发布时间】:2017-08-30 12:17:40
【问题描述】:

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

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

几周后,发布其他合并到 master 中的 PR,我们认为我们会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 过程。 p>

【问题讨论】:

  • 您使用什么工具进行还原?我严重怀疑 git 本身会打印它
  • 这个revert按钮是github上的一个功能。

标签: git github merge git-revert


【解决方案1】:

你可以尝试的是:

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

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

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

在这种情况下,如果你已经获取了那个旧的 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。

【讨论】:

  • 我需要更多信息。这是一个合并提交。 PR 已经关闭并合并。我读到无法重新打开已关闭的 PR。我读错你的答案了吗?
  • @Serendipity 我不知道 PR 已关闭。您仍然可以访问 PR 分支吗?想法是基于旧提交(已还原的提交,但您现在想要)创建一个新分支,并从该新分支创建一个新 PR。
  • 我可以访问 PR 分支,是的。但是,我阅读您的答案的方式似乎更新了现有的 PR 分支
  • 好的,我最终使用了一个 git gui,当合并的还原完成时它显示了一些冲突。我认为这就是无法正确完成还原的原因。我修复了冲突并分支到一个新的分支。我认为您展示的方法的唯一问题是很难恢复合并提交,除非您知道要恢复到哪个父级。我会试试你提到的这个方法并检查一下。
  • “除非您知道要恢复到哪个父级,否则很难恢复合并提交”这就是 git 日志将向您显示的内容:父级提交供您选择。
【解决方案2】:

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

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

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

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

【讨论】:

  • 这个错误确实是因为冲突。虽然github并没有真正提供太多信息。
  • 如果您遇到错误“提交哈希是一个合并,但没有给出 -m 选项”,那么您将在原始提交上执行恢复,而不是在您的恢复 PR 合并时创建的提交。跨度>
猜你喜欢
  • 2011-07-21
  • 2015-08-23
  • 2018-11-22
  • 1970-01-01
  • 1970-01-01
  • 2016-12-31
  • 2015-11-01
  • 2021-11-05
  • 2019-05-03
相关资源
最近更新 更多