vscode不管理git提交模板,其生效取决于git config commit.template配置是否正确;需确保路径有效、内容合规,首行为空且注释以#开头,同时关闭vscode的git.enablesmartcommit选项。

VSCode 本身不管理 Git 提交模板,它只调用系统 Git 命令;模板能否生效,完全取决于 git config commit.template 是否正确配置、路径是否可读、内容是否合规。
git config commit.template 配置路径必须绝对或相对项目根目录
Git 不会自动搜索模板文件,你给的路径必须是 Git 能直接打开的。常见错误是写成 .vscode/.gitmessage 或 ~/templates/git-msg(未展开的波浪号在某些 shell 下不解析)。
- 项目级模板推荐放项目根目录,如
.gitmessage,然后执行:git config --local commit.template .gitmessage - 全局模板建议用绝对路径,比如
/Users/you/.git-commit-template,配置命令为:git config --global commit.template /Users/you/.git-commit-template - 路径含空格或中文?加引号:
git config --local commit.template "./my template.txt" - 配置后可用
git config --get commit.template验证是否写入成功
模板文件首行必须为空,注释行以 # 开头才被跳过
Git 会把所有非注释、非空行都当作提交信息正文。很多人写了 Type: feat 这种“占位符”,结果每次提交都带这行——它不是注释,会被提交。
- 正确写法:第一行留空,之后全用
#引导说明,例如:
# type(scope): 简要描述(50字符内) # # * 类型: feat|fix|docs|refactor|test|chore # * 范围: 如 auth、api、ui # * 描述: 修复登录态丢失问题 # * 关联: #123
- 禁止出现
Subject:、Body:、---等非注释标签行 - 模板里不要写任何实际提交内容,只提供引导性注释
VSCode 图形界面绕过模板的两个关键开关
即使 git commit 在终端中能加载模板,VSCode 的源代码管理面板仍可能跳过它——因为默认启用了快捷逻辑。
- 必须关闭
git.enableSmartCommit:在 VSCode 设置中搜该字段,设为false;否则它会直接用暂存文件名生成提交信息,无视模板 - 检查是否勾选了 “Always sign off” 或 “Prompt for commit message” 类选项,这些可能干扰模板加载顺序
- 验证方式:在 VSCode 集成终端中手动运行
git commit,如果能加载模板但 GUI 按钮不能,基本就是上述设置问题
模板文件要不要提交进仓库?要看团队协作场景
模板本身是开发约定的一部分,不是个人配置。是否提交,取决于你是否希望新成员开箱即用。
- 团队项目建议提交
.gitmessage到仓库根目录,并在 README 或 CONTRIBUTING.md 中说明:“运行git config --local commit.template .gitmessage启用提交规范” - 不提交也没问题,但新人需手动配置,容易遗漏;尤其当模板含公司内部字段(如需求编号前缀)时,统一存放更可控
- 注意:
.gitmessage是纯文本,无敏感信息,可安全提交
最容易被忽略的是:VSCode 提交框里看到的“预填充内容”未必来自模板——它可能是上次提交记录、GitLens 的历史补全,或插件缓存。真正可靠的验证方式,永远是终端里敲一次 git commit,看编辑器打开的内容是不是你写的那个 # 注释块。











