如何在 GitHub 上恢复拉取请求提交

Posted

技术标签:

【中文标题】如何在 GitHub 上恢复拉取请求提交【英文标题】:How to revert a pull request commit on GitHub 【发布时间】:2019-05-07 03:32:09 【问题描述】:

我正在尝试恢复我在 GitHub 上的最新提交。我查看的所有信息都说在拉取请求中应该有一个恢复按钮,但我没有看到它,也找不到它。

在 GitHub 上有没有办法做到这一点?或者我可以用一些变基命令来完成它吗?

【问题讨论】:

help.github.com/articles/reverting-a-pull-request 这个拉取请求提交是合并提交吗? 拉取请求提交@TimBiegeleisen 【参考方案1】:

假设此拉取请求合并是提交合并(我所期望的),那么您可以从 Git bash 尝试以下操作:

git checkout your_branch
git revert <hash of merge commit> -m 1
git push origin your_branch

此解决方案假定您要恢复到进行拉取请求合并的分支。如果您想关注传入的分支,请改用-m 2

要查找合并提交的 SHA-1 哈希,您可以使用 git log,然后复制第一次提交的哈希,该哈希应该出现在顶部。

请注意,在这里对合并提交进行核对然后执行强制推送通常是一个坏主意。它不好的原因是因为您的分支发布在 GitHub 上。这意味着重写该分支的历史可能会给您以外的任何碰巧共享该分支的人带来问题。

【讨论】:

我应该使用的哈希是我想返回的提交的哈希? 不,使用您希望还原的合并提交的哈希值。 不要按照你的建议去做。【参考方案2】:

android studio 中点击底部的version control 标签。然后点击log

然后您的所有提交都将可见。然后右键单击 relvent commit 并还原它。

然后提交更改并再次推送。

【讨论】:

【参考方案3】:

获取要恢复的提交的哈希值。然后做:

git checkout 54722c31619b0662b379923d0be4b8f8f1f125c9

您看到的长数字是您想要恢复的特定提交的哈希值。 然后强制推入要恢复的分支。

git push origin <your_branch_name> --force

我希望这会有所帮助。快乐编码:)

【讨论】:

我应该将此哈希设置为我要删除的提交,还是要返回的提交? 这通常是一个糟糕的建议,因为您建议通过强制推送重写公共分支的历史记录。 进行您想要返回的提交。 @TimBiegeleisen 你能详细说明一下吗? 你建议我怎么做这个蒂姆?我没有恢复按钮的选项。

以上是关于如何在 GitHub 上恢复拉取请求提交的主要内容,如果未能解决你的问题,请参考以下文章

通过拉取请求撤消合并?

恢复了来自 github 的拉取请求,但两个分支没有区别

显示已在目标分支中的提交的 GitHub 拉取请求

从 GitHub.com 上的受保护分支恢复合并提交

Git在拉取请求分支上恢复樱桃选择而不在主控上恢复

如何从我没有修改的拉取请求中删除文件