回退develop分支后,如何重新创建已合并过的Pull Request?
Git回退后重新创建PR的解决方案
你的cherry-pick方案完全可行
这个思路没问题,cherry-pick确实会生成全新的提交(SHA值改变),能让Git重新识别分支差异,具体操作步骤如下:
- 从回退后的develop分支(提交
56e05fce)新建一个临时分支,用来中转提交:git checkout 56e05fce git checkout -b temp-rebase-prs - 逐个cherry-pick每个原feature分支的提交:
如果遇到冲突,解决冲突后执行git cherry-pick <原feature分支的提交SHA>git cherry-pick --continue即可。 - 每完成一个cherry-pick,基于当前临时分支的状态新建对应feature分支的"复刻版":
git checkout -b feature/new-xxx git push origin feature/new-xxx - 用这些新分支向develop发起PR,此时Git会正常检测到文件差异,不会再出现之前的问题。
另一种更高效的方案:重置feature分支并变基
如果不想逐个cherry-pick,也可以直接重置原feature分支到合并前的状态,再变基到当前develop:
- 找到每个feature分支在合并到develop之前的最后一个提交SHA(可以通过
git reflog或Git平台的提交历史找到) - 重置该feature分支到这个提交:
git checkout feature/xxx git reset --hard <合并前的提交SHA> - 将分支变基到当前的develop分支:
解决可能出现的冲突后,执行git rebase developgit rebase --continue完成变基。 - 强制推送到远程分支(注意:如果有其他同事在这个分支工作,必须提前沟通):
git push -f origin feature/xxx - 之后重新发起PR,分支与develop的差异就能正常显示了。
关键注意事项
- 操作前务必给所有涉及的分支创建备份,比如
git branch feature/xxx-backup,防止操作失误丢失提交 - 强制推送分支前,确认没有其他协作者在该分支上进行开发,避免覆盖他人的修改
- 原PR的评论、审批记录无法自动迁移到新PR,需要手动同步(如果有需要的话)
内容的提问来源于stack exchange,提问作者123onetwothree
相关产品推荐
相关产品推荐

