Husky pre-commit未在提交前执行,生成文件未纳入提交问题
解决Git Commit时Build生成文件未纳入提交的问题
问题原因
执行git commit时,npm run build生成的文件不在之前git add的暂存区范围内,导致提交完成后才显示这些文件的变更,未被包含在本次提交中。
解决方案
在pre-commit钩子中,执行完构建命令后,自动将生成的文件添加到Git暂存区,确保提交时包含这些变更。
方法1:直接修改husky的pre-commit脚本
- 打开项目根目录下的
.husky/pre-commit文件(若未生成,先执行npx husky add .husky/pre-commit "npm run build"创建)。 - 修改脚本内容,在
npm run build后添加git add命令指定生成文件的目录:
#!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" npm run build # 将out目录下的所有变更添加到暂存区 git add out/
方法2:配合lint-staged(更精准触发)
如果希望仅在Solidity文件变更时才执行构建和暂存操作,可以使用lint-staged:
- 安装lint-staged:
npm install lint-staged --save-dev
- 在
package.json中添加配置:
"lint-staged": { "*.sol": [ "npm run build", "git add out/" ] }
- 修改
.husky/pre-commit脚本为:
#!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" npx lint-staged
验证步骤
- 检出新分支
test-branch - 编辑
Badges.sol添加测试变量 - 执行
git add . - 执行
git commit -m "commit to test husky" - 执行
git status,此时不会再出现modified: out/Badges.sol/Badges.json的提示,说明生成的文件已被纳入本次提交。
内容的提问来源于stack exchange,提问作者George Pickett
相关产品推荐
相关产品推荐

