日常开发中很容易遇到这种情况:改完一批文件后执行了 git add .,但还没 commit;过一会儿想删掉其中几个文件,git rm 却报错提示“有暂存但未提交的改动”,于是顺手加了 -f 强删。结果工作区文件没了,git status 里也看不到这些文件的删除记录,仿佛它们从未存在过。
这时很容易陷入自我怀疑:是不是压根就没 add 过?毕竟 status 干净得像什么都没发生过。但其实只要没跑过 git gc,git add 过的内容就一定还躺在 Git 的对象库里,是可以找回来的。下面先讲清楚为什么文件会“消失”,再给出三种恢复方案。



