Git - Commit 规范
...大约 3 分钟
规范化的 git 提交信息便于阅读和查找,本文介绍Angular 规范 (谷歌文档)
规范化格式
<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>
注意
Header
: 必需;Body
, Footer
: 可省略
每行不超过 72 或 100 字符以防自动换行
Header
type: 提交的类型
type | 描述 |
---|---|
feat | 新功能(feature) |
fix | 修补 bug |
docs | 文档(documentation) |
style | 格式(不影响代码运行的变动) |
refactor | 重构(即不是新增功能,也不是修改 bug 的代码变动) |
test | 增加测试 |
chore | 构建过程或辅助工具的变动 |
注意
若类型为feat
或fix
,则必须出现在Change Log
中,其它改动建议不放入Change Log
scope: 说明提交影响的范围
例如:数据层、控制层、视图层,$location
, $browser
, $compile
, $rootScope
, ngHref
, ngClick
, ngView
等
视项目不同而变化
提示
若修改影响不止一个scope
,可使用*
代替
subject: 改动目的的简短描述
要求:
- 以动词开头,时态为第一人称现在时
- 首字母小写
- 不加句末标点
Body: 本次提交的详细描述
要求:
- 注意第二行是空行
- 以动词开头,时态为第一人称现在时
- 应该说明变动的动机,以及与之前的对比
示例:
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
只在两种情况下出现:
- 不兼容变动:
BREAKING CHANGE
开头,内容为变动的描述、变动理由、迁移方法 - 关闭 Issue:针对某个或多个 Issue,内容为
Closes #issueId
示例:
BREAKING CHANGE: isolate scope bindings definition has changed.
To migrate the code follow the example below:
Before:
scope: {
myAttr: 'attribute',
}
After:
scope: {
myAttr: '@',
}
The removed `inject` wasn't generaly useful for directives so there should be no code using it.
特殊情况: Revert
当前 commit 用于撤销以前的 commit, 则必须以revert:
开头,后面跟着被撤销 commit 的 <Header>
示例:
revert: feat(pencil): add 'graphiteWidth' option
This reverts commit 667ecc1654a317a13331b17617d973392f415f02.
规范化 commit 的优点
可以快速查找信息:如使用git log --grep [正则表达式]
快速查看改动
规范化撰写工具:commitizen
安装与配置
安装(全局)
npm
npm install -g commitizen
yarn
yarn add -g commitizen
pnpm
pnpm add -g commitizen
配置(在项目文件夹下)
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
使用
用cz
或git cz
代替git commit
即可
Powered by Waline v3.3.2