如何基于当前master分支恢复已被回退的PR代码变更?
恢复被回退的Git变更方案
以下几种方法可以高效恢复被回退的变更,无需逐个复制代码:
方法一:Cherry-Pick原提交
- 先定位你当初合并到master的目标提交ID:
- 执行
git log --oneline查看历史记录,找到对应开发分支的所有独立提交,或是合并PR生成的合并提交(日志通常会显示类似「Merge pull request #XXX from xxx/feature-branch」的内容)。
- 执行
- 切换到新分支后执行cherry-pick:
- 若是多个独立提交:
git cherry-pick <提交ID1> <提交ID2> ... - 若是合并提交,需指定父分支(参数
-m 1代表以master为父分支):git cherry-pick -m 1 <合并提交ID>
- 若是多个独立提交:
- 若遇到冲突,手动解决后执行
git cherry-pick --continue即可继续操作。
方法二:Revert之前的回退操作
- 找到用来回退变更的那个提交ID(即第二个PR生成的revert提交)。
- 在新分支上执行
git revert <回退提交ID>,这个命令会生成新提交,将之前被回退的代码重新恢复,且不会破坏现有master的历史记录。
方法三:导出补丁并应用
如果找不到具体提交ID,可通过补丁方式导出变更:
- 找到包含目标变更的旧master版本(记为提交ID A),以及当前master的最新版本(记为提交ID B)。
- 导出补丁文件:
git diff B A > changes.patch - 切换到新分支,应用补丁:
git apply changes.patch - 解决可能出现的冲突后,提交代码即可。
内容的提问来源于stack exchange,提问作者HuLu ViCa
相关产品推荐
相关产品推荐

