常见误操作场景分类
- 提交相关:误提交、提交信息错误、漏提交文件
- 分支相关:误删分支、错误合并、强制推送覆盖
- 文件操作:误删未提交文件、误
git add或git rm - 历史修改:需要撤销某次提交、修改历史提交记录
撤销本地未推送的提交
git reset --soft|--mixed|--hard <commit_hash>
--soft保留改动到暂存区--mixed(默认)保留改动到工作区--hard彻底丢弃改动
修复已推送的提交
git revert <commit_hash>生成反向提交
git push同步到远程,避免直接修改历史
恢复误删的分支
通过git reflog查找分支最后提交的哈希
git branch <branch_name> <commit_hash>重建分支
撤销工作区文件修改
git checkout -- <file_path>丢弃未暂存的修改
git restore <file_path>(Git 2.23+替代方案)
从暂存区撤回文件
git reset HEAD <file_path>取消git add操作
找回误删的未提交文件
git fsck --lost-found检查悬空对象
在.git/lost-found目录中手动恢复文件
修改历史提交信息
git rebase -i <base_commit>交互式变基
将目标提交行的pick改为reword保存后编辑
强制推送后的团队协作修复
通知所有成员同步最新历史:
git fetch --all
git reset --hard origin/<branch_name>
预防误操作的最佳实践
- 重要分支设置保护规则
- 频繁提交前使用
git diff检查变更 - 定期备份关键分支或标签
- 使用
git stash暂存未完成的工作
高级工具与技巧
git cherry-pick选择性应用提交git bisect定位问题提交- 脚本自动化备份关键操作日志
注:涉及历史重写的操作需谨慎,尤其在协作仓库中应优先使用revert而非reset。