Git 提交模板需通过 git config 配置 commit.template 生效,路径可为项目级。gitmessage 或全局绝对路径,VSCode 仅调用 git 命令故不直接管理;模板须以 #注释引导、首行留空,禁用 git.enableSmartCommit 以防绕过。

Git 提交模板文件放哪才生效
VSCode 本身不直接管理 Git 提交模板,它依赖 Git 自身的 commit.template 配置。模板文件路径必须由 Git 识别,不是放在 VSCode 设置里就能用。
常见错误是把模板文件丢进 .vscode/ 目录下,或者只在 VSCode 的 settings.json 里加字段——这些完全无效。
- 模板文件可以是任意路径,比如
~/git-commit-template或项目根目录下的.gitmessage - 必须通过 Git 配置启用:
git config --local commit.template .gitmessage(项目级)或git config --global commit.template ~/git-commit-template(全局) - 配置后,所有符合该作用域的
git commit(包括 VSCode 内置终端、命令面板触发的提交)都会自动加载
模板内容怎么写才不被 Git 忽略
Git 会跳过以 # 开头的行和空行,但如果你写了非注释的“占位文字”,它会被当成真实提交信息的一部分——这是很多人模板“没生效”的真正原因。
正确做法是用纯注释引导填写,且首行留空(避免误提交默认内容)。
- 推荐模板开头留一行空白,再写说明:
#!/usr/bin/env bash # feat: 描述改动目的(必填)# # 关联 issue(可选):#123 # # 修改点(可选):# - - 不要写
Subject:或Body:这类标签行——它们不是注释,Git 会当作正文提交 - 如果用了 VSCode 的 Git GUI(如源代码管理侧边栏),确保没有勾选“Always sign off”等干扰选项,否则可能覆盖模板结构
VSCode 中提交时模板不弹出?检查这三个地方
即使 Git 配置正确,VSCode 仍可能绕过模板——因为它有时会走自己的提交逻辑,尤其当你用图形按钮而非终端执行 git commit。
- 确认 VSCode 没启用
git.enableSmartCommit:这个功能会跳过模板,直接用暂存区文件名生成提交信息;关掉它:"git.enableSmartCommit": false - 检查是否启用了
git.postCommitCommand类扩展(如 GitLens 的自动推送),某些旧版本会在提交后立刻触发新命令,导致模板被清空 - 终端里手动运行
git commit测试:如果终端能加载模板,但 VSCode 图形界面不能,基本是 UI 层未继承 Git 配置,此时建议统一用终端提交,或换用git-commit-msg类插件补足
不同项目需要不同模板?别硬编码路径
全局模板无法适配多语言项目(比如前端要加 chore(deps): 规范,后端要关联 Jira ID),硬写死一个路径会互相冲突。
- 优先用
--local配置:进入项目根目录,运行git config commit.template .gitmessage,然后放一个项目专属的.gitmessage - 避免相对路径陷阱:Git 不支持
./.gitmessage这种写法,必须是相对于 Git 工作树根目录的路径,所以.gitmessage是合法的,config/.gitmessage就得写全路径 - 配合
.gitattributes或 husky 钩子做校验:比如提交前检查首行是否匹配^(feat|fix|docs),比依赖模板更可靠
模板只是辅助,真正容易被忽略的是:Git 提交信息最终由 git commit 命令解析,VSCode 只是调用者。任何绕过该命令的操作(比如 patch 提交、amend 时复用旧信息),模板都不会触发。