如何恢复已合并到master后被移除的分支a的变更?
恢复被移除的a分支变更到master分支
以下是几种可靠的操作方式,根据你的实际情况选择:
方法一:重新应用a分支的原始提交
如果a分支的变更原本是通过几个独立提交合并到master的,最稳妥的方式是把这些提交重新cherry-pick到当前master:
- 切换到master分支并拉取最新远程代码:
git checkout master git pull origin master - 查看a分支的所有提交记录,找到需要恢复的提交哈希:
git log --oneline a - 逐个将这些提交应用到master上(替换
<commit-hash>为实际哈希值):git cherry-pick <commit-hash>- 如果a分支是通过合并提交并入master的,需要指定父节点(通常选master作为父节点,用
-m 1):git cherry-pick -m 1 <merge-commit-hash>
- 如果a分支是通过合并提交并入master的,需要指定父节点(通常选master作为父节点,用
- 若遇到冲突,手动解决文件中的冲突标记,然后执行:
git add <冲突文件名> git cherry-pick --continue - 所有提交应用完成后,推送到远程master:
git push origin master
方法二:直接对比分支差异恢复
如果确定a分支的所有变更都需要恢复,也可以直接通过分支差异批量应用:
- 切换到master并拉取最新代码:
git checkout master git pull origin master - 方式A:生成差异补丁并应用
- 生成a分支相对于当前master的差异补丁:
git diff master..a > restore_changes.patch - 应用补丁到master:
git apply restore_changes.patch - 解决冲突后,提交变更:
git add . git commit -m "Restore changes from branch a" git push origin master
- 生成a分支相对于当前master的差异补丁:
- 方式B:直接覆盖master文件(谨慎使用)
- 直接将a分支的所有文件内容覆盖到当前master(会丢弃master中与a分支冲突的本地修改):
git checkout a -- . - 提交并推送:
git add . git commit -m "Restore full changes from branch a" git push origin master
- 直接将a分支的所有文件内容覆盖到当前master(会丢弃master中与a分支冲突的本地修改):
注意:操作前建议先备份当前master分支(比如创建一个临时分支
git checkout -b master-backup),避免误操作导致数据丢失。
内容的提问来源于stack exchange,提问作者darksoulsong
相关产品推荐
相关产品推荐

