“git checkout ./” 引发的一次git操作事故
能力越大,事故越大
事故背景:
一个大型前端项目,因为本地测试,编译,改bug需要,所以,本地git代码库保留了几个modified状态并且一直不提交的文件。
git checkout ./
因为本地UT测试代码多,跑一次 ng test 太慢,所以我之前已经使用如下命令删除了项目所有的测试文件:
$allSpec = dir -include "*.spec.ts" -recurse
rm $allSpec
然后,突然想checkout所有测试文件git checkout ./*.spec.ts
,然后,在测试文件里面全局搜索一下代码。
脑子一抽,手一快:干掉了本地所有修改但是没有暂存的文件!
拯救开始:
git fsck
git fsck
Checking object directories: 100% (256/256), done.
Checking objects: 100% (735762/735762), done.
dangling blob f530b0b03c9f00327bda371d05e931d79d38088b