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创建完整仓库镜像备份。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐