Commit规范
Commit规范
遵循commit规范是一件很重要的事,不仅更规范,而且也方便其他人查看git记录,所以这篇博客就用来浅记一下commit需要遵循的基本规范。
commit格式
在 Angular 规范中,Commit Message 包含三个部分,分别是 Header、Body 和 Footer,格式如下:
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
其中,Header是必需的,Body和Footer可以省略。在以上规范中,scope
必须用括号 () 括起来, <type>(<scope>])
后必须紧跟冒号 ,冒号后必须紧跟空格,2 个空行也是必需的。
Header
Header 部分只有一行,包括三个字段:type(必选)、scope(可选)和 subject(必选)。
type
常见的type如下所示:
feat: 新特性
fix: 修改问题
refactor: 代码重构
docs: 文档修改
style: 代码格式修改, 注意不是 css 修改
test: 测试用例修改
chore: 其他修改, 比如构建流程, 依赖管理.
pref: 性能提升的修改
build: 对项目构建或者依赖的改动
ci: CI 的修改
revert: revert 前一个 commit
如何确定一个commit所属的分类呢,具体可以参照下面这张图:
scope
用来说明 commit 的影响范围。显然,不同项目会有不同的 scope。在项目初期,可以设置一些粒度比较大的 scope,比如可以按组件名或者功能来设置 scope;后续,如果项目有变动或者有新功能,可以再用追加的方式添加新的 scope。
scope 不适合设置太具体的值。太具体的话,一方面会导致项目有太多的 scope,难以维护。另一方面,开发者也难以确定 commit 属于哪个具体的 scope,导致错放 scope,反而会使 scope 失去了分类的意义。
subject
subject 是 commit 的简短描述,必须以动词开头、使用现在时。比如,可以用 change,却不能用 changed 或 changes,而且这个动词的第一个字母必须是小写。通过这个动词,可以明确地知道 commit 所执行的操作。此外还要注意,subject 的结尾不能加英文句号。
当然这里是英文的subject,我们在公司里面一般会使用中文,就没有这么多规矩了,不过最好也是动词开头,比如:修改了xxx。
Body
Body 部分可以分成多行,而且格式也比较自由。不过,和 Header 里的一样,它也要以动词开头,使用现在时。此外,它还必须要包括修改的动机,以及和跟上一版本相比的改动点。
Footer
Footer 部分不是必选的,可以根据需要来选择,主要用来说明本次 commit 导致的后果。在实际应用中,Footer 通常用来说明不兼容的改动和关闭的 Issue 列表,这个目前看来最不常用。
正确commit样例
fix(release/fix): 修复了商品库存显示错误的bug
添加新的id检索条件,使库存关联到地区,避免库存获取错误。
Reviewed-by: Lemon
Refs #133