Git中意外分支后的代码丢失与MR异常问题求助
Git分支与MR异常问题解决步骤
先做备份(重中之重)
- 给Branch A创建备份分支,防止操作失误丢失代码:
git checkout BranchA git branch BranchA_backup - 同样给Branch B做备份:
git checkout BranchB git branch BranchB_backup
理清提交历史
- 查看Branch B比Branch A多的提交:
git log --oneline BranchA..BranchB - 查看Branch A比Branch B多的提交:
git log --oneline BranchB..BranchA - 用图形化日志更直观地看分支关系:
git log --graph --oneline --all
修复Branch A的代码丢失问题
切换到Branch A,确保工作区无未提交修改:
git checkout BranchA git status(如果有未提交修改,先执行
git stash暂存,或者git commit提交)重新执行rebase并处理冲突:
git rebase master遇到冲突时,手动修改冲突文件,然后执行:
git add . git rebase --continue重复直到rebase完成。
若rebase后仍丢失提交,用cherry-pick重建分支:
- 基于最新master创建新分支:
git checkout master git pull git checkout -b BranchA_new - 把之前查到的Branch A独有的提交哈希逐个cherry-pick过来:
git cherry-pick <提交哈希1> <提交哈希2>
处理冲突后执行
git cherry-pick --continue,直到所有提交都迁移完成。- 基于最新master创建新分支:
修复远程MR显示异常问题
- 若要保留Branch A作为最终提交分支,推送修复后的分支到远程(注意
--force仅在确认不会覆盖他人提交时使用):git push origin BranchA --force - 到MR页面,将原MR的关联分支切换为修复后的Branch A,或者关闭原MR,重新创建Branch A的新MR。
后续预防措施
- 不要让多个本地分支对应同一个远程MR,每个功能分支应该对应独立的远程分支和MR,避免提交历史混乱。
- 每次执行rebase、merge等操作前,先确认当前分支的提交历史,必要时先备份分支。
内容的提问来源于stack exchange,提问作者kita
相关产品推荐
相关产品推荐

