规范
- 切忌一次大量提交代码,每次fix或feat一个功能即需要提交到本地,可以不提交到远程
- 提交代码前必须先拉代码
- 一般情况下不得强制提交
- 一个新功能拉取单独的分支开发,开发完后再合并到主分支上
- 禁止无意义说明提交
- 通常需要每天下班前推送本地仓库到远程仓库中
一、背景
每次提交代码到Git仓库时,都需要写commit message。通常情况下,commit message应该清晰明了,说明本次提交的目的和具体操作等。然而,在日常开发中,开发者们提交的commit message千差万别,中英文混用,导致后续代码维护成本很高,有时候甚至自己都不知道修复的是什么问题。因此,为了解决这些问题,我们希望通过一种方式来监控用户的git commit message,以提高代码规范,提高开发效率。
二、约定
我们要求所有项目的Commit Log都遵循一个精确的格式,以增加可读性,便于查看变更历史,并养成良好的git使用习惯。我们将这个规范作为git hook的commit-msg和pre-receive执行,不符合规范的commit无法提交。全面执行后,可以自动执行以下操作:
- 平台工具包可以直接根据commit log生成每次版本的changelog。
- 上线申请系统可以自动附带本次上线的commit log。
- 要求每次提交都认真思考,保持commit log的整洁性,每次commit都要具有局部完整性。
三、Commit Log Format
Commit Log包含三个部分:header、body、footer。其中,header是必需的,格式固定,body在必要时用于详细解释变更。
commit log格式如下:
xml
<types>(<scopes>): <subject>
<空行>
<body>
<空行>
<footer>
注意:冒号后面必须有一个小写空格,types和scopes可以是多个,中间用逗号分隔。
举例:
- 仅header:
scss
fix(service,dao): 修改产品类型时不过滤产品Type
仅header,涉及模块较多用*代替
less
refactor(*): 修改DTO模型前缀
有header和body
javascript
fix(language-service): Improve signature selection for pipes with args
Pipes with arguments like `slice:0` or `slice:0:1` should not produce
diagnostic errors.
有header、body、footer
go
func(core,logic): 添加礼包审核
添加商品编辑审核状态和回调,blablablabla
PRD:https://km.sankuai.com/page/194127085
1、Type
英文,小写。必须是以下中的一个或多个:
- func: function,小功能。注意:feat改成func了,避免大家按feature这个大粒度来提交,期望是按小功能点分批提交,另外避免跟feature分支规范混淆。
- fix: bug修复,包括编码过程中的逻辑修复,不特指线上bug修复。
- refactor: 重构代码,非bug修复和性能优化,包括编码过程中的代码结构调整,不特指重构项目。
- impr: improvement,小的代码设计改进。
- perf: 性能优化。
- apm: 仅监控打点、异常日志处理相关。
- chore: 无关紧要的改动,例如删除用不到的注解、调整日志内容等。
- jvm: 仅JVM参数变更。
- pom: 仅依赖和版本变化。
- conf: 仅配置变化,Spring配置、properties文件。
- docs: 仅文档变更。
- style: 代码格式调整,如import清理,代码格式化。
- test: 单测和自动化case相关。
- typo: 修复小的拼写错误。
- wip: work in progress,少用,用于开发中的不完整提交,新工程开始时偶尔使用。
2、Scope
英文,小写。表示变更的包或模块范围,可以是多个组合,如果涉及范围较大,可以用*代替。各服务可以自行定义,组内同学可以轻易理解。通用scope列表如下:
- dto: dto结构变化。
- core: core包。
- service: service层代码。
- dao: dao层代码。
- sql: sql代码变更。
除了上述通用字段外,各方向可以自行定义关键字。例如,以下是商品平台中定义的字段:
- price: 价格相关。
- stock: 库存相关。
- product: 商品相关。
- idl: IDL文件变化。
3、Subject
中文。简要描述修改,结尾不要有句号。
4、Body
中文。修改的背景(为什么做这次修改),说明修改逻辑。
5、Footer
中文。可以放置需求wiki或task链接,对以后其他同学查看很有用。
四、使用插件生成日志
安装该插件后,在提交页面会有一个按钮
本文由mdnice多平台发布