commit husky提交教研报错时出现直接将修改的文件全部恢复的情况

最近我配置了一个commit 的husky提交教研功能,可以很好的解决不规范的提交,在提交之前将不好的代码规避掉,但是出现了一个很奇怪的现象,就是当我们提交的时候出现文件有问题的时候文件会自动将所有修改的文件全部消失掉。控制台会报如下错误:
在这里插入图片描述
由于问题比较严重,特地搜了半天add过后的文件怎么恢复,尝试了使用

git fsck lost found

然后去.git/lost-found/others目录下就可以找到最近add的文件
在这里插入图片描述
在这里插入图片描述
挨个查看文件内部的代码后发现里面完全没有我刚刚修改的代码,最终还是没有解决,但是当我读他的错误信息的时候我无意间发现了他有一个的stash单词,于是我打开了git提交日志,发现了确实他运行了操作,也git stash就是将修改代码存储,并恢复修改。
在这里插入图片描述
于是我果断运行了git stash pop,文件恢复了很开心!,特此记录,希望有一样遭遇的人可以得到解决。

2023-3-13 更新---------------------------------------------------------------------------------
今日终于是真相大白的时候了,最后我发现每一次git commit 操作由于我配置了pre-commit钩子,会运行lint-staged操作,他会执行git stash将我们的代码先本地缓存一份,然后对于我们stash的代码运行我的eslint -fix操作,当验证结束以后会再次将代码恢复也就是stash pop操作,如果eslint校验通过就运行git add .并重新 commit,但是有一个问题出现了那就是我的components.d.ts文件
在项目正在运行的时候,我们执行了git stasheslint fix操作,当有文件被修复的时候会导致代码改变,vite会重新打包变化的文件,这样有时候会导致按需引入文件被更新,这样文件就被改变了,当pre-commit结束校验结束后执行git stash pop 操作且你之前存储的文件也包含components.d.ts,就会发现有文件冲突,就无法pop出存储的文件了,让人产生一种好像代码被删除的感觉,其实只要撤销components.d.ts更改,并执行git stash pop操作就可以恢复文件了。

猜你喜欢

转载自blog.csdn.net/Ndbsa/article/details/129456822