如何规范Git commit?
创建: 2024.05.17 08:17:32 字数: 0 图片: 0
我们为什么要规范 commit?
多人协作项目、个人版本控制在进行 Git 提交时,都需要写 commit message,否则 git push origin main
是不被允许的。 一般来说,commit message应该清晰明了,说明本次提交的目的,具体做了什么操作…… 但是在日常开发中,大家的commit message千奇百怪,中英文混合使用、fix bug等各种笼统的message司空见怪,这就导致后续代码维护成本特别大,有时自己都不知道自己的fix bug修改的是什么问题。 基于以上这些问题,本文希望通过某种方式来监控用户的git commit message,让规范更好的服务于质量,提高大家的研发效率。
规范建设
一开始,我希望借助前人已经约定好的规范进行本文的内容基础,但在寻找了大量关于 git commit -m [message]
的资料后,学习、结合了 Alibaba · 阿里巴巴、高德地图等相关部门已有的规范总结出以下规范。
Commit message格式
sh
<type>(<scope>):<subject>
字段含义
type
必写项
type 是 commit message 必须包含的内容,用于说明git commit的类别,只允许使用下面的标识。
feat
:新功能(feature)。fix/to
:修复bug,可以是QA发现的BUG,也可以是研发自己发现的BUG。fix
:产生diff并自动修复此问题。适合于一次提交直接修复问题to
:只产生diff不自动修复此问题。适合于多次提交。最终修复问题提交时使用fix
docs
:文档(documentation)。style
:格式(不影响代码运行的变动)。refactor
:重构(即不是新增功能,也不是修改bug的代码变动)。perf
:优化相关,比如提升性能、体验。test
:增加测试。chore
:构建过程或辅助工具的变动。revert
:回滚到上一个版本。merge
:代码合并。sync
:同步主线或分支的Bug。
scope
可选项
scope用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。
- 例如在
Angular
,可以是location
,browser
,compile
,rootScope
,ngHref
,ngClick
,ngView
等。如果你的修改影响了不止一个 scope,你可以使用*
号代替。
subject
可选项
subject是commit目的的简短描述,不超过50个字符。
- 建议使用中文(感觉中国人用中文描述问题能更清楚一些)。
- 结尾不加句号或其他标点符号。
总结
根据以上规范git commit message将是如下的格式:
sh
fix(DAO):用户查询缺少username属性
feat(Controller):用户查询接口开发
以上就是本文梳理的 git commit
规范,那么我们这样规范 git commit
到底有哪些好处呢?
- 便于程序员对提交历史进行追溯,了解发生了什么情况。
- 一旦约束了
commit message
,意味着我们将慎重的进行每一次提交,不能再一股脑的把各种各样的改动都放在一个git commit
里面,这样一来整个代码改动的历史也将更加清晰。 - 格式化的
commit message
才可以用于自动化输出Change log
。