点击蓝色“奔跑吧攻城狮”关注我哟git
加个“星标”,每天和你一块儿奔跑程序员
做为一名优秀的程序员,做为一个优秀的团队,做为一家优秀的软件公司,不可能不用版本控制工具。
web
那么请问,你以为你填写 commit 信息以后,过一周、一个月、一季度甚至是一年以后,你还能看得懂当初作过的提交吗?当一个新同事来修改bug,请教你为何会这么修复的时候,你脑海里是否还能浮现当初深思的场景呢?后端
我在前公司工做那几年,代码提交信息都是有严格要求,有统一的格式。在提交代码以前,会经过另外一位同事的协做(即 code review),审查你修复的大体内容,而后填上相应的修改信息才能入库。微信
这样的好处是什么呢?就是能在下一个bug出来以后,很好地往回追溯,以确认是你修改引入,仍是考虑不全,仍是修改无效等。网络
这样能更好地提升你写代码的能力,当你敲下键盘的时候,能考虑更多,能想得更多,更严谨。并且,还能在复盘的时候,有依可循,你以为呢?app
在那里3年的时光,让我养成了提交详细信息的习惯。因此,当今天看到这篇外文,我饶有兴趣地点进去阅读,想知道歪果仁是如何作好一个优秀的 commit 信息,读完以后,相信你也能收获更多。编辑器
先来看看我作的原文翻译:工具
中止编写糟糕的提交信息
开始遵循Git提交信息的最佳实践学习
做者:Devin Soni
时间:1月8日
咱们都见过…
你正在开发一个项目,用到了Git版本控制工具。
你刚完成了一个代码修改,但愿快速地更新到你所在的分支。
这时候,你打开终端,快速敲了几个命令,就能够把你更新的信息更新到远程分支。
用到的命令以下:
gid add
git commit -m "added new feature"
git push
可是,当你作了一些测试,结果发现你的代码中还存在一个bug。不用担忧--你很快就解决它,而且又作了一次提交去修复这个bug。
git add
git commit -m "fix bug"
git push
当你重复这个过程好几回,就会获得一个提交日志,以下所示:

此时,这对你来讲彷佛挺好的。
毕竟,你持续在作,并且你能够轻松地解释你在作什么--即便信息没有很清楚地传达。
这个问题
几个月过去了,如今,另外一个开发人员正在看你所作的更改。
他们试图去裂解更改的高级细节,可是因为提交的描述信息有限,他们没法收集任何信息。
而后,他们去阅读每一个提交的差别信息。然而,即便这样作了,他们仍然不能识别出你在实现中当时作的思考过程。
如今,因为软件工程是一个协做过程,并且存在git blame操做,因此他们会找出是谁作了修改,并开始向你咨询关于你的实现问题。
而后,由于时间过去好久,你也记不了多少信息。你经过提交记录查看,可是也仍是记不得在项目中实现这个修复背后的思想逻辑。
你给你同事发了一个很遗憾的表情,很遗憾的告诉他们,除了他们看到的提交信息,你也不能提供更多有效的信息了。
编写良好的提交信息
但愿上面讲的实际状况,能很好的说明为何编写良好的、信息丰富的git提交信息很重要。
在一个像软件工程同样须要协做的领域,咱们必须使合做者很容易地在咱们的工做中快速获取到相应的上下文联想信息。
在理想状况下,一个优秀的提交信息应该由三部分组成--主题、正文和结束行。
主题
主题应该单独成行,写上你提交记录的概要信息。
他应该是祈使句,以大写字母开头,不用句号结尾,字数不能超过50个字符。(这是英文要求,咱们中文提交能够作参考,甚至也用英文来写提交信息)
一个好的主题能够完成This commit will…这样的理解(同理,中文就是:这个提交将…:)
一个优秀的提交信息,好比“add new neural netword model to back-end”,(中文:向后端添加新的神经网络模型),这样就很好地完成了这个句子
一个糟糕的提交信息,例如“fix bug”(你中招了吗?)这个就不能很好的完成句子,从而产生“This commit will fix bug”(这个提交将修复bug),这样尴尬的字面理解。
内容
正文包含消息的主要内容,你能够在其中详细描述有关更改的信息。也请注意,对弈一些很是小的提交,好比修复一个输入错误,你可能不须要正文,由于主题已经提供了足够的信息。
在正文中,你应该更详细地介绍你所作的修改,并解释你所作修改的上下文内容。
你能够解释为何要进行这些修改,为何要选择以这种方式实现这些修改,以及其余任何能帮助别人理解你思考过程的内容。
尽可能不要重复那些从diff中的代码修改中能够很明显理解的内容,没有必要逐行解释你的修改。更多的关注更高层次的细节,这些细节可能在阅读代码时并不明显。咱们的最终目的是为围绕这个变动的开发过程提供上下文信息,主要是关注其动机和目标。
结束行
最后,结束行是提交信息的最后一行。
这里能够放置关于提交的有用的元数据,好比 JIRA单号、GitHub issue号,做者姓名,以及其余连接等。这有助于将你修改相关的重要信息连接在一块儿。(我我的的习惯,加上日期)。
结语
很高兴你和我一块儿学习完了,请问此时的你什么感想?这里遇到的问题,你是否曾经遇到过。
若是是,说明你还有很大的提高空间,你修改bug,回溯问题的效率还能更高;若是你已经在作了,那么恭喜你,请继续保持。
做为程序员,基本上天天都在用版本控制工具,编写良好的 commit 日志是对本身负责,也是对项目负责,能让你事半功倍,实践起来!
做者简介:跃哥,前菊厂Android攻城狮,现游戏公司Java主程,奔跑中的技术人!

3、2019元年,110篇原创精华整理,不再用查找历史记录啦!

本文分享自微信公众号 - 程序员小跃(runningdimple)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。