Recovery
误合并分支后的恢复
当错误地 merge 了不该合并的分支时,先识别 merge 是否已共享,再选择 reset 或 revert -m 安全撤销。
- 正在处理 Git 误操作的人
- 想提前建立保守恢复习惯的协作者
- 先停手,不继续乱试命令
- 能执行 `git reflog`、`git status`、`git log --graph`
- 还没保住旧位置就继续 reset / rebase
- 在没判断影响面时直接改共享历史
误 merge 最容易出问题的点是:不知道该用 reset 还是 revert -m。
关键判断
- 这个 merge commit 是否已推送共享?
- 是否有人基于它继续开发?
合并时间是否已 push影响文件数
git reset --mergegit revertgit reflog
如果已经 push 到共享分支,不要 reset 而是 revert。
merge 后第一轮检查
git log --oneline --graph --decorate -n 20
git branch -vv
git reflog
恢复方法
merge 未共享
可以考虑回到 merge 前:
git reset --hard HEAD~1
merge 已共享
应优先创建反向提交:
git revert -m 1 <merge-commit>
-m 1 表示保留第一父分支视角。
为什么不建议共享分支直接 reset
因为 reset 会重写公共历史,协作者会遇到分叉和同步冲突,后续治理成本更高。
对 merge commit 使用 revert -m 前,要明确主线是哪一侧父提交。父选择错误会把不该撤销的内容撤掉。
接下来建议继续看什么
undo after pullassess force-push impactgit-merge