.gitmessage 和 CONTRIBUTING.md 到底有什么区别?

内容纲要

我用最清爽、最“不废话”的方式,把两者的关系说透:

它们是两个完全不同层级的东西


.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 都很舒服。

Leave a Comment

您的电子邮箱地址不会被公开。 必填项已用*标注

close
arrow_upward