Git Commit message 规范

呼延永新
2023-12-01

介绍

在 Git 中,每次提交代码,都要写 Commit message(提交说明),否则就不允许提交。这个操作将通过 git commit 完成。

git commit -m "芜湖~起飞"

上面代码的-m参数,就是用来指定 commit message 的。

如果一行不够,可以只执行 git commit ,就会跳出文本编译器,让你写多行。

git commit

但是很显然的问题像 芜湖~起飞 这样没有规范的commit message,我们并没有办法去快速的了解此次提交的目的究竟是什么。所以,我们需要学习了解并落实commit message规范。

格式

Commit message 包括三个部分:Header,Body 和 Footer。可以用下方的格式表示它的结构。

<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>

其中,Header 是必需的,Body 和 Footer 可以省略(默认忽略),一般我们在 git commit 提交时指定的 -m 参数,就相当于默认指定 Header。

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

Header

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

  • type
    用于说明 commit 的类别,只允许使用下面8个标识。
  • feat:新功能(feature)
  • fix:修补bug
  • docs:文档(documentation) 比如README, CHANGELOG, CONTRIBUTE等
  • style:代码格式化(仅仅修改了空格、格式缩进、逗号等,不改变代码逻辑)
  • refactor:重构(即不是新增功能,也不是修改bug的代码变动)
  • perf: 优化相关,比如提升性能、体验
  • test:测试用例,包括单元测试、集成测试等
  • chore:改变构建过程或增加依赖库、辅助工具等
  • revert: 回滚代码
  • scope
    用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视仓库不同而不同。
    也可以作为相关模块或组件的类型、名称。例如:

fix(css): 修改 起飞按钮 样式
chore(deps): 更新 moment 至 2.24.0 版本
chore(build): 修改生产环境命令配置

  • subject
    是 commit 目的的简短描述,不超过50个字符。
  • 以动词开头,使用第一人称现在时,比如"新增"、“修复”、“更改”、“优化”
  • 第一个字母小写
  • 结尾不加句号(.)

Body

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

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

有两个注意点。

  • 使用第一人称现在时,比如使用"新增"、“修复”、“更改”、“优化”。
  • 应该说明代码变动的动机,以及与以前行为的对比。

Footer

Footer 部分只用于两种情况。

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

  • 关闭 Issue 或者 bug
    如果当前 commit 针对某个 issue 或者 bug ,那么可以在 Footer 部分关闭。

Closes #234

也可以一次关闭多个。

Closes #123, #245, #992

Revert

还有一种特殊情况,如果当前 commit 用于撤销以前的 commit,则必须以revert:开头,后面跟着被撤销 Commit 的 Header。

revert: feat: 新增了起飞组件
This reverts commit 667ecc1654a317a13331b17617d973392f415f02.

Body部分的格式是固定的,必须写成This reverts commit <hash>,其中的hash是被撤销 commit 的 SHA 标识符。

常用示例

feat

feat: 新增了起飞组件

fix

fix: 修复 起飞按钮失效的问题 (#12345)
fix: 修复 起飞按钮失效,导航栏显示异常的问题(#12345,#12346)

docs

docs: 更新 README文档

style

style: 删除 起飞组件多余空格

refactor

refactor: 重构 起飞组件

perf

perf: 优化 起飞页面性能

test

test: 新增 起飞组件 测试用例

chore

chore(deps): 更新 moment 至 2.24.0 版本
chore(build): 修改生产环境命令配置

revert

revert: feat: 新增了起飞组件
This reverts commit 667ecc1654a317a13331b17617d973392f415f02.

参考链接

 类似资料: