Skip to main content

Git commit规范

commit messga的格式

commit message分为三部分:HeaderBodyFooter

格式如下:

[type]([scope]): [subject]
// 空一行
[body]
// 空一行
[footer]

注意

[type]([scope]): [subject]的冒号后面,是有一个空格的。
[body][footer]部分是可选的,有需要才写。

Header部分包括三个字段:type(必需)、scope(可选)和subject(必需)。

type

type用于标识commit的类型,一般有以下几种类型:

  • feat 新功能
  • fix 修复bug
  • style 修改代码格式(不影响代码运行的改动)
  • chore 与代码功能逻辑无关、构建过程或者辅助工具的改动
  • docs 编写文档、补充注释
  • refactor 重构代码
  • test 单元测试等

scope

scope用于标识提交的代码所影响的范围。
比如修复Gitlab上的issue记录的bug,可以把issue id作为scope。

subject

subject是一个简短的描述,用于说明本次commit的目的。有以下几个要求:

  • 字符长度不要超过50
  • 以动词开头
  • 结尾不加.

Body

body用于详细说明本次commit的相关情况。可进行换行书写。
以下是body示例:

本次功能的优化,有以下几个点
- 修复了某问题,避免引起某现象误导用户
- 改变了某功能逻辑,修改后,功能的代码逻辑更加清晰,如有疑问,请咨询xxx

注意以下两点:

  • 使用第一人称进行描述
  • 说明修改代码的动机,与旧代码有什么不同

footer 用于以下两种特殊情况,一般情况下是不用书写的。

不兼容的代码变动

footer部分以BREAKING CHANGE:开头,后面进行变动的描述和注意事项。

BREAKING CHANGE: 修改了工具XX暴露方法。
新版工具需要使用 Tool.XX 的方式进行调用。

关闭Issue

当前commit的修改,是针对某个issue,则使用以下格式进行说明。

Close #Issue ID

比如Close #79表示,关闭 ID 为 79 的 Issue。

参考