17 February 2016
号外号外:我的新书《现代JavaScript库开发:原理、技术与实战》出版啦!!!快点我查看
号外号外:一组小而美的JavaScript迷你库!!!快点我查看
号外号外:猿辅导招聘前端,后端,客户端啦!地点:北京!!!快点我查看

最近维护GitHub上的一些开源项目,一直对git的提交信息格式一直是个头疼的问题,一直在思索如何组织好这个提交信息。

最近看了阮一峰老师的一篇关于提交信息规范的文章(见文章结尾参考资料),才让我恍然大悟。一般来说,commit message 应该清晰明了,说明本次提交的目的。

格式化的提交信息有诸多好处,本文将整理一套自己用的提交信息格式,并在以后的项目中应用起来。

格式

提交信息包括三个部分:HeaderBodyFooter

<Header>

<Body>

<Footer>

其中,Header 是必需的,Body 和 Footer 可以省略。

Header部分只有一行,包括俩个字段:type(必需)和subject(必需)。

<type>: <subject>

type

type用于说明 commit 的类别,可以使用如下类别:

  • feat:新功能(feature)
  • fix:修补bug
  • doc:文档(documentation)
  • style: 格式(不影响代码运行的变动)
  • refactor:重构(即不是新增功能,也不是修改bug的代码变动)
  • test:增加测试
  • chore:构建过程或辅助工具的变动

subject

subject是 commit 目的的简短描述。

  • 以动词开头,使用第一人称现在时,比如change,而不是changed或changes
  • 第一个字母小写
  • 结尾不加句号(。)

Body

Body 部分是对本次 commit 的详细描述,可以分成多行。下面是一个范例。

More detailed explanatory text, if necessary.  Wrap it to 
about 72 characters or so. 

Further paragraphs come after blank lines.

- Bullet points are okay, too
- Use a hanging indent

注意:应该说明代码变动的动机,以及与以前行为的对比。

Footer 部分只用于两种情况:

  • 关联 Issue
  • 关闭 Issue

关联 Issue

本次提交如果和摸个issue有关系则需要写上这个,格式如下:

Issue #1, #2, #3

关闭 Issue

如果当前提交信息解决了某个issue,那么可以在 Footer 部分关闭这个 issue,关闭的格式如下:

Close #1, #2, #3

例子

说了半天不给个例子都是瞎扯淡,下面是一个完整的例子:

feat: 添加了分享功能

给每篇博文添加了分享功能

- 添加分享到微博功能
- 添加分享到微信功能
- 添加分享到朋友圈功能

Issue #1, #2
Close #1

上面的提交信息应该能够自解释自己的意思了。

总结

上面的规范基本够自己用了,我会根据自己的需要,扩展这份规范,你也可以直接使用或者制定自己的规范,快来让我们的提交会说话吧。

参考资料

原文网址:http://yanhaijing.com/git/2016/02/17/my-commit-message/

微信公众号:颜海镜
关注微信公众号 颜海镜
微信支付二维码
赞赏支持 微信扫一扫


前端小武

前端小武 on 18 Feb 2016

赞赞赞~

颜海镜

颜海镜 on 18 Feb 2016

哈哈

aisin

aisin on 18 Feb 2016

不错,原来可以这么组织,之前提交写得太随意了

颜海镜

颜海镜 on 19 Feb 2016

还可以做的更好,加油吧

Highcharts中文网

Highcharts中文网 on 27 Mar 2016

如果当前提交信息解决了摸个issue, “摸个” 错别字哦

颜海镜

颜海镜 on 28 Mar 2016

感谢反馈,已解决

我心安处是吾乡

我心安处是吾乡 on 23 Jul 2016

能不能再举一个纯英文git message的例子。
还可以扩展如何在 github 上寻找好的(各种)范例

颜海镜

颜海镜 on 24 Jul 2016

英文差,你能帮忙来一个嘛?

Plortinus

Plortinus on 05 Dec 2016

commit的msg里面,第一个用表情,剩下的随意 呵呵

颜海镜

颜海镜 on 06 Dec 2016

会玩