pre-commit钩子不触发主因是husky未安装、.husky/pre-commit无执行权限或lint-staged缺失;VSCode点提交无反应因git.enableSmartCommit=true绕过钩子,需设为false并确保git add在lint-staged命令末尾。

pre-commit 钩子不触发,大概率是 husky 没装好或权限不对
VSCode 点提交按钮没反应,不是插件失灵,而是 .git/hooks/pre-commit 根本没被执行。常见原因有三个:
• npx husky install 没运行过,.husky/ 目录不存在
• .husky/pre-commit 文件存在但没可执行权限(macOS/Linux 下必须 chmod +x .husky/pre-commit)
• 项目根目录没 package.json,或者 lint-staged 没装在 devDependencies 里,导致 npx lint-staged 找不到命令
lint-staged 配置里漏掉 git add,修复就白做了
eslint --fix 和 prettier --write 默认只改工作区文件,不会自动重新暂存。如果配置里没写 "git add",那修复后的代码根本进不了本次提交——你看到的仍是旧版本,CI 或队友拉下来还是报错。
正确写法示例:"*.{js,ts}": ["eslint --fix", "prettier --write", "git add"]
注意:顺序不能颠倒,git add 必须放在最后;否则 prettier 改完还没加进暂存区,eslint 可能又报新错。
GitHub 项目更新追踪工具 - 自动检查多个 GitHub 项目的 Releases 和 CHANGELOG,生成更新摘要与影响分析报告。支持自动化定时任务。 如何使用 最简单的方式:直接用自然语言告诉我 你可以说 我会做 「检查 GitHub 更新」 检查最新版本 「添加 vscode」 追踪新项目 「停止追踪 xxx」 移除项目 「暂停更新检查」 暂停自动化 「给我看 openclaw 报告」 展示报告 触发词:「追踪项目更新」「检查 GitHub 更新」「项目更新报告」「设置更新提醒」
VSCode 的 git.enableSmartCommit 会绕过 pre-commit
这个选项默认为 true,它会让 VSCode 把“未暂存的修改”直接塞进 commit,跳过 Git 原生的 pre-commit 流程。结果就是:终端里 git commit 能跑 lint,VSCode 点 ✔️ 却秒提成功。
解决方法很简单:
• 打开 VSCode 设置(Cmd+, 或 Ctrl+,)
• 搜索 git.enableSmartCommit
• 把它设为 false
之后必须手动 git add 再提交,才能确保钩子生效。
VSCode 的 eslint.autoFixOnSave 和 pre-commit 冲突
两者都改工作区文件,但时机和范围不同:
• autoFixOnSave 是每次保存都全量扫当前文件
• pre-commit 是只处理暂存区、且带 --fix 的文件
一旦同时开启,容易出现“保存时修了一次,提交前又修一次”,导致工作区和暂存区内容不一致,甚至 git diff 显示一堆无关变更。
建议:
• 关掉 eslint.autoFixOnSave(全局或项目级)
• 把格式化和修复逻辑完全交给 pre-commit + lint-staged 统一管控
.husky/pre-commit 脚本是否被 Git 正确加载、Node 环境是否可用、以及暂存区文件是否真的被 lint-staged 拿到并处理——这些环节任何一个断掉,自动校验就成摆设。

















