Git冷命令拯救崩溃现场
Git冷命令拯救崩溃现场技术文章大纲
场景1:误删未提交的代码
git reflog查看本地操作历史记录git checkout <commit_hash>或git reset --hard <commit_hash>恢复至指定节点
场景2:错误git reset --hard后补救
git fsck --lost-found查找悬空对象
检查.git/lost-found目录中的文件碎片
通过git show <hash>确认内容后手动恢复
场景3:错误合并分支导致混乱
git merge --abort终止进行中的合并冲突git reset --merge ORIG_HEAD回退到合并前状态
场景4:找回已删除的分支
git log -g查询所有引用日志git branch <branch_name> <commit_hash>基于历史记录重建分支
场景5:修改最后一次提交信息
git commit --amend交互式修改提交信息
强制推送需谨慎:git push --force-with-lease
场景6:清除错误的大文件提交
git filter-branch --tree-filter 'rm -f <file_path>' HEAD重写历史
或使用BFG Repo-Cleaner工具高效清理
场景7:恢复git stash pop误删的储藏
git fsck --unreachable | grep stash查找丢失的储藏git stash apply <stash_hash>重新应用储藏内容
场景8:撤销错误的远程推送
git revert <commit_hash>生成逆向提交git push origin <branch>用新提交覆盖错误内容
场景9:修复损坏的仓库
git fsck检查仓库完整性git gc --prune=now清理并压缩历史对象
场景10:分离头指针(DETACHED HEAD)恢复
git branch temp创建临时分支保留修改git checkout <target_branch>切换回目标分支后合并
注意事项
- 任何破坏性操作前建议
git clone --mirror备份仓库 - 慎用
--force推送,优先考虑--force-with-lease - 关键操作后立即验证
git status和git log状态
