撤销GitHub Pull Request后分支无差异,如何重新发起PR?
重新发起被撤销的Pull Request的解决方案
嘿,我明白你现在的困境——撤销PR后两个分支没差异了,没法重新提PR对吧?别担心,咱们一步步来解决:
核心原因
你之前撤销PR的操作,本质上是在release/13.0.0分支上创建了一个反向提交,把合并进来的prod_bug_fix变更全部抵消了。现在两个分支代码一致,自然没法发起PR。咱们要做的就是让prod_bug_fix重新恢复之前的变更,和目标分支产生差异。
方法一:撤销“撤销操作”(推荐,不改写历史)
这种方法更安全,不会修改已有的提交历史,适合多人协作的场景:
- 先切换到你的
prod_bug_fix分支:git checkout prod_bug_fix - 找到之前用来撤销PR的那个提交哈希值。你可以通过日志查看:
找那条开头是git log --oneline release/13.0.0Revert "Merge pull request #XXX from .../prod_bug_fix"的记录,复制它的哈希值(比如abc123)。 - 对这个撤销提交执行反向操作,恢复原来的变更:
git revert abc123 - 把修改推送到远程分支:
git push origin prod_bug_fix
方法二:重置分支到合并前状态(适合单人开发)
如果只有你自己在prod_bug_fix分支上工作,也可以直接重置分支到合并前的状态:
- 切换到
prod_bug_fix分支:git checkout prod_bug_fix - 找到合并到
release/13.0.0之前,prod_bug_fix分支的最后一个提交哈希(比如def456),可以通过git log查看。 - 重置分支到该提交:
git reset --hard def456 - 强制推送到远程(注意:这会覆盖远程分支的历史,多人协作时谨慎使用):
git push --force origin prod_bug_fix
最后一步:重新发起PR
完成上面的操作后,prod_bug_fix和release/13.0.0分支就会重新产生差异。你直接去GitHub上选择prod_bug_fix作为源分支,release/13.0.0作为目标分支,就能正常发起新的Pull Request了。
内容的提问来源于stack exchange,提问作者antnewbee
相关产品推荐
相关产品推荐

