导语:任何软件项目都是一个协做项目,它至少须要2个开发人员参与,当原始的开发人员将项目开发几个星期或者几个月以后,项目步入正规。不过他们或者后续的开发人员仍然须要常常提交一些代码去修复bug或者实现新的feature。咱们常常有这种感觉:当一个项目时间过了好久以后,咱们对于项目里面的文件和函数功能渐渐淡忘,从新去阅读熟悉这部分代码是很浪费时间而且恼人的一件事。可是这也无法彻底避免,咱们可使用一些技巧尽量减小从新熟悉代码的时间。commit messages能够知足须要,它也反映了一个开发人员是不是良好的协做者。前端
编写良好的Commit messages能够达到3个重要的目的:git
先来看看一个比较好的例子,感觉一下:
github
下面谈谈,如何让项目里面的Commit messages步入规范化,流程化。npm
<type>: <subject> <BLANK LINE> <body> <BLANK LINE> <footer>
Type表示提交类别,Subject表示标题行, Body表示主体描述内容。vim
Type的类别说明:前端工程化
# 标题行:50个字符之内,描述主要变动内容 # # 主体内容:更详细的说明文本,建议72个字符之内。 须要描述的信息包括: # # * 为何这个变动是必须的? 它多是用来修复一个bug,增长一个feature,提高性能、可靠性、稳定性等等 # * 他如何解决这个问题? 具体描述解决问题的步骤 # * 是否存在反作用、风险? # # 若是须要的化能够添加一个连接到issue地址或者其它文档
这3个问题给代码的变动创建了良好的上下文,可让其余的代码review人员或者项目成员直观的判断修改点是否正确。一条良好的commit message也可让维护者知道这个patch是否适合发布到稳定的版本中去。函数
若是一个patch没有回答上面的这几个问题,那么它是无心义的。它会给review的人员形成负担,让他们花费大量时间去评审讨论这个patch的做用和意义。更糟糕的是,若是一个项目实施SCM纪律,则这个patch会被拒绝掉,而后开发人员须要花费时间从新编写一个新的patch。从新编写一个复杂的patch代价是巨大的,而把commit message写好只会花费几分钟。工具
若是你是vim用户,将下面这行代码加入到~/.vimrc。这会帮助你检查拼写和自动换行性能
autocmd Filetype gitcommit setlocal spell textwidth=72
Commitizen可让你的commit message更加规范统一,适合项目团队使用,使用也很简单,使用npm安装后,提交代码的时候使用git cz去替代之前的git commit命令便可。测试
安装commitizen:
$ npm install -g commitizen
使用截图:
conventional-changelog是用来从git的元数据中生成 Change log文档的工具,只要你提交的格式知足它定义的标准,此处以angular标准为例子。使用它生成的Change log包含如下三个部分:
Bug Fixes Bug修复的信息
Features 增长的特性
BREAKING CHANGES 重大变动
能够参考它生成的文档CHANGELOG.md,使用以下:
$ npm install -g conventional-changelog-cli $ cd my-project $ conventional-changelog -p angular -i CHANGELOG.md -s
这不会覆盖你以前的CHANGE.md文档内容,会在这个文件的最上面插入新生成的日志信息。