相信大家在自己项目的历史提交里面看到类似的提交记录 我还见过更加糟糕的,类似这样
1 2 |
|
这样的提交信息的问题在于不表意,没有简要的说明修改的内容,为什么要这样的修改,别人只能去查看具体的代码改动才能知道发生了什么,但是可能无法知道为什么这样修改。当然,这样的提交我自己也写过,原因包括
1. 语法、拼写错误,羞于示人
2. 解释原因得写很长,懒的敲键盘
3. 无法解释为什么这样的修改就能work
这其实算是一种比较不负责任的行为,估计别人看到会比较崩溃,幸运的是还没有领导看到,所以至今没有被开除。举个例子,假设某个提交引起了产品环境的错误,别人需要迅速定位是哪个提交引起的问题,但是如果提交都是类似Perfectly complete a new story
,而且每次代码修改的量都比较庞大,那就得花很多时间才能定位。相反如果提交信息很清晰,BAU-1008 add xxx form in xxx page. :pear: Kevin
。你用git log --oneline --after "Aug 10 2016"
可以迅速看到对应的提交,进一步的可以查看修改内容再查找具体的问题。
今天早上客户跟我们一起做了一个关于如何有效的提交git commit
信息。他提到了git commit message
的7个规则。他认为从项目维护性的角度考虑,应当注意提交的信息以及规范。一个项目的提交信息首先得从下面三个方面达成一致:
- 格式。消息体的格式,如Markdown,语法应该是什么样子,大写的规则等。
- 内容。提交的信息中应当包含什么,不应当包含什么。
- 元数据。问题跟踪的ID(Jira,Leankit等)要不要引用,PR的sha code要不要引用。
具体的规则有下面7点:
- 用空行将内容和主题分开
- 提交的主题限制在50个字符
- 主题首字母大写
- 主题结尾不要使用句号
- 主题需要使用祈使/肯定语气
- 内容每72个字符换行
- 在内容中解释清楚修改的原因及方式
第一条,如果内容和主题没有分开,git log --oneline
主题和下面的内容会一起显示。
第二条,主题超过50个字符时超过的部分在github上显示为...
,提交PR的时候超过的部分会被折断到comments中,很烦人。用vim去编辑提交信息的时候,如果看到主题的字的颜色变化了,就说明超过了50个字符。
第三、四条不评价,感觉更多是从美观和规范上统一的。
第五条,感觉这样可以少写一些字,而且和git 缺省的提交信息,如revert的提交信息一致。
1 2 3 |
|
第六条,因为git不会帮你wrap文字,所以得手动的来做这个事情,这里可以借助一些编辑器,如VI的帮助。 第七条,个人觉得这个才是最重要的,解释清楚修改的原因以及方式,引用别人文章里面的一个例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
- 新建
~/.gitmessage
这个template文件并且填入自定义模板:
1 2 3 4 5 6 7 8 |
|
配置完成后在项目中做修改,git ci -a
就可以在模板的基础上修改了。
举一个项目中的一个例子,里面包含了业务需求的github issue的链接:
1 2 3 4 5 6 7 |
|
如果是用Pull Request方式工作的话,麻烦的地方在于修改的原因可能还得在comments里面再写一遍。解决的办法是创建issue/PR的template,参考这里。
什么,你问我为什么还没有被开除么? 因为领导不看提交 :)