Skip to main content

Git Commit 规范提交

· 4 min read
Zeffon Wu

之前看了阿里技术公众号里的一篇推文《如何规范你的 Git commit?》,瞬间联想自己以前杂乱无章的 commit。自我感觉这篇文章简直就是美味佳肴。今天重新使用博客来记录一下。

前文

初期我们在互联网上搜索了大量有关 git commit 规范的资料,但只有 Angular 规范是目前使用最广的写法,比较合理和系统化,并且有配套的工具(IDEA 就有插件支持这种写法)。最后综合阿里巴巴高德地图相关部门已有的规范总结出了一套 git commit 规范。

其实阮老师之前也写过《Git commit 的规范》

正文

主要来自阿里技术公众号的推文《如何规范你的 Git commit?》

规范格式

commit message 格式

<type>(<scope>): <subject>

格式说明

type(必须)

用于说明 git commit 的类别,只允许使用下面的标识。

type 类型描述
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,compile,rootScope, ngHref,ngClick,ngView 等。如果你的修改影响了不止一个 scope,你可以使用*代替。

subject(必须)

subject 是 commit 目的的简短描述,不超过50个字符。

建议使用中文(感觉中国人用中文描述问题能更清楚一些)。

结尾不加句号或其他标点符号。

根据以上规范 git commit message 将是如下的格式:

fix(DAO):用户查询缺少username属性
feat(Controller):用户查询接口开发

规范的好处

  • 便于程序员对提交历史进行追溯,了解发生了什么情况。
  • 一旦约束了 commit message,意味着我们将慎重的进行每一次提交,不能再一股脑的把各种各样的改动都放在一个 git commit 里面,这样一来整个代码改动的历史也将更加清晰。
  • 格式化的 commit message 才可以用于自动化输出 Change log。