Git 是市面上最流行的版本控制工具,书写良好的代码提交规范能大大提高代码维护的效率,日常开发中使用 git 提交代码要求一定要写 git commit message,否则就无提交代码,很多公司对 git commit message 的格式没有一个明确的规范,导致各个开发人员随意填写提交信息、风格迥异,在项目中引入 git commit 规范已迫在眉睫
Angular 的代码提交规范
目前,社区中有很多 Commit message 的写法规范,本文介绍 Angular规范
,这是目前使用比较广的一种代码规范,并且在 IDE 中有配套的工具
在 Angular 的代码提交规范中,一条完整的提交信息分为 header
、body
、footer
三部分,格式如下
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
完整提交信息示例
fix(用户模块): 修复登录接口npe异常
原因:登录接口查找不到用户时报npe异常
解决方案:增加 if null 判断,当用户不存在时返回提示信息,内容:用户不存在
Fixes https://zentao.hxy.com/zentao/bug-view-123.html
Header
常用的 git 客户端工具,在查看 git log 的时候,往往只会显示 git commit message 第一行的内容,header 的作用就是规范第一行的内容,使我们在浏览 git log 的时候,能一眼就看出每次 commit 的内容
规范中将 header 分为 type
、scope
、subject
三部分,下面分别对这三部分进行讲解
type
type
用于说明本次 commit 的类型,必须是以下枚举值:
feat
: 提交新功能,feature 的缩写fix
: 修复bugdocs
: 文档改动style
: 不涉及代码逻辑的改动,如增加空格、代码格式化、增加分号等refactor
: 对原有代码进行重构,即不增加新功能,又不修复 bugperf
: 改进代码性能的修改,performance 的缩写test
: 增加/修改现有测试用例chore
: 对构建过程、辅助工具或依赖库的更改
scope
scope
指代码提交影响范围,如 控制层
、业务层
、数据层
等,也可以按业务划分,视项目不同而不同,当提交影响了多个范围,可以使用 * 号代替,如果觉得不知道怎么区分范围,可以省略,因为 scope 是一个可选项
subject
subject
是 commit 目的的简短说明,一般不超过 50 个字
完整的 header
示例如下
feat(用户模块): 添加登录接口
type=feat、scope=用户模块、subject=添加登录接口
Body
body
是对本次提交的详细描述,可以分成多行,下面是一个示例
1. 登录接口使用 md5 + 随机盐加密
2. 登录成功返回用户信息
Footer
footer
部分只用于以下两种情况:
- 当当前代码与上一个版本不兼容时,用
BREAKING CHANGE:
开头,后面跟着兼容性变更信息
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.
- 如果当前 commit 针对某个 issue,那么可以在 Footer 部分关闭这个 issue,也可以关闭多个 issue。由于公司开发往往没有 issue,所以我这里根据具体情况将关闭 issue 改为 修复bug
Fixes https://zentao.hxy.com/zentao/bug-view-1209.html
// 关闭issue则为 CLose #123,#232
Git Commit Template 插件
Git Commit Template 插件是 IDEA 提供的基于 Angular 代码提交规范的插件,可以帮我们自动生成提交信息模版
安装
安装很简单,直接在 plugins 搜索 Git Commit Template 安装就可以了
使用
安装完重启 IDEA,在提交代码页面就会多处如下的图标
点击图标会弹出一个提交信息模板弹窗,只需要在弹窗填写对应信息就能帮我们自动生成 commit message,很是方便