git 通过husky提交代码报错导致代码丢失(只add了未commit的代码)
项目中使用了eslint,以及lint-staged,在执行git commit 时会触发 git 的 pre-commit 钩子,对代码做一次检查及格式化。由于个别文件中有TS报错,导致commit失败,并抛出了具体文件路径,当我在命令行点击路径时发现新增得文件没了(.ts、.vue、图片),仔细一看引用过这些文件得代码也没了,比如路由表中得代码、新加的接口请求都没有了(心想要哭死,要重写好多了)
一、直接将最近30天内的记录单独提取成一个txt文件到目录下
find .git/objects -type f | xargs ls -lt | sed 30q > file.txt
二、然后通过vscode光标把不要的格式全部删除,保留想要的格式
保留这样的格式 5ed849fb10190b2db704d44e421a5fed00e22949
(切记/要删掉)
三、创建脚本并执行脚本
本地新建
files
文件夹, 否则会报找不到files文件夹导致写入失败
本地创建build.sh
文件用于写入命令如下
for line in `cat file.txt`
do
echo "File:${line}"
git show ${line} > files/${line}.txt
done
四、还原文件
最后一步自己手动找到
files
文件夹下的内容去比较,然后在复制进去,虽然麻烦但总比在写一遍好啊
一辈子说长不长,说短不短,努力做好两件事:第一件事爱生活,爱身边的人,爱自己;第二件事是好好学习,好好工作,实现自己的人生价值观,而不仅仅是为了赚钱