git-commit-message-如何写好

commit message

git commit message是我们经常要用到的东西,但是大部分人都写得很随便,翻git log也是不明觉厉.这里结合其他资料阐述一下如何写好一个commit message.

其实git commit message 不同的项目有不同的要求.比如Google Angular[1]的commit message

标题要加分类(refactor,docs),还有影响范围(*,$compiler),但是在Linux kernel 和类似的GNU style的项目里面是类似这样的”mm, tracing: unify mm flags handling in tracepoints and printk”,如果没有子系统要求开头大写.

这个根据具体的场景有不同的要求.但是核心就是简洁明了,使用

祈使句.

这样就能通过 git log --pretty=format:%s
来遍历所有的log message.

commit header

第一条规则因项目而异.

比如Angular的规则是:
(
):

type(必需),scope(可选)和subject(必需)

angular要求的type有几种

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

scope表示影响的范围,subject开头小写,使用祈使句,结尾不用.号.

但是在runc里面要求比较简单,使用祈使句并且开头大写就可以,结尾不带.号.

kernel的subject 如果带上子系统比如(mm),就要mm: 开头,然后不用大写.

不然也要开头大写.总之subject的部分要求有一些不同,但是body部分要求是类似的.

commit body

body要和header空格一行,每行不要超过72个字符,并且进行改动解释.

例如:

Summarize changes in around 50 characters or less

更详细的解释.限制到72个字符.和标题隔开一行.
有什么副作用或者后遗症也要指出.

如果有任务管理器,可以在结尾指定.

Resolves: #123
See also: #456, #789

例子

Angular

fix($compile): couple of unit tests for IE9

Older IEs serialize html uppercased, but IE9 does not...
Would be better to expect case insensitive, unfortunately jasmine does
not allow to user regexps for throw expectations.

Closes #392
Breaks foo.bar api, foo.baz should be used instead

GNU style

Author: Aleksa Sarai 
Date:   Sun Mar 13 04:53:20 2016 +1100

    libcontainer: add pids.max to PidsStats

    In order to allow nice usage statistics (in terms of percentages and
    other such data), add the value of pids.max to the PidsStats struct
    returned from the pids cgroup controller.

    Signed-off-by: Aleksa Sarai 

或者

Author: Alexander Morozov 
Date:   Fri Mar 27 10:50:32 2015 -0700

    Use syscall.Kill instead of p.cmd.Process.Kill

    We need this to unmask syscall.ESRCH error, which handled in docker and
    can be handled by other clients.

    Closes #457

    Signed-off-by: Alexander Morozov 

总之,一个好的commit message是一个好习惯,如果项目从一开始打commit message就很随便,那commit log的意义就没有了,导致根本没人会看.如果有意义整个代码就有据可查了,看起来也很漂亮.

参考:

  1. http://www.ruanyifeng.com/blog/

    2016/01/commit_message_change_log.html
  2. http://chris.beams.io/posts/git-commit/
稿源:yueyue.gao (源链) | 关于 | 阅读提示

本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » 后端存储 » git-commit-message-如何写好

喜欢 (0)or分享给?

专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录