commit message 规范
背景
Git每次提交代码都需要写commit message,否则就不允许提交。一般来说,commit message应该清晰明了,说明本次提交的目的,具体做了什么操作……但是在日常开发中,大家的commit message千奇百怪,中英文混合使用、fix bug等各种笼统的message司空见怪,这就导致后续代码维护成本特别大,有时自己都不知道自己的fix bug修改的是什么问题。基于以上这些问题,我们希望通过某种方式来监控用户的git commit message,让规范更好的服务于质量,提高大家的研发效率。
目的
- 统一团队
Git commit日志标准,便于后续代码 review,版本发布以及日志自动化生成等等。 - 统一团队的 Git 工作流,包括分支使用、tag 规范、issue 等
- 便于程序员对提交历史进行追溯,了解发生了什么情况。
- 一旦约束了commit message,意味着我们将慎重的进行每一次提交,不能再一股脑的把各种各样的改动都放在一个git commit里面,这样一来整个代码改动的历史也将更加清晰。
- 格式化的commit message才可以用于自动化输出Change log。
commit message格式
<type>(<scope>): <subject>
<blank line>
<body>
type(必须)
用于说明git commit的类别,只允许使用下面的标识。
- feat:新功能(feature)。
- fix:修复bug,可以是QA发现的BUG,也可以是研发自己发现的BUG。
- docs:文档(documentation)。
- style:格式(不影响代码运行的变动)。
- refactor:重构(即不是新增功能,也不是修改bug的代码变动)。
- perf:优化相关,比如提升性能、体验。
- test:增加测试。
- chore:构建过程或辅助工具的变动。
- revert:回滚到上一个版本。
- merge:代码合并。
- sync:同步主线或分支的Bug。
scope(必须)
- scope用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。例如项目包含多模块,admin、interface、task、job等
- 多个以
|分割。
subject(必须)
subject是commit目的的简短描述,不超过50个字符,中英文都行。
- 结尾不加句号或其他标点符号。
- 根据以上规范git commit message将是如下的格式:
fix(DAO):用户查询缺少username属性
feat(Controller):用户查询接口开发
feat(Controller):需求 483 业绩统计,支持区域经理查看下级人员数据
body(可选)
body 为主体内容
- 用新的空行将“标题”和“主体内容”隔开,Git 会自动识别第一行为摘要。
- 主体内容是commit目的的详细描述,可以放一些备注、说明等。
注:提交信息应该尽可能准确的描述本次提交内容。
最终效果

