VSCode提交框不显示模板内容是因为Git未加载.gitmessage文件,需在项目根目录创建该文件并执行git config commit.template .gitmessage配置,且禁用VSCode的git.trimCommitMessage自动清理功能。

VSCode 本身不导出提交模板,它只读取 Git 配置指定的 .gitmessage 文件;所谓“导出”,其实是手动创建并配置该文件路径。
为什么 VSCode 提交框里没显示模板内容
常见错误现象是:在 VSCode 源代码管理面板点击提交,弹出的编辑框仍是空白,或只显示默认的“Type a commit message...”。这说明 Git 并未加载模板文件。
- 根本原因是
git config commit.template没有正确设置,或路径写错(比如写成./.gitmessage而不是.gitmessage) - VSCode 的 Git 集成完全依赖底层 Git CLI 行为,不会自行解析或渲染模板 —— 它只是调用
git commit,由 Git 决定打开什么内容 - 如果项目根目录下没有
.gitmessage,或文件权限不可读,Git 会静默忽略,不报错也不提示
如何让 .gitmessage 在 VSCode 中生效
必须通过 Git 命令行配置,VSCode 插件无法绕过这一层。操作顺序不能颠倒:
- 在项目根目录创建纯文本文件
.gitmessage,内容示例:# type(scope): subject # # Examples: # feat(auth): add email verification # fix(api): prevent null pointer in user query # docs(readme): update installation steps # # Type: feat|fix|docs|refactor|test|chore # Scope (optional): # Subject (max 50 chars):
- 在项目根目录下运行:
git config commit.template .gitmessage - 验证是否生效:
git config --get commit.template应返回.gitmessage - 重启 VSCode(或关闭再打开源代码管理面板),再次点击提交按钮,编辑框应自动填充模板内容
全局配置 vs 本地配置的陷阱
很多人误以为加 --global 就能一劳永逸,但实际效果相反:
-
git config --global commit.template ~/.gitmessage会让所有仓库都尝试读取用户主目录下的该文件 —— 一旦某个项目不需要模板,或路径不存在,就会失效且难以排查 - 推荐始终使用本地配置:
git config commit.template .gitmessage(无--global),作用域精准,可随项目提交进版本库,团队成员克隆即生效 - 若真要全局启用,必须确保
~/.gitmessage存在且路径绝对正确,且所有项目都接受同一套规范 —— 这在混合技术栈团队中极难落地
VSCode 提交时模板被清空或格式错乱
这不是模板问题,而是编辑器行为干扰:
- VSCode 默认会在提交前自动 trim 空行、删除以
#开头的注释行 —— 这会导致模板中的说明文字消失,只剩空结构 - 解决方法:在 VSCode 设置中搜索
git.trimCommitMessage,把它设为false - 另外确认没有启用类似 “GitLens” 或 “Commit Message Editor” 这类插件的自动格式化功能,它们可能覆盖原始模板内容
- 最稳妥的做法:模板里少用注释,把引导语写成非
#开头的占位符,例如:type(scope): [简要描述] [模块名]: [关联任务编号]:
真正容易被忽略的是:VSCode 不参与模板逻辑,只负责展示 Git 给它的内容;任何“模板不生效”的问题,90% 都出在 Git 配置或文件路径上,而不是编辑器设置里。











