GitHub回滚后如何恢复已合并删除分支并手动重新合并?
解决方法
针对回滚master后恢复已合并分支(含已删除分支)更改的需求,可按以下步骤操作:
1. 定位差异范围
查看完整代码差异
直接对比回滚后的master与before_rollback分支的所有代码改动,无需关心改动来源分支:
git diff master..before_rollback
筛选合并提交(对应已合并PR)
如果只想提取通过PR合并的提交(即使原分支已删除,合并提交仍保留在before_rollback中),可执行:
git log --merges --oneline master..before_rollback
输出结果里的每条记录就是原master上合并过的PR对应的合并提交。
2. 提取单个PR的改动
针对每个需要恢复的合并提交:
- 查看提交详情,确认PR内容:
git show <合并提交哈希值> - 生成该PR的补丁文件(精准提取PR带来的改动):
注:git diff <合并提交哈希值>^1 <合并提交哈希值> > pr-编号.patch^1指向合并提交的第一个父节点(即合并前的master状态),确保只提取PR的独有改动。
3. 应用改动到master
用补丁文件应用
切换回master分支,尝试应用补丁:
git checkout master git apply pr-编号.patch
若出现冲突,直接在本地解决后提交即可。
直接Cherry-pick合并提交
如果合并提交无冲突,可直接将提交复制到master:
git checkout master git cherry-pick <合并提交哈希值>
遇到冲突时,解决后继续执行:
git cherry-pick --continue
关键注意事项
- 先将
before_rollback推送到远程,防止本地分支丢失:git push origin before_rollback - 强制推送master后,通知团队成员重新拉取最新分支:
git fetch origin git reset --hard origin/master
内容的提问来源于stack exchange,提问作者Dimitrios Desyllas
相关产品推荐
相关产品推荐

