常见误操作场景分类
文件误删、提交丢失、分支误删、代码覆盖、硬重置(hard reset)后恢复
文件或更改未提交时的恢复
git checkout -- <file> 恢复未暂存的文件修改
git restore <file> 恢复Git 2.23+版本的未暂存更改
git clean -fd 清理未跟踪文件(谨慎使用)
已提交但未推送的恢复
git reflog 查看所有操作历史记录
git reset --hard <commit-hash> 回退到特定提交
git cherry-pick <commit-hash> 捡回特定提交的更改
已推送的代码撤销
git revert <commit-hash> 创建反向提交撤销更改
强制推送需谨慎:git push -f 可能影响团队协作
分支误删恢复
git reflog 查找被删分支的最后提交
git branch <branch-name> <commit-hash> 基于提交重建分支
提交信息修改
git commit --amend 修改最近一次提交
交互式变基修改历史提交:git rebase -i HEAD~n
暂存区操作恢复
git reset HEAD <file> 将文件移出暂存区
git stash 临时保存未提交更改
预防措施
git config --global help.autocorrect 1 开启自动纠错
重要操作前创建备份分支
定期推送代码到远程仓库
高级恢复工具
git fsck 检查数据库完整性
git archive 打包特定版本代码
第三方工具如GitKraken的恢复功能
注意事项
强制推送的风险说明
团队协作时的沟通建议
敏感数据泄露后的处理流程