Git误操作急救手册大纲

常见误操作场景
  • 误删本地分支git branch -D 错误删除未合并分支
  • 误删未提交的更改git reset --hard 或工作区文件丢失
  • 误提交敏感信息:密码、密钥等被提交到版本库
  • 误强制推送git push -f 覆盖远程分支历史
  • 错误合并或变基git mergegit rebase 导致冲突或历史混乱
急救方法

恢复误删的本地分支
通过 git reflog 查找误删分支的最后提交哈希,重新创建分支:

git checkout -b <branch_name> <commit_hash>

找回未提交的更改
若工作区文件被覆盖,尝试从暂存区或文件系统缓存恢复:

git fsck --lost-found  # 检查悬空对象  

移除敏感信息的提交
使用 git filter-branchBFG Repo-Cleaner 工具重写历史:

git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch <file>' --prune-empty --tag-name-filter cat -- --all  

撤销强制推送的影响
若团队协作中误覆盖远程分支,协调其他成员基于旧历史重新提交:

git push origin <commit_hash>:<branch_name> --force  # 谨慎操作  

修复合并或变基错误
终止当前操作并回退到冲突前的状态:

git rebase --abort  # 终止变基  
git merge --abort   # 终止合并  

预防措施
  • 关键操作前使用 git stash 暂存更改
  • 推送前检查 git statusgit diff
  • 限制 git push -f 权限,启用分支保护规则
  • 定期备份重要分支的提交哈希
高级工具推荐
  • git reflog:查看本地操作历史
  • git fsck:检查仓库完整性
  • BFG Repo-Cleaner:高效清理敏感数据
注意事项
  • 操作前备份 .git 目录
  • 涉及历史重写的操作需团队协同
  • 部分操作可能导致数据丢失,谨慎执行
Logo

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

更多推荐