GitHub无法识别恢复的拉取请求中的更改

时间:2017-01-07 01:06:53

标签: git github git-merge

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

现在,当我提出新的拉取请求以将bug-fix-1合并到integration时,我希望看到我从bug-fix-2中获得的更改。但不,我无法看到其中任何一个,拉取请求只会显示我在bug-fix-1上所做的更改。

有关如何将更改从bug-fix-2提取到我的分支并将它们合并到integration的任何解决方案?

1 个答案:

答案 0 :(得分:10)

这是Git的一个有趣特性,一旦你意识到发生了什么,就不会那么糟糕了。

Git通过提交哈希跟踪提交,并且历史记录hot-fix-2已经存在。 Git也知道已经应用了reversion,但它并没有真正看到它退出原来的提交。相反,它只是另一个提交,恰好反向应用相同的diff,并且它也拥有它自己的提交哈希。

为了让Git能够看到这些变化,您可以选择以下几种方法之一:

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

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

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

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

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