Git误操作急救手册大纲
常见误操作场景分类
- 提交相关误操作:误提交敏感信息、提交信息错误、漏提交文件
- 分支相关误操作:误删分支、错误合并分支、强制推送导致覆盖
- 历史记录误操作:误用
rebase导致冲突、误删commit - 工作区误操作:误删未追踪文件、误用
git reset
急救核心原则
- 优先使用
git reflog定位操作记录 - 避免直接操作远端仓库,先本地修复
- 关键操作前备份
.git目录
提交相关误操作修复
误提交敏感信息
使用git filter-branch或BFG Repo-Cleaner移除历史记录中的敏感数据
提交信息错误
通过git commit --amend修改最近一次提交信息
漏提交文件
追加文件到最近一次提交:git add <file> && git commit --amend --no-edit
分支相关误操作修复
误删本地分支
通过git reflog找到分支最后提交的哈希值,重建分支:git checkout -b <branch> <commit-hash>
错误合并分支
使用git reset --hard <commit-hash>回退到合并前的状态
强制推送覆盖远端
若本地有正确副本,重新推送:git push --force-with-lease
历史记录误操作修复
误用rebase导致冲突
中止rebase:git rebase --abort
或手动解决冲突后继续:git rebase --continue
误删commit
通过git reflog找回提交哈希,使用git cherry-pick <commit-hash>恢复
工作区误操作修复
误删未追踪文件
检查git clean操作记录或尝试文件恢复工具如extundelete(Linux)
误用git reset
通过git reflog找回重置前的提交状态
预防措施与最佳实践
- 重要操作前使用
git stash暂存变更 - 定期推送分支到远端备份
- 使用
--dry-run参数测试破坏性命令 - 配置
git alias简化复杂操作
高级工具与扩展
git fsck:检查仓库完整性并找回悬空对象git blame:追溯文件修改历史- 图形化工具(如GitKraken)辅助可视化操作
附录:常用命令速查表
- 历史记录修复:
reflog、cherry-pick、reset - 分支操作:
branch -D、push --force-with-lease - 提交修正:
amend、filter-branch