如何编写好的提交信息

简介

本文用来介绍在组件库开发的过程中,如何提交一个符合语法规则、团队约定和具有高可行性的提交信息。

接下来的操作默认读者使用 git 作为代码仓库。

快速上手

1
2
3
4
5
<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>

进阶篇

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

不管是哪一个部分,任何一行都不得超过72个字符。这是为了避免自动换行影响美观。

Header部分只有一行,包括三个字段: type (必需)、scope(可选)、subject(必需)

1) type

type 用于说明 commit 的类型,只允许使用下面的标识

  • feat:新功能
  • fix:修复一个错误
  • style:与样式相关的功能和更新
  • refactor:重构代码
  • test:与测试相关的一切提交
  • docs:与文档相关的一切提交
  • chore:不包含生产代码变动的定期代码维护
  • perf::与性能优化相关的
  • build:与构建相关
  • ci:持续集成相关的一切提交
  • revert:回退代码(一般由程序自动带出)

如果typefeatfix,则该 commit 将肯定出现在 Change log 之中。其他情况(docschorestylerefactortestperfbuildcirevert)在我们项目中不会放入 Change Log 中

2)scope

scope用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。

3) subject

subject是 commit 目的的简短描述,不超过50个字符。

  • 主题和内容以一个空行分隔
  • 主题行结束不用标点
  • 主题行使用祈使语气
  • 仅使用必要的标点符号

Body

Body 部分是对本次 commit 的详细描述,可以分成多行。下面是一个范例。

1
2
3
4
5
6
7
More detailed explanatory text, if necessary.  Wrap it to 
about 72 characters or so.

Further paragraphs come after blank lines.

- Bullet points are okay, too
- Use a hanging indent

有3个注意点。

(1)使用第一人称现在时,比如使用change而不是changedchanges

(2)应该说明代码变动的动机,以及与以前行为的对比。

(3)应该默认你的读者不了解问题的初衷。

Footer 部分提供相关文章和其它资源的链接和第三方工具的关键字

注意点

  • 内容每行72个字
  • 永远不要认为大家都知道或理解最初的问题是什么,尽可能添加他的描述
  • 确保你的代码新人也能快速理解
  • 遵循团队的提交约定

参阅

Commit message 和 Change log 编写指南 - 阮一峰的网络日志

GitHub - conventional-changelog/commitlint: 📓 Lint commit messages

How to Write a Git Commit Message