03月05, 2017

git-commit的规范

前阵子在知乎上看到一个问题大家日常中的项目有没有使用规范的Commit message提交格式?,刚好自己也有这样的困惑,于是关注学习了一下。

看到有一个回答提到了angular commit convention,于是搜索了一下,找出阮一峰写的Commit message 和 Change log 编写指南

文中提到了commit type

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

我个人觉得这个还是相当有意义的,特别是将来查看log时,一眼就能清楚哪些是feat,哪些是bug,哪些是docs。

那么我们来简单实践一下吧:

Commitizen

Commitizen是一个撰写合格 Commit message 的工具。

步骤一:全局安装(commitizen)

$ npm install -g commitizen

步骤二:在当前项目下运行

commitizen init cz-conventional-changelog --save --save-exact

以后,凡是用到git commit命令,一律改为使用git cz。这时,就会出现选项,用来生成符合格式的 Commit message。

说实话,如果不喜欢或者记不住cz这个词,可以自己另外config配置,简单如下:

git config [--global] alias.ci cz

注:[]表示可选,上面的表示,可以用git ci来替换git cz

在按下git ci之后,可以看到会让你选择type:

git type select

选中其中一个,回车,它会出来以下几个内容:

git other info

分别是:scope、简单的信息描述、长的信息描述、break changes(这个我不是太懂)、要关闭的issue(多个用英文逗号隔开即可)。

其中简单的信息描述是必填的,其他都是选填的。关于scope,我个人的理解是type下的分类,比如:

git type scope

红色的便是scope。

上图是change log,在下文中会提及如何生成的。

validate-commit-msg

validate-commit-msg 用于检查 Node 项目的 Commit message 是否符合格式。

用法如下:(和阮一峰的教程不太一样)

{
    scripts: {
           "commitmsg": "validate-commit-msg",
    }
}

当git commit的格式不正确时,它便会报错:

error

change log

步骤一:安装conventional-changelog

npm install -g conventional-changelog-cli

注意是cli,阮一峰写的有问题,当然可能是后面更新了,但他的博文没有更新过来

步骤二:将change log输出到某个文件

conventional-changelog -p angular -i CHANGELOG.md -s -r 0

当然我们可以写到package.json里面的scripts里面,简单如下:

{
    scripts: {
            "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0"
    }
}

输出的md文件格式和之前的图差不多:

<a name="1.0.0"></a>
# 1.0.0 (2017-03-05)


### Bug Fixes

* fixed ([a9c3110](https://192.168.2.107/zpu/hello-koa/commits/a9c3110))


### Features

* add something ([53becaa](https://192.168.2.107/zpu/hello-koa/commits/53becaa))

本文链接:www.my-fe.pub/post/git-commit-specification.html

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。