You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Husky pre-commit未在提交前执行,生成文件未纳入提交问题

解决Git Commit时Build生成文件未纳入提交的问题

问题原因

执行git commit时,npm run build生成的文件不在之前git add的暂存区范围内,导致提交完成后才显示这些文件的变更,未被包含在本次提交中。

解决方案

在pre-commit钩子中,执行完构建命令后,自动将生成的文件添加到Git暂存区,确保提交时包含这些变更。

方法1:直接修改husky的pre-commit脚本

  1. 打开项目根目录下的.husky/pre-commit文件(若未生成,先执行npx husky add .husky/pre-commit "npm run build"创建)。
  2. 修改脚本内容,在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:

  1. 安装lint-staged:
npm install lint-staged --save-dev
  1. 在package.json中添加配置:
"lint-staged": {
  "*.sol": [
    "npm run build",
    "git add out/"
  ]
}
  1. 修改.husky/pre-commit脚本为:
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

npx lint-staged

验证步骤

  1. 检出新分支test-branch
  2. 编辑Badges.sol添加测试变量
  3. 执行git add .
  4. 执行git commit -m "commit to test husky"
  5. 执行git status,此时不会再出现modified: out/Badges.sol/Badges.json的提示,说明生成的文件已被纳入本次提交。

内容的提问来源于stack exchange,提问作者George Pickett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 21:25:38