Recovery
Git 恢复与排障频道
把最常见的 Git 误操作和恢复路径拆成多个专题,包括 reset、rebase、误删分支、detached HEAD 与 reflog 自救。
Recovery
先看这几篇
先建立 reflog-first 的恢复思路,再看 reset、rebase、删分支与 detached HEAD 这些高频事故场景。
reflog 恢复手册
当 reset、rebase、pull 或误删分支后找不到原来位置时,优先用 reflog 重新定位并建立恢复路径。
02reset 过头后怎么恢复
当 reset 把分支、暂存区或工作区挪得太远时,先分清是哪一层变了,再用 reflog、ORIG_HEAD 或救援分支恢复。
03rebase 出错后怎么恢复
当 rebase 过程中冲突、提交丢失或结果不对时,先停止继续改写历史,再用 reflog、abort 和救援分支恢复可控状态。
04detached HEAD 状态下如何自救
detached HEAD 本身不是错误,真正的风险是你在这个状态下产生了值得保留的提交却没有立刻接住它们。
Recovery
代表专题
如果你只先读三篇,优先理解 reflog、自救式 reset 恢复,以及 pull 后如何回到可控状态。
Recovery
排障专题目录
把“我现在把仓库搞乱了怎么办”拆成多个可直接处理的专题,而不是只讲抽象原则。
reflog 恢复手册
当 reset、rebase、pull 或误删分支后找不到原来位置时,优先用 reflog 重新定位并建立恢复路径。
reset 过头后怎么恢复
当 reset 把分支、暂存区或工作区挪得太远时,先分清是哪一层变了,再用 reflog、ORIG_HEAD 或救援分支恢复。
rebase 出错后怎么恢复
当 rebase 过程中冲突、提交丢失或结果不对时,先停止继续改写历史,再用 reflog、abort 和救援分支恢复可控状态。
误删分支后怎么找回
分支删掉后,通常先确认是名字没了还是提交也不可达了,再用 reflog、merge-base 和旧引用位置把分支接回来。
detached HEAD 状态下如何自救
detached HEAD 本身不是错误,真正的风险是你在这个状态下产生了值得保留的提交却没有立刻接住它们。
pull 之后后悔了怎么撤回
当 pull 之后发现分支状态不对、自动 merge 不符合预期,或者 rebase 结果混乱时,先判断 pull 实际做了什么,再选择 ORIG_HEAD、reflog 或救援分支。
force push 之后怎么判断影响范围
force push 之后,真正关键的不是立刻再推一次,而是先判断哪些引用被覆盖、哪些同事可能已基于旧历史继续工作,以及恢复窗口还有多大。
找回“消失的 stash”
当 stash 列表里看不到之前保存的内容时,先判断是 pop 后丢失、误删还是引用漂移,再用 reflog 与 dangling commit 进行恢复。
cherry-pick 挑错提交后的恢复
当 cherry-pick 了错误提交或错误顺序后,根据是否已共享分支历史,选择 reset、revert 或重建补丁链恢复正确状态。
误合并分支后的恢复
当错误地 merge 了不该合并的分支时,先识别 merge 是否已共享,再选择 reset 或 revert -m 安全撤销。
误用 git clean 后的恢复
git clean 删除未跟踪文件后,优先从 IDE 本地历史、系统快照或构建产物来源恢复,并建立 clean 前预演与备份习惯。
cherry-pick 冲突或出错后怎么恢复
cherry-pick 遇到冲突、中止或结果不对时的完整恢复流程,包括 --abort、--continue、--skip 以及 cherry-pick 完成后的补救方法。
合并提交后怎么撤销
merge commit 创建后发现有问题时的正确撤销方法。重点讲解 git revert -m 的 parent 编号原理和常见误区。
交互式 rebase 中途出问题怎么救
交互式 rebase 过程中常见的错误(选错动作、冲突、编辑器问题)及恢复办法,包括 --abort、--edit-todo 和 reflog 找回。
提交丢失后怎么找回
各种场景下提交“丢失”后的恢复策略:detached HEAD 提交、filter-branch 后、误删分支、reset 过头。核心工具是 reflog 和 fsck。
仓库损坏后怎么恢复
仓库损坏(pack 损坏、对象丢失、磁盘故障)后的诊断和恢复策略。包括 git fsck 诊断、从远端重新 clone、恢复 pack 文件、备份恢复和预防措施。
detached HEAD 上提交了怎么接回分支
在 detached HEAD 状态下做了提交后,如何正确接回分支。包括创建新分支、合并到已有分支、预防措施。
提交后发现作者或信息写错怎么修正
提交后发现作者信息、提交信息写错,或者漏了文件的修正方法。包括 amend、rebase -i、filter-repo 批量修改等。