随着团队的变大,最近在开发过程当中,愈来愈感受到commit log的重要性。以前的时候,团队内有人写中文log,有人写英文log;有人写的还算清晰,有人一笔更新bug就归纳全貌。这些参差不齐的commit log充斥在咱们的项目中,不只影响了查阅的效果,还会对code review产生负面的影响。所以,本文是意图从commit log的书写规范入手,并提供相应的解决方案。
注意:2016年1月6日,阮一峰老师写了一篇《Commit message 和 Change log 编写指南》,本文主要来源于这篇文章,只是针对咱们的团队,进行了一些改造和简化,以及对一些阮老师没有说起的细小之处进行了指出。javascript
通过一番调研,由于咱们是小团队,须要快速迭代,容易上手,因此对阮老师提到的commit log规范进行了简化,具体以下:html
<type>: <subject> <body>
提交 commit 的类型,包括如下几种java
用一句话清楚的描述此次提交作了什么。书写要遵循如下四种规则:git
谓宾:修复xxxx
主谓:中间件支持xxxx
对本地提交的详细描述,不建议。咱们建议屡次少许提交,而不是一次巨量的提交,有助于revert和code review,也对灾难存储有容灾。npm
有工具辅助,必定比手写好,这里咱们使用Commitizen这个库。
安装命令:windows
cd 项目目录 npm install -g commitizen commitizen init cz-conventional-changelog --save --save-exact // 项目作些更改以后 git add . git cz
安装完毕以后,使用git cz来代替git commit命令便可,新的commit log提交界面会以下所示:bash
写完了以后的commit log以下图所示:工具
是否是比以前的commit log看起来清晰不少?
注意:
git bash在windows下不能经过箭头符号上下移动选择,这时候咱们能够下载Cmder来做为咱们的命令行工具。性能
1. commit log 我用20个字描述不清楚怎么办?
咱们指望尽量屡次的提交,一个feature提交一次,不要出现积攒多个feature提交状况,既不有利于code review,也不有利于代码revert测试
2. 为何不使用强制验证手段来限制commit log的格式?
尽管没有使用自动化验证的手段(阮老师的文章中提到了,能够自行查看),可是若是不符合书写逻辑的话,code reviewer不该该让其merge request到dev分支中。这一块我以为天猪说的颇有道理,经过人工的手段去实现这种验证,这也是为了你们养成一个良好的代码习惯。