不知道你们有没有看过本身项目的git 提交信息-----我看过好屡次 ,不忍直视 而后提醒一块儿的小伙伴 :你们规范点 信息要详细,前端
过段时间再看下 ,仍是同样。node
相信不少猿都有这样的感觉,对于垃圾的提交信息深恶痛绝,特别是那些提交信息为 "fix bug"的commit,SO, 若是提交的时候能有ios
些填写规范的提示 或者高级点有交互式的约束就行了。git
这里给出两种方案,也是业界比较通用的 github
1. commitizen 交互式约束命令 提交 web
2.配置git commit 模板 npm
先来介绍第一种:(基于MAC OS 安装)json
知名前端web项目AngularJS的提交记录在业内被许多人称赞,其规范同时也逐渐被你们引用,为了把这些规范实际应用到项目中,我vim
们就须要 commitizen 这个小工具,该工具是基于Node的,所以咱们首先必须先安装node环境 ,node环境好了后即可以开始安装咱们的性能优化
利器了,步骤很简单:
a. npm 全局安装利器 commitizen
npm install -g commitizen
b.安转规范模板文件
这里有个要注意的地方 规范模板文件分全局(也就是说 这个规范适用于你电脑上全部的git 项目)的和单个仓库(只针对一个git工程)的
全局安装 :
先全局下载 规范模板文件
1. npm install -g cz-conventional-changelog 其中 cz-conventional-changelog 这个东西就是AngularJS的规范
2. echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc ,此时你当前用户的根目录下应该能够看到一个 .czrc的文件了
而后你切换到你的git 工程下 ,在当你须要使用 git commit 的地方更换成 git cz就能显示出 commit 的交互界面
局部安装:
1.直接 cd到你的git工程下
2.commitizen init cz-conventional-changelog --save --save-exact 安装规范文件,若是你的项目自己就是 node系列的 如 web
前端项目 ,你的项目下应该是有个 package.json文件的,此时你运行 上面的命令不会报错 直接成功,但若是你的项目是 ios 、Android
工程根目录下没有 package.json的话你就须要 npm init 一下,而后会看到一个package.json的目录
3.commitizen init cz-conventional-changelog --save --save-exact 此时你会发现又多了个nodes_modules文件夹没办法 ,你两个
文件你应该不会导入到工程中吧,直接加入到 gitignore文件中去好了
因此推荐全局安装 ,好的规范应该用在全部的工程上.
你是否注意到,当你执行 git cz后的那些提示信息,按照一步一步填写 ,最终会生成以下格式的提示信息
<type>(<scope>) : <subject>
<空行>
<body>
<空行>
<footer>
其中 type 的值能够有不少,下面有几个咱们经常使用到的
. feat :新功能
. fix :修复bug
. doc : 文档改变
. style : 代码格式改变
. refactor :某个已有功能重构
.perf :性能优化
.test :增长测试
. build :改变了build工具 如 grunt换成了 npm
.revert: 撤销上一次的 commit
scope :用来讲明这次修改的影响范围 能够随便填写任何东西,commitizen也给出了几个 如:location 、browser、compile,不过我推荐使用
all :表示影响面大 ,如修改了网络框架 会对真个程序产生影响
loation: 表示影响小,某个小小的功能
module:表示会影响某个模块 如登陆模块、首页模块 、用户管理模块等等
subject: 用来简要描述本次改动,概述就行了
body:具体的修改信息 应该尽可能详细
footer:放置写备注啥的,若是是 bug ,能够把bug id放入
最后生成的 commit 信息大概是这样的 简洁又明了
那如今来说讲第二种 :git 设置模板
步骤以下:
1.首先创建一个模板文件 最好直接在用户根目录下建(为啥? 稍后解释)
如:创建 vim .template_git
若是 按 i 编辑 ,输入本身想要的规范 ,刚上面说了AngularJS的 commit规范很好,那咱们应该模拟它的
而后保存 推出
2.git config --global commit.templte 模板文件名, 个人模板文件是 .template_git 全部我直接
git config --global commit.template /Users/tao/.template_git (PS:必定要是绝对路径,由于commit 的时候git会去到根据具体的路径名去加载模板)
其中 --global 参数是为了指明是全局配置git,就是影响你电脑上的全部git工程,固然你也能够直接去对应的工程根目录下
执行不带 --global参数的命令 则只会影响当前工程 (仍是推荐全局 ,好东西要一块儿用)
配置完成后 你直接在须要commit的时候输入 git commit
而后会出来一些文本提示 只要你们都按照上面的格式填写咱们就也能有和AngularJS同样美观的提交信息了 ,这里有个按照AngularJS规范编写的模板文件
能够直接下载下来配置
PS:对于上面两种方式 我的以为 commitizen 无疑是利器了,能用尽可能用,但有些开发小伙伴可能对纯命令的形式不太喜欢,或者就是不会git 命令
也有些正在使用 如sourceTree同样有着界面的git工具,这个时候就能够采用 git 配置模板的方式了, 因为sourceTree默认也会去加载git全局配置的
commit模板(全局配置的重要性),并且这个配置文件还只能在当前用户根目录的下,这也是为何上面说要在用户根目录下建配置文件的缘由