规范一下 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 部分只用于两种情况:
- 不兼容变动;
- 关闭 Issue 。
关于 Revert 的情况
另,如果当前 commit 用于撤销以前的 commit ,则必须以 revert:
开头,后面跟着被撤销 Commit 的 Header 。
|
|
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 的工具。
结语
可以使用上述给到的工具,也可以手动按照其规范格式书写。