内容纲要
我用最清爽、最“不废话”的方式,把两者的关系说透:
它们是两个完全不同层级的东西。
① .gitmessage ——“开发者写 commit 时的填写模板”
你可以把 .gitmessage 当成 commit message 的输入表单。
开发者执行:
git commit
Git 就会自动弹出 .gitmessage 的内容,让你照着填:
feat(agent): <summary>
<body>
<footer>
它的功能只有一个:
👉 帮开发者写 commit message 时“填坑位”。
类似“写作模板”。
没有它,不影响项目本身;但团队写 commit 会参差不齐。
② CONTRIBUTING.md ——“告诉贡献者整个项目怎么开发、怎么提 PR 的官方指南”
它是放在仓库根目录的规范文档,给所有贡献者看:
- 如何写 commit(会包含提交规范,但不只这些)
- 如何提 PR
- 目录结构说明
- 本地开发环境如何搭建
- 代码风格规范
- 分支管理规范
- Issue 提交规范
- 运行项目的脚本
- Review 要求
- 测试要求
它属于版本库的公开规则,类似“开发者手册”的一章。
它可以包含 commit 规范,但它不是模板。
直观比喻
如果把 代码开发 比作一家公司:
-
.gitmessage= 你的周报模板
每周写周报时照着填写。 -
CONTRIBUTING.md= 公司内部的“如何工作”指南
解释流程、分工、规范、准则。
两者不在一个维度。
什么时候需要两者一起用?
如果你想要:
- 开发者写 commit 时被引导(
.gitmessage) - 整个仓库的开发流程规范化(
CONTRIBUTING.md)
那么两者必须一起上。
这是专业项目必备的“双保险”。
最终建议(针对 代码开发)
你最好这样组织:
1)仓库根目录:
CONTRIBUTING.md
.gitmessage
commitlint.config.js
.husky/commit-msg
2)CONTRIBUTING.md 文档里写:
- 我们使用 Conventional Commits
- commit template 已内置在
.gitmessage - husky + commitlint 已启用
3)开发者在本地执行:
git config commit.template .gitmessage
从此团队写 commit 信息统一清晰,审计、回滚、自动生成 changelog 都很舒服。