GitHub 无法识别来自还原拉取请求的更改

GitHub does not recognize changes from a reverted pull request

我正在开发名为 bug-fix-1 的 Git 分支,这是我基于 integration 分支创建的。还有另一个分支 bug-fix-2 被合并到 integration 分支,然后我们恢复了更改(所有这些都是在 Github 上完成的)。

现在,当我提出新的拉取请求以将我的 bug-fix-1 合并到 integration 中时,我希望看到我从 bug-fix-2 中拉取的更改。但是不,我看不到它们中的任何一个,拉取请求仅显示我在 bug-fix-1.

上所做的更改

关于如何将 bug-fix-2 的更改引入我的分支并将它们合并到 integration 的任何解决方案?

这是 Git 的一个有趣功能,一旦您意识到正在发生的事情,这并不是一个糟糕的功能。

Git 通过提交哈希跟踪提交,并且从历史记录中 hot-fix-2 已经存在。 Git 也知道已经应用了还原,但它并没有真正将其视为取消原始提交。相反,它只是恰好反向应用相同差异的另一个提交,它也有自己的提交哈希。

为了让 Git 看到更改,您有以下几种选择之一:

  1. 还原还原。听起来很奇怪,但它确实有效。这表示引入一个包含反向差异的新提交。该提交不存在于集成分支中,因此 Git 会将其视为要引入的更改。

  2. 您可以挑选原始提交,但您需要一个特殊选项:

    git cherry-pick --keep-redundant-commits COMMIT_HASH
    

    其中 COMMIT_HASH 引入了原始错误修复。

还有其他方法可以帮助做到这一点,但它们有点复杂并且涉及使用 git rebase。我认为上述技术可能是最直接的。

为我解决这个问题的一个更简单的解决方案是对有问题的提交执行 git commit --amend 并稍微更改描述。这改变了提交哈希,使其成为不同的提交并且 GitHub 开始将其视为新的。