Git commit template 生效需配置 Git 全局 commit.template 为绝对路径,Sublime Text 默认 Git 插件不加载该模板;须用 SublimeGit 插件并启用 git_commit_use_template 设置,且模板文件需 UTF-8 无 BOM、可读权限。

Git commit template 文件怎么放才生效
Sublime Text 本身不直接读取 Git 的 commit.template 配置,它依赖插件(比如 Git 插件或 SublimeGit)来调用 Git 命令。真正起作用的是 Git 自身的模板机制——只要 Git 能读到模板文件,Sublime Text 调用 git commit 时就会自动加载。
关键点:模板路径必须是绝对路径,且文件存在、可读。
- 在终端执行
git config --global commit.template "/full/path/to/COMMIT_EDITMSG"(注意用正斜杠,Windows 也一样) - 推荐放在用户目录下,例如:
~/Documents/git-commit-template(macOS/Linux)或C:/Users/YourName/git-commit-template(Windows) - 不要用
~符号写在配置里,Git 不会自动展开;必须写成完整路径 - 文件内容可包含注释(以
#开头)和空行,Git 会自动过滤掉以#开头的行
Sublime Text 中编辑 commit message 时模板没出现?检查插件行为
即使 Git 配置了 commit.template,Sublime Text 默认的 Git 插件(Package Control 安装的那个)并不会主动加载该模板——它只是调用系统 git commit,而后者是否展示模板,取决于你是否用了 -m 参数或是否在非交互模式下运行。
常见现象:Ctrl+Shift+P → Git: Commit 弹出的输入框是空的,不是模板内容。
- 这是正常行为:Sublime 的
Git插件使用git commit -m "..."直接提交,跳过了编辑器流程,自然不读模板 - 想让模板生效,必须走 Git 的编辑器流程:设置
git config --global core.editor "subl --wait"(macOS/Linux)或"C:Program FilesSublime Textsubl.exe" --wait(Windows) - 然后在终端手动运行
git commit,才会弹出 Sublime 窗口并加载模板 - 如果坚持在 Sublime 内一键提交,建议改用
SublimeGit插件,它支持读取commit.template并预填内容(需启用git_commit_use_template设置)
如何让 SublimeGit 插件真正读取并显示模板
SublimeGit 是少数能原生支持 commit.template 的 Sublime 插件,但默认不开启,且对路径解析有细节要求。
- 确认已安装
SublimeGit(不是官方Git插件),并在Preferences → Package Settings → SublimeGit → Settings中添加:
{
"git_commit_use_template": true,
"git_path": "/usr/bin/git" // macOS/Linux;Windows 填 "C:\Program Files\Git\bin\git.exe"
}
- 模板路径必须由 Git 全局配置提供,
SublimeGit不读本地.git/config里的commit.template,只认git config --global commit.template - 如果模板里含中文,确保文件编码为 UTF-8 无 BOM,否则 Sublime 可能显示乱码或加载失败
- 模板中不要写
Change-Id:这类 Gerrit 特有字段——除非你真在用 Gerrit,否则 Git 会报 warning 并可能拒绝提交
模板内容怎么写才实用又不踩坑
一个好用的提交模板不是越长越好,而是要匹配团队规范、减少重复输入、防止遗漏关键信息。
- 第一行必须留空(Git 会把首行当 subject),第二行开始才是模板正文,例如:
# 请填写本次提交的简明描述(50 字以内) # # 说明修改背景、影响范围、关联 issue(如 #123) # # feat: add user login API # fix: resolve null pointer in profile page # docs: update README.md installation steps # # Issue: #123 # Reviewers: @alice, @bob
- 所有以
#开头的行都会被 Git 自动忽略,所以注释和占位符都安全 - 避免在模板里硬编码分支名或时间戳——这些应由 CI 或钩子生成,手写易过期
- 如果团队用 Conventional Commits,模板里直接给出
feat:/fix:前缀示例,比靠记忆更可靠
最常被忽略的一点:模板文件权限。Linux/macOS 下若模板文件不可读(chmod -r),Git 静默失败,既不报错也不加载——建议用 ls -l 确认权限为 -rw-r--r--。


















