git 通过husky提交代码报错导致代码丢失(只add了未commit的代码)

发布时间 2023-08-01 10:13:22作者: 王小美丶

项目中使用了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 文件夹下的内容去比较,然后在复制进去,虽然麻烦但总比在写一遍好啊