Git误操作急救:30秒拯救你的代码
Git误操作急救手册大纲
常见误操作场景分类
文件误删、提交丢失、分支误删、代码覆盖、硬重置(git reset --hard)后后悔
文件误删恢复
git checkout -- <file>恢复未暂存的文件修改git restore <file>(Git 2.23+)撤销工作区修改git fsck --lost-found找回已删除的未跟踪文件
提交丢失恢复
git reflog查看所有HEAD变更记录git cherry-pick <commit_hash>恢复特定提交git reset --hard HEAD@{n}回退到reflog记录的某个状态
分支误删处理
git reflog | grep <branch_name>查找分支最后提交git checkout -b <branch_name> <commit_hash>基于历史提交重建分支git branch <branch_name> <reflog_hash>通过reflog恢复分支
代码覆盖补救
git stash list查看暂存栈历史git stash apply stash@{n}恢复特定暂存版本git diff <commit1> <commit2> > patch生成差异补丁文件
硬重置后悔药
git ORIG_HEAD引用指向reset前的状态git reset --hard ORIG_HEAD回退到重置前状态git fsck --dangling找回被丢弃的提交对象
预防措施配置
git config --global alias.safety '!git add . && git commit -m "WIP"'创建安全别名
设置core.hooksPath添加预提交验证钩子
定期使用git bundle create backup.bundle --all创建离线备份
高级恢复工具
git bisect二分法定位问题提交git filter-repo重写历史记录(替代git filter-branch)git archive导出特定版本代码快照
可视化辅助方案
GitKraken的undo功能
SourceTree的日志视图
VSCode GitLens插件的提交导航
注:所有操作前建议先执行git status确认当前状态,关键操作前使用git clone --mirror创建完整仓库镜像备份。
