场景复现
今晚,我和往常一样对着电脑撸着代码,这时候我灵光一现,想到了一个好的功能,于是乎我就开始增加代码文件,更改之前已有的问题,当我实现完这个功能的时候,觉得可有可无,我想通过 Git 直接回退到我没有这个新功能的版本,把新增的文件和更改的文件全都给还原回去,然而在编写新功能的时候我忘记 Commit 了!!!(正常操作应该是新建一个分支,在新分支编写新功能),于是乎我点了如图操作(这里仅作为事件发生展示,并不为实际丢失个数)
没错,清空所有更改过的代码。导致这些文件直接丢失(并不在回收站),包括写新功能前的代码和写新功能后的代码全都丢失了 😭!!!
找回前提
庆幸的时候,写新功能前的代码我成功 add 到了暂存区,只是未 Commit 而已,那么就能找回对应的文件(仅仅只是文件,并且没有文件名,项目结构都无法还原 )。如果有 Commit 的话非常好找回,直接回退上一个版本即可,如果连 add 操作都没有的话,除非像 VScode 插件 Local History 或一些 IDE 有记录本地文件,不然恐怕 是真的找不回了。。。
开始找回
故,此次目的是找回 add 过而未 commit 的文件,首先打开 git bash 输入
git fsck --lost-found
进入.git\lost-found\other
然后通过文本编辑器打开即可,如果是代码的话重命名对应的后缀,如果是图片这些就得对 应删除前所对应的文件链接。名字是找不回来了,只能手动重命名。
事后回想
可能这次丢失的仅仅只是几十个文件,下次丢失的可能就是一个项目了。所以在每次更改代码前做好备份才是首要做的,同时也感谢 git 这么好用的版本控制系统,不然这篇博客可能也不存在。