编写规范清晰的 Commit Message,是使用 Git 过程中很重要的一环。合理的 Commit Message 可以让团队成员快速了解代码变更历史,方便代码审查与追踪Bug。

Commit Message 的格式

目前有多种 Commit Message 的写法,使用较多的是 Angular 团队的规范,继而演化出了 常规提交

git Commit Message 的每次提交都包含三个部分,Header、Body 和 Footer。

1
2
3
4
5
<Header>

<Body>

<Footer>

其中的 Header 是必须的,Body 和 Footer 可以省略。

Header 是必填的内容,在 Header 中包含三部分内容,如下:

1
<type>(<scope>): <description>

其中 内容是必填的, 是可选的。

Type

主要为以下几种类型的其中之一。

  • feat: 新功能,表示向代码库中引入了一个新的功能。
  • fix: 修复,表示修复了代码库中的错误。
  • docs: 文档更新。
  • style: 格式改进,不影响代码含义的更新,如空格、缩进、分号等。
  • refactor: 重构,既不修正错误,也不增加功能的代码更改。
  • perf: 性能优化,代码的更改可提高性能。
  • test: 测试,添加新的或改正现有的测试。
  • build: 影响构建系统或外部依赖项的更改(如 gulp,npm等)。
  • ci: CI 配置文件的更改。
  • chore: 其他非 src 和 test 目录的更改(如 .gitingore等)。

Scope

可选内容,主要用来描述改动影响的范围,一般为 项目名/模块名,标识此次改动主要涉及到代码中的哪些模块。

Description

必填,对此次改动的简洁描述。

  • 使用祈使句和现在时态,如 “add”、“change”。
  • 首字母不要大写。
  • 结尾不加句号。

Body

可选,针对本次 commit 的详细描述,使用祁使语句和现在时态,如 “add”、“change”。内容较多时需要注意合理换行。需要清晰的表达此次变动的范围以及可能影响的内容。

可选,Footer 只用于两种情况

不兼容变动

如果当前代码与上一个版本不兼容,则 Footer 部分已 BREAKING CHANGE 开头,后面是对变动的描述、以及变动理由和迁移方法。

关闭 Issue

如果当前 commit 针对某个 issue, 可以在 Footer 中关闭这个 issue。

1
CLoses #123, #456

提交工具

具体可以参考 Conventional Commits 的工具列表