2024-08-07    2024-08-07    650 字  2 分钟

规范一下 Git 的提交方式 ~

开始

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

<type>(<scope>): <subject>  // !Header
// 空一行
<body>                      // ?Body
// 空一行
<footer>                    // ?Footer

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

Header

其中, type 用于说明 commit 的类别,只允许使用下面 7 个标识。

- feat :新功能 feature
- fix/to :修补 bug
- docs :文档
- style :格式(不影响代码运行的改动)
- refactor :重构(即不是新增功能,也不是修改 bug 的代码改动)
- test :增加测试
- chore :构建过程或辅助工具的变动
- perf :优化相关
- revert :回滚
- merge :代码合并
- sync :同步主线或分支的 Bug

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

subject 是 commit 消息的简短描述,其有以下几个约定,如下:

  • 以动词开头,使用第一人称现在时,比如 change,而不是 changed 或 changes ;
  • 第一个字母小写;
  • 结尾不加句号。

Body 部分是对本次 commit 的详细描述,可以分成多行。

Footer 部分只用于两种情况:

  1. 不兼容变动;
  2. 关闭 Issue 。

关于 Revert 的情况

另,如果当前 commit 用于撤销以前的 commit ,则必须以 revert: 开头,后面跟着被撤销 Commit 的 Header 。

1
2
3
revert: feat(pencil): add 'graphiteWidth' option

This reverts commit 667ecc1654a317a13331b17617d973392f415f02.

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

工具

Commitizen 是一个撰写合格 Commit message 的工具。

npm install -g commitizen

# 现在你可以使用 git cz 、git-cz 或 cz 来取代 git commit   

# 初始化您的项目以使用 cz-conventional-changelog 适配器
# npm
commitizen init cz-conventional-changelog --save-dev --save-exact
# yarn
commitizen init cz-conventional-changelog --yarn --dev --exact
# pnpm
commitizen init cz-conventional-changelog --pnpm --save-dev --save-exact

conventional-changelog 是生成 Change log 的工具。

结语

可以使用上述给到的工具,也可以手动按照其规范格式书写。

参考