commit
?咱们有的时候去接盘别人的代码或者是团队协做的时候,有时候会根据同伴或者前者的commit
来分析当次代码所产生的side effect
。咱们指望的是分明的、一眼能够抓住重点的commit
信息,可是咱们却常常会看到test
、fix bugs
....等等这样的信息。emmmmmm~~ 有的时候会无从下手,须要仔细看看这些代码究竟进行了一些什么样的改动。然而这种时候每每会因为后者不知道前者代码的结构而致使以前解决的bug
或者实现的feature
被后者覆盖或者是再现。
固然,上面的这些状况是咱们不但愿出现的。为了不这些状况,咱们须要分明的、清晰的、有结构的、语义化的、约定式的commit
方式。
如今比较流行的是:jquery
commitizen
: Angluar
团队的提交代码方式,后来被你们普遍的应用。git template
: 自定义git
模版,这样的须要团队来制定一套你们都承认的提交模版,而后你们按照这套模版来进行提交。commitizen
We have very precise rules over how our git commit messages can be formatted. This leads to more readable messages that are easy to follow when looking through the project history. But also, we use the git commit messages to generate the AngularJS change log.
webpack
上面的用渣渣翻译器翻译为:git
对于如何格式化git提交消息,咱们有很是精确的规则。这将致使在查看项目历史时更易于遵循的可读消息。此外,咱们使用git提交消息来生成AngularJS更改日志。web
# 全局安装commitizen
npm install -g commitizen
# 全局安装模版
npm install -g cz-conventional-changelog
# for macos
echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc
# for anySysterm 手动建立.czrc,添加如下内容
{ "path": "cz-conventional-changelog" }
# 转到你的project下
cd your project
# 项目内安装
commitizen init cz-conventional-changelog --save --save-exact
# 运行以上命令以后会在package.json中生成下面内容
"config": {
"commitizen": {
"path": "cz-conventional-changelog"
}
}
复制代码
这里,就简单的配置了commitizen
在咱们的环境中了。咱们只须要在每次执行git commit
的时候替换为git cz
便可,就会看到一下内容:
express
feat
: 新功能fix
: 修复bug
doc
: 文档改变style
: 代码格式变动refactor
: 某个已有功能重构perf
: 性能优化test
: 增长测试build
: 改变build
工具,好比webpack
变成grunt
revert
: 撤销上一次commit
ci
: 更改ci configuration
chore
: 一些不更改src
或者test
相关文件的提交scope
说明这次修改的影响范围,能够根据本身的状况来进行填写, 官方给出了几个:macos
all
: 表示影响很大,如修改了总体依赖location
: 表示影响小,修改了某个小的功能module
: 表示会影响整个模块,如登陆模块等subject
用来简要描述本次变更,概述便可
npm
body
具体的描述这次提交的修改内容,应尽可能详细json
footer
放置备注等。若为bug
,可关联bug id
。性能优化
最终样子:
bash
这就是一次简单的提交。固然commitizen
还不止如此,它还能够根据咱们每次的commitizen
来根据对应的版原本生成对应版本的changelog
。
# command
conventional-changelog -p angular -i CHANGELOG.md -s -r 0
复制代码
-i
: 表示从CHANGELOG.MD
中读取changelog
-s
: 读写changelog
为同一个文件-r
: 表示生成changelog
的release
版本数量,默认为1,所有则是0 因为个人示例的commit
个数不够多,这里选取angular
的一部分changelog
来展现。commit
的style,能够下载conventional-changelog-cli
来更换不同的风格,它包含了: atom
, codemirror
, ember
, eslint
, express
, jquery
等。只须要将上述的命令中的angular
替换为你想要风格的名字便可。npm
项目中的package.json
中的script
中增长这样一条命令方便生成changelog
:{
"script": {
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0 && git add CHANGELOG.MD"
}
}
复制代码
以上就是对commitizen
的一个简单的介绍,上面的命令你也能够配置在githooks
里用来对git
个性化的定制。下面推荐几个另外的插件:
standard-version
: Automate versioning and CHANGELOG generation, with semver.org and conventionalcommits.orgvscode-changelog-generator
: vscode extension to generate changelogcommitlint
: Lint commit messages(这个简单的说两句,自定义的话,可是又不想写模版,还想用commit的话,能够用这个来限制为commitizen格式的。下面放一个官方的图)你也能够关注个人公众号