Git Commit Log的小型团队最佳实践

随着团队的变大,最近在开发过程中,越来越感觉到commit log的重要性。之前的时候,团队内有人写中文log,有人写英文log;有人写的还算清晰,有人一笔更新bug就概括全貌。这些良莠不齐的commit log充斥在我们的项目中,不仅影响了查阅的效果,还会对code review产生负面的影响。因此,本文是意图从commit log的书写规范入手,并提供相应的解决方案。

注意:2016年1月6日,阮一峰老师写了一篇《Commit message 和 Change log 编写指南》,本文主要来源于这篇文章,只是针对我们的团队,进行了一些改造和简化,以及对一些阮老师没有提及的细小之处进行了指出。

1. 书写规范

经过一番调研,因为我们是小团队,需要快速迭代,容易上手,所以对阮老师提到的commit log规范进行了简化,具体如下:

<type>: <subject>
<body>

1.1 type

提交 commit 的类型,包括以下几种

  • feat: 新功能
  • fix: 修复问题
  • docs: 修改文档
  • style: 修改代码格式,不影响代码逻辑
  • refactor: 重构代码,理论上不影响现有功能
  • perf: 提升性能
  • test: 增加修改测试用例
  • revert: 回退,建议直接使用Github Desktop回退,而不是使用命令

1.2 subject

用一句话清楚的描述这次提交做了什么。书写要遵循以下四种规则:

  • 格式尽量使用谓宾,使用谓宾不通顺时,可以使用主谓,例如:
谓宾:修复xxxx
主谓:中间件支持xxxx
  • 除了名称之外,描述尽可能使用中文,方便不同开发者理解
  • 结尾不加句号
  • 描述控制在20个汉字以内

1.3 body

对本地提交的详细描述,不建议。我们建议多次少量提交,而不是一次巨量的提交,有助于revert和code review,也对灾难存储有容灾。

2. 撰写工具

有工具辅助,一定比手写好,这里我们使用Commitizen这个库。
安装命令:

cd 项目目录
npm install -g commitizen
commitizen init cz-conventional-changelog --save --save-exact
// 项目做些更改之后
git add .
git cz

安装完毕之后,使用git cz来代替git commit命令即可,新的commit log提交界面会如下所示:

写完了之后的commit log如下图所示:

是不是比之前的commit log看起来清晰很多?
注意:
git bash在windows下不能通过箭头符号上下移动选择,这时候我们可以下载Cmder来作为我们的命令行工具。

2. 使用问题

1. commit log 我用20个字描述不清楚怎么办?
我们期望尽可能多次的提交,一个feature提交一次,不要出现积攒多个feature提交情况,既不有利于code review,也不有利于代码revert

2. 为什么不使用强制验证手段来限制commit log的格式?
尽管没有使用自动化验证的手段(阮老师的文章中提到了,可以自行查看),但是如果不符合书写逻辑的话,code reviewer不应该让其merge request到dev分支中。这一块我觉得天猪说的很有道理,通过人工的手段去实现这种验证,这也是为了大家养成一个良好的代码习惯。

参考文档:

  1. Commit message 和 Change log 编写指南
  2. 代码贡献规范

汤姆C
tomczhang的专栏,我会在这个专栏中撰写我的思考,工作中遇到的问题和苦恼,每周一篇

职业提升三部曲:

4.5k 声望
792 粉丝
0 条评论
推荐阅读
项目经历准备篇——如何准备阿里巴巴P6/P7前端面试
在上次的校招文章之后,有很多同学问有没有社招相关的东西可以写一篇,现在它来了。比起校招,社招更加看重项目经历+项目经历反应的思考。本文针对的是想进入阿里的P6/P7同学,着重讲解了很多同学容易忽视的项目...

这是你的玩具车吗30阅读 3.6k评论 5

CSS 如何让auto height完美支持过渡动画?
欢迎关注我的公众号:前端侦探众所周知,高度在设置成auto关键词时是不会触发transition过渡动画的,下面是伪代码 {代码...} 效果如下如果希望展开时有过渡动画,例如这样通常是借助 JS 动态去获取元素的高度(还...

XboxYan17阅读 1.3k评论 2

封面图
那些不用js也能实现的效果
本文首发于公众号:GitWeb,欢迎关注,接收首发推文本文列举几个不需要使用js也能实现的效果一、页面回到顶部回到顶部是页面开发中很常见的一个功能,一般的做法是对回到顶部组件做一个监听,当用户点击的时候,...

阿山10阅读 632评论 4

封面图
前端开发工具
前端教程阿西河前端教程丨一个助你成为全栈开发的网站前端高手进阶JavaScript利用js实现表单的校验KeyCode 查询表现代 JavaScript 教程时间戳(Unix timestamp)转换工具HTML minifierJavaScript代码压缩-js代码压...

寒青14阅读 2.6k

英雄联盟比赛选手的六芒星能力图动画是如何制作的?
最近,在看 LPL 比赛的时候,看到这样一个有意思的六芒星能力图动画:今天,我们就来使用纯 CSS 实现这样一个动画效果!实现背景网格对于如下这样一个背景网格,最好的方式当然肯定是切图。如果一定要使用 CSS,...

chokcoco11阅读 556

封面图
你可能不知道的dialog弹窗
想必大家都知道 HTML5 中有 dialog 这样一个标签,顾名思义,就是“弹窗”。除了有良好的语义外,随着浏览器的不断更新迭代,还出现了许多你可能不知道的特性,快速了解一下吧~

XboxYan9阅读 904

封面图
学会了slidev.js的开发者, 也许可以考虑不用ppt了?
&ensp;&ensp;&ensp; 作为一个开发者, 每次使用PPT或者Word写简历或者述职都好痛苦啊, 这些App也不太适合展示代码, 但是今天来的家人们有福了, 一款叫做是slidev的库露出了邪魅的微笑 官网地址。

lulu_up7阅读 800

职业提升三部曲:

4.5k 声望
792 粉丝
宣传栏