git commit模板应放项目根目录(如.commit-template),并用git config commit.template配置路径;ide仅原样填充内容,需手动遵循首行摘要、空行、正文格式及前缀规范。

Git commit template 文件该放哪
模板文件本身没固定位置,但 Git 只认 .git/config 里配置的路径,或项目根目录下的 .gitmessage(需显式启用)。Java 项目里最稳妥的做法是放在项目根目录,比如 .commit-template,然后用 git config commit.template 指向它。别放 src/ 或 resources/ 下——Git 不会自动扫描子目录找模板。
- 全局模板:写入
~/.gitconfig,对所有仓库生效,但 Java 团队协作时容易和项目约定冲突 - 本地模板:在项目根目录执行
git config commit.template .commit-template,只影响当前仓库,推荐 - IDE 启动的 Git(如 IntelliJ)默认读取本地配置,但若用 Terminal 打开新 shell,可能加载全局配置,导致模板不一致
模板内容怎么写才被 IDE 正确识别
IntelliJ / Eclipse 不解析模板语法,它们只是把文件内容原样填进提交框。真正起作用的是换行和占位符格式。Git 本身会忽略以 # 开头的行,所以注释要写成 # feat: 这种带空格的,否则会被当成注释跳过。
- 第一行必须是摘要(50 字以内),后面空一行再写正文,这是 Git 默认折叠逻辑
- Java 项目常用前缀如
feat:、fix:、refactor:要手写进模板,IDE 不会自动补全 - 避免用
${branch}这类 Shell 变量——Git 提交模板不支持变量插值,只会原样显示 - 示例模板内容:
feat: <简短描述> <h1>主体说明(可选)</h1><h1>- 关联 Jira ID: ABC-123</h1><h1>- 影响模块: service.order
IntelliJ 提交窗口不显示模板内容
常见原因是 Git 配置没生效,或 IDE 缓存了旧配置。IntelliJ 的 VCS 提交界面依赖 git config --get commit.template 的输出,不是文件存在就自动加载。
- 先在项目根目录运行
git config --get commit.template,确认返回的是相对路径(如.commit-template),且文件真实存在 - 如果返回空,说明配置没写对,重新执行
git config commit.template .commit-template - 改完配置后,在 IntelliJ 中点
VCS → Git → Show History,再关掉重开提交窗口——不重启 IDE 也能刷新,但必须触发一次 Git 配置重读 - 检查
.git/config文件里是否多了重复的[commit]块,多个template项会导致 Git 忽略全部
Java 团队统一模板的落地难点
最难的不是写模板,而是让所有人用同一个。.gitignore 通常会忽略 .git/config,所以本地配置不会提交;而模板文件虽然能提交,但没人保证别人会执行 git config 命令。
立即学习“Java免费学习笔记(深入)”;
- 在项目 README 里写明三步:下载模板 → 放根目录 → 运行配置命令,比放钩子更可靠
- 不要用
prepare-commit-msg钩子自动生成——Java 项目里钩子常被构建工具(如 Maven)或 CI 覆盖,行为不稳定 - CI 流水线(如 Jenkins/GitHub Actions)一般不走 IDE 提交流程,所以模板只约束人工提交,自动化提交需另配 message 生成逻辑
- 团队里有人用 VS Code 或命令行,也得同步这个模板路径,否则提交风格立刻不一致
模板本身很简单,难的是每次 git commit 时,那个空行、那个 fix: 前缀、那个 Jira ID 的位置,都得靠人眼盯住——机器只负责塞文本,不负责校验格式。










