image.png

导读:commit message应该如何写才更清晰明了?团队开发中有没有遇到过让人头疼的git commit?本文分享在git commit规范建设上的实践,规定了commit message的格式,并通过webhook在提交时进行监控,避免不规范的代码提交。

背景

Git每次提交代码都需要写commit message,否则就不允许提交。一般来说,commit message应该清晰明了,说明本次提交的目的,具体做了什么操作……但是在日常开发中,大家的commit message千奇百怪,中英文混合使用、fix bug等各种笼统的message司空见怪,这就导致后续代码维护成本特别大,有时自己都不知道自己的fix bug修改的是什么问题。基于以上这些问题,我们希望通过某种方式来监控用户的git commit message,让规范更好的服务于质量,提高大家的研发效率。

规范介绍

首先我们可以看下AngularJS 的规范,它是由 Google 推出的一套提交消息规范标准,也是目前使用范围最广的规范。有一套合理的手册也较为系统化;并且还有配套的工具可以供我们使用。

说白了,规范就是用工具进行强约束。规范执行方案如下:
image.png
既然有了方案,就会按照某些规则执行,以下是 Google AnguarJS 规范的要求:

规范目标

  • 允许通过脚本生成 CHANGELOG.md
  • 可以通过范围的关键词,快速的搜索到指定版本
git log HEAD --grep feat(package.json) # 在package.json文件里新增的特性。

格式要求

<type>(<scope>): <subject>
  <BLANK LINE>
      <body>
  <BLANK LINE>
<footer>
  • 消息只占用一行,任何行都不能超过 100 个字符
  • 允许使用 GitHub 以及各种 Git 工具阅读消息
  • 提交消息由页眉、正文和页脚组成,由空行分隔

<type>

代表某次提交的类型,比如是修复一个 bug 或是增加一个 feature,类型如下:
image.png
<scope>

范围可以是指定提交更改位置的任何内容,如:

  • 对 package.json 文件新增依赖库,chore(package.json): 新增依赖库
  • 或对代码进行重构,refacto(weChat.vue): 重构微信进件

<subject>

如果没有更合适的范围,可以直接写提交内容
image.png

规范建设

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

commit message格式

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

image.png

总结

编码规范、流程规范在软件开发过程中是至关重要的,它可以使我们在开发过程中少走很多弯路。Git commit规范也是如此,确实也是很有必要的,几乎不花费额外精力和时间,但在之后查找问题的效率却很高。作为一名程序员,我们更应注重代码和流程的规范性,永远不要在质量上将就。


码农架构
37 声望10 粉丝

码农架构