项目中使用了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,git,代码,报错,commit,line,txt From: https://www.cnblogs.com/dcyd/p/17595695.html最后一步自己手动找到
files
文件夹下的内容去比较,然后在复制进去,虽然麻烦但总比在写一遍好啊