vscode中生成规范commit的核心是“写得对且不被拒”,需装vivaxy.conventional-commits插件、禁用git.enablesmartcommit、统一使用source control面板提交,并确保scope小写、header与body间有空行。

VSCode 里生成规范 commit,核心不是“写得快”,而是“写得对且不被拒”。靠手敲永远有拼写错、漏空行、scope 大小写等问题;插件能绕过这些,但必须选对、配对、用对。
Conventional Commits 插件怎么装才真正生效
直接装 vivaxy.conventional-commits(作者 vivaxy),别碰带 gitmoji 或 commitizen 的——前者只管 emoji,后者必须配 CLI,反而在 VSCode 里多一层故障点。安装后不用额外配置,默认就支持 feat、fix、chore 等类型。
- 重启 VSCode 后,用 Source Control 面板点「提交」按钮,编辑框会自动弹出格式提示
- 如果没反应,检查设置里
git.enableSmartCommit是否为false:这个开关一开,VSCode 就跳过模板,直接用文件名凑提交信息 - 插件不拦截终端里的
git commit -m,所以日常开发建议关掉终端手敲习惯,否则等于白装
scope 写 PascalCase 报错 “scope must be lower case” 怎么办
这不是插件 bug,是 Conventional Commits 规范强制要求:scope 必须全小写、连字符分隔,比如 user-profile、api-client,不能是 UserProfile 或 UserProfileModule。
-
scope不是路径直译,而是逻辑边界。src/pages/HomePage.vue 的变更,scope 用pages比HomePage更合理 - 如果团队已约定统一用
ui表示所有组件层变更,就沿用它,别为了“匹配目录名”硬套components - 想自定义支持的 type 或 scope,搜设置项
conventionalCommits.types,改 JSON 数组即可,但 scope 校验逻辑不会因此放宽
为什么 commitlint 不报错,但 husky 钩子已经装了
commitlint 本身只是校验器,不挂钩子就等于没通电。常见失效原因不是配置错,而是钩子根本没挂上或没执行。
- 确认执行过:
npx husky install和npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"' - 检查
.husky/commit-msg文件是否存在、是否可执行(Windows 用户用 Git Bash 时容易漏chmod +x) - VSCode 提交面板默认走命令行流程,能触发钩子;但某些第三方插件(如 Git Graph)可能绕过,此时需手动验证终端里
git commit是否报错 - 模板里 header 和 body 之间必须空一行——
commitlint的body-leading-blank规则默认开启,少这行就会被拒
AI 自动生成 commit 的插件怎么避免“假规范”
git-ai-commit 或 Dify GitCommit Generator 这类工具确实快,但它们生成的内容常忽略两个硬性细节:scope 小写、header/body 分隔空行。
- AI 输出后务必手动检查:第一行是否形如
feat(user-profile): 添加登录态持久化,而不是feat(UserProfile): ... - 如果 AI 填完直接提交,VSCode 可能自动删掉空行;建议先粘贴到编辑器里,确认 header 下有一空行再点提交
- Dify 类插件依赖 API Key 和提示词模板,[data] 占位符会被替换为 diff 内容,但若 diff 过大或含二进制文件,AI 可能误判 scope,这时得人工干预
最易被忽略的一点:VSCode 提交面板和终端 git commit 是两条路。插件只管前者,husky 钩子只管后者。想真正闭环,得让团队统一用一种方式提交,否则总有一边会漏检。











