git - 通过 pull 请求撤消 merge ?

标签 git github merge pull-request

有人接受了他们不应该接受的 pull 请求。现在我们 merge 了一堆损坏的代码。如何撤消 pull 请求?我正打算在 merge 之前将更改还原到提交,但我注意到它 merge 在一堆提交中。所以现在有这个人在 merge 前几天的所有这些提交。如何撤消此操作?

最佳答案

有一个better answer对于这个问题,虽然我可以一步一步地分解它。

您需要像这样获取和检查最新的上游更改,例如:

git fetch upstream
git checkout upstream/master -b revert/john/foo_and_bar

查看提交日志,您应该会发现类似这样的内容:

commit b76a5f1f5d3b323679e466a1a1d5f93c8828b269
Merge: 9271e6e a507888
Author: Tim Tom <tim@tom.com>
Date:   Mon Apr 29 06:12:38 2013 -0700

    Merge pull request #123 from john/foo_and_bar

    Add foo and bar

commit a507888e9fcc9e08b658c0b25414d1aeb1eef45e
Author: John Doe <john@doe.com>
Date:   Mon Apr 29 12:13:29 2013 +0000

    Add bar

commit 470ee0f407198057d5cb1d6427bb8371eab6157e
Author: John Doe <john@doe.com>
Date:   Mon Apr 29 10:29:10 2013 +0000

    Add foo

现在您想要还原整个 pull 请求并能够稍后取消还原。 为此,您需要获取 merge 提交 的 ID。

在上面的例子中,merge commit 是最上面的那个,上面写着“Merged pull request #123...”

执行此操作以还原两个更改(“添加栏”“添加 foo”),您最终将在一次提交中还原整个 pull 请求您可以稍后取消还原并保持更改历史记录干净:

git revert -m 1 b76a5f1f5d3b323679e466a1a1d5f93c8828b269

关于git - 通过 pull 请求撤消 merge ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6481575/

相关文章:

git - 将 git 存储库克隆到 pycharm

windows - 权限被拒绝(公钥)-Windows 上的 Git Bash

git - 离开 Github,如何更改 Git 仓库的来源?

javascript - 来自 GitHub 页面的 API 请求不起作用 ("mixed block")

github - 使用第三方 GitHub 源提供商保留 AWS Pipeline 的 git 操作

git - 无法在 Vagrant 盒子上从 Git 克隆

用于机器人的 Python : How to generate an app for localization of a Pepper robot

java - 反转 ArrayList 的顺序并合并两个 ArrayList

c++ - 如何使用 merge 合并两个映射/多映射 (C++11 STL)

git - 无法在 Git 的两个独立分支中区分文件