如何恢复Git仓库误删文件?Mac执行find命令误删项目文件求助
故障根因
你执行的删除命令存在参数拼写错误:find . name '.DS_Store' -type f -delete 中name前缺少-前缀,find会将不带前缀的参数全部识别为需要遍历的路径,最终触发了当前目录下所有非.git目录文件的删除操作。
恢复操作步骤
- 第一步先备份当前
.git目录,避免后续操作彻底损坏仓库记录:cp -rf .git /tmp/backup-git-dir/ - 恢复所有已经被Git跟踪过的文件(即之前已经提交过或者add到暂存区的文件):
git reset --hard HEAD注意:该操作会直接覆盖工作区所有未提交的变更,如果你的本地有未提交、也没有推送到远端的修改需要找回,先执行下一步再运行该命令。
- 找回未提交的本地修改:
执行git fsck --lost-found,运行完成后所有悬空的Git对象会被写入.git/lost-found/目录,你可以直接遍历该目录下的文件,通过内容匹配找回需要的未提交代码。 - 修复git status显示异常的问题:
完成文件恢复后执行git clean -fd,清除所有未被Git跟踪的冗余文件,此时再运行git status就会恢复正常显示。
后续避免同类问题
你可以全局配置Git自动忽略Mac系统生成的.DS_Store文件,不需要每次手动删除:
- 执行命令生成全局忽略配置文件:
git config --global core.excludesfile ~/.gitignore_global - 编辑
~/.gitignore_global文件,添加一行内容.DS_Store保存即可,该配置对所有本地Git仓库生效。
内容的提问来源于stack exchange,提问作者Rashid Katamesh
相关产品推荐
相关产品推荐

