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

Posted

技术标签:

【中文标题】恢复了来自 github 的拉取请求,但两个分支没有区别【英文标题】:Reverted a pull request from github but both branch shows no difference 【发布时间】:2018-08-29 09:14:54 【问题描述】:

我已经按照这篇文章https://help.github.com/articles/reverting-a-pull-request/ 恢复了来自 GitHub 的拉取请求。现在,即使在我比较两个分支时恢复后,它也显示相同。如何再次提出拉取请求?

这就是我所做的

    我从 prod_bug_fix 分支向 release/13.0.0 提出拉取请求,然后转到 github 并合并。 然后我按照上面的文章取消合并拉取请求。现在我认为 release/13.0.0 代码会像我提出拉取请求之前一样回来。 我尝试再次从 prod_bug_fix 向 release/13.0.0 提出拉取请求,但它显示“没有什么可比较的”。 .但我可以看到两个分支之间存在代码差异。

我做错了什么以及如何使 release/13.0.0 恢复到与以前相同的状态?

【问题讨论】:

检查release/13.0.0 的历史记录,看看它是否包含prod_bug_fix 的提交。如果使用git revert 实现恢复拉取请求,看起来提交已经被合并。 嗨,斯蒂芬,是的,r/13.0.0 确实有来自 prod_bug_fix 的提交。现在可以做什么? 也许还原还原?我在这里猜测,所以请仔细测试。 【参考方案1】:

这个答案有点晚了,但我自己遇到了这个问题,最后发现revert的行为很奇怪,因为原始提交被恢复仍然在历史中,所以当你去创建一个新的PR时它仍然认为它在那里,所以你在做差异时看不到任何区别。 This *** 的答案提供了一些关于它的更多细节。

【讨论】:

【参考方案2】:

由于您恢复的合并将始终在历史记录中,因此您需要在提交新 PR 之前将该合并重播到 prod_bug_fix

首先,通过检查并执行git merge **release/13.0.0** 来更新prod_bug_fix(这可能是一个简单的快进合并)。

现在假设您恢复的合并具有哈希abc123;您将使用git cherry-pick -m 1 abc123 重播对该合并的所有更改到prod_bug_fix-m 1 告诉 git “重播对合并的第一个父级 (release/13.0.0) 所做的更改,而不是对第二个父级所做的更改 (prod_bug_fix)。完成此操作后,从 prod_bug_fixrelease/13.0.0 的 PR 将按预期工作。

【讨论】:

以上是关于恢复了来自 github 的拉取请求,但两个分支没有区别的主要内容,如果未能解决你的问题,请参考以下文章

多分支管道作业未显示打开的拉取请求

完全恢复拉取请求

还原合并的拉取请求

如何从 GIT 恢复旧的拉取请求

如何通过 Bitbucket 中的拉取请求变基

Github主分支和主分支的区别?