Git 钩子错误,导致新文件丢失?
问题出现
2024-12-26 下午,开发主管在阿里云效上面新建了个项目仓库,要求我将新项目代码上传,在配置好后执行相关指令推送,这时我却犯了一个错误:在 commit 阶段的内容没有按照格式填入。
通常在 git 推送的时候,commit 都会按照规范格式推送
[feat|fix|refactor|...](module):[content]
但在本次推送过程中,我没有执行项目中自带的 pnpm run cz 指令帮助填写,而是手动填写 feat: init,从我填写的内容对照格式来看,明显少了个 (module),也就是如此让 git 钩子报错了。
报错之后,已暂存的文件全部丢失,通过 AI 协助都找不回来,不得已重头开始写代码。
解决方案
2025-01-08 下午,在 掘金 摸鱼的时候找到了解决办法,方案很简单,就两条 git 指令
bash
# 阶段文件还原
git restore --staged .
# 栈恢复
git stash pop之所以这两条指令能够恢复文件,是因为 git 指令报错后,已经通过 git add [file] 指令暂存的文件会被保存到栈中,也就是执行了 git stash 指令。
那么我们只需要将本地分支变得干净再把栈恢复到分支上就能实现文件找回。