每次提交代码到 Git 仓库时,都需要写 commit message。通常情况下,commit message 应该清晰明了,说明本次提交的目的和具体操作等。然而,在日常开发中,开发者们提交的 commit message 千差万别,中英文混用,导致后续代码维护成本很高,有时候甚至自己都不知道修复的是什么问题。因此,为了解决这些问题,我们希望通过一种方式来监控用户的 git commit message,以提高代码规范,提高开发效率。
commit message
我们要求所有项目的 Commit Log 都遵循一个精确的格式,以增加可读性,便于查看变更历史,并养成良好的 git 使用习惯。我们将这个规范作为 git hook 的 commit-msg 和 pre-receive 执行,不符合规范的 commit 无法提交。全面执行后,可以自动执行以下操作:
Commit Log 包含三个部分:header、body、footer。其中,header 是必需的,格式固定,body 在必要时用于详细解释变更。
commit log 格式如下:
<types>(<scopes>): <subject>
<空行>
<body>
<空行>
<footer>
注意:冒号后面必须有一个小写空格,types 和 scopes 可以是多个,中间用逗号分隔。
举例:
fix(service,dao): 修改产品类型时不过滤产品Type
仅header,涉及模块较多用*代替
refactor(*): 修改DTO模型前缀
有header和body
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
func(core,logic): 添加礼包审核
添加商品编辑审核状态和回调,blablablabla
PRD:https://km.sankuai.com/page/194127085
英文,小写。必须是以下中的一个或多个:
英文,小写。表示变更的包或模块范围,可以是多个组合,如果涉及范围较大,可以用*代替。各服务可以自行定义,组内同学可以轻易理解。通用 scope 列表如下:
除了上述通用字段外,各方向可以自行定义关键字。例如,以下是商品平台中定义的字段:
中文。简要描述修改,结尾不要有句号。
中文。修改的背景(为什么做这次修改),说明修改逻辑。
中文。可以放置需求 wiki 或 task 链接,对以后其他同学查看很有用。
commitizen
安装该插件后,在提交页面会有一个按钮
commitizen button
commitizen prompt
commitizen example
[1]
首发博客地址: https://blog.zysicyj.top/
[2]
系列文章地址: https://blog.zysicyj.top/categories/技术文章/后端技术/系列文章/开发规范/
本文由 mdnice 多平台发布