不知道大家有没有看过自己项目的git 提交信息-----我看过好多次 ,不忍直视  然后提醒一起的小伙伴 :大家规范点 信息要详细,

过段时间再看下 ,还是一样。

相信很多猿都有这样的感受,对于垃圾的提交信息深恶痛绝,特别是那些提交信息为 "fix bug"的commit,SO, 如果提交的时候能有

些填写规范的提示  或者高级点有交互式的约束就好了。

这里给出两种方案,也是业界比较通用的

1. commitizen 交互式约束命令 提交

2.配置git commit 模板

先来介绍第一种:(基于MAC OS 安装)

知名前端web项目AngularJS的提交记录在业内被许多人称赞,其规范同时也逐渐被大家引用,为了把这些规范实际应用到项目中,我

们就需要 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模板(全局配置的重要性),而且这个配置文件还只能在当前用户根目录的下,这也是为什么上面说要在用户根目录下建配置文件的原因

老鸟都应该注意的git 提交规范的更多相关文章

  1. git 提交规范

    git 提交规范 前言 无规矩不成方圆,编程也一样. 如果你有一个项目,从始至终都是自己写,那么你想怎么写都可以,没有人可以干预你.可是如果在团队协作中,大家都张扬个性,那么代码将会是一团糟,好好的项 ...

  2. 项目工程化之git提交规范以及 CHANGELOG生成

    事先声明,本文是参考了其他大神的博客之后自己尝试的记录,具体可以参考如下 链接 先说说git 提交规范把,这里基本都是这个工具 cz-customizable 1,安装 npm install cz- ...

  3. 开发中的你的Git提交规范吗?

    1. 前言 目前大部分公司都在使用Git作为版本控制,每个程序员每天都要进行代码的提交.很多开发者也包括我自己,有时候赶时间或者图省事,就这么提交: git commit -m "修改bug ...

  4. 前端规范之Git提交规范(Commitizen)

    代码规范是软件开发领域经久不衰的话题,几乎所有工程师在开发过程中都会遇到或思考过这一问题.而随着前端应用的大型化和复杂化,越来越多的前端团队也开始重视代码规范.同样,前段时间,笔者所在的团队也开展了一 ...

  5. 利用shell脚本生成CHANGELOG.md(包含git提交规范)

    前言 我们经常看到github上面有很多CHANGELOG.MD包含版本的更新信息,如果我们的git提交能遵循一定的规范,那么使用gitlog就能很方便的生成它 生成结果  shell脚本 http ...

  6. 关于Git提交规范

    自古至今,无规矩不成方圆. Git提交也有其规范,业内做的比较好的,比较具有参考价值的就是Angular的提交. Angular提交规范: <type>(<scope>): & ...

  7. 你可能会忽略的 Git 提交规范

    一.为什么需要规范? 无规矩不成方圆,编程也一样. 如果你有一个项目,从始至终都是自己写,那么你想怎么写都可以,没有人可以干预你.可是如果在团队协作中,大家都张扬个性,那么代码将会是一团糟,好好的项目 ...

  8. Git提交规范

    Commit message 的格式 每次提交,Commit message 都包括三个部分:Header,Body 和 Footer. <type>(<scope>): &l ...

  9. Git提交代码规范 而且规范的Git提交历史,还可以直接生成项目发版的CHANGELOG(semantic-release)

    Git提交代码规范 - 木之子梦之蝶 - 博客园 https://www.cnblogs.com/liumengdie/p/7885210.html Commit message 的格式 Git 每次 ...

随机推荐

  1. AngularJS 疑难问题解决汇总

    AngularJS 防止页面闪烁的方法 angularjs filter 详解 学习资料1 学习资料2 在 AngularJS 应用中处理单选框和复选框 学习资料3 AngularJS 之 Facto ...

  2. 自己定义View之绘制圆环

    一.RingView 自己定义的view,构造器必须重写,至于重写哪个方法,參考例如以下: ①假设须要改变View绘制的图像,那么须要重写OnDraw方法.(这也是最经常使用的重写方式.) ②假设须要 ...

  3. BCM策略路由交换芯片

    BCM几个交换芯片的寄存器和相关的路由 EGR_L3_NEXT_HOP.EGR_L3_INTF.ING_L3_NEXT_HOP BCM XGS系列SDK中和路由相关的几个命令 l3 l3table. ...

  4. Net平台下的消息队列介绍

    Net平台下的消息队列介绍   本系列主要记录最近学习消息队列的一些心得体会,打算形成一个系列文档.开篇主要介绍一下.Net平台下一些主流的消息队列框架.       RabbitMQ:http:// ...

  5. 记录近期小改Apriori至MapReduce上的心得

    ·背景 前一阵,一直在研究一些ML的东东,后来工作关系暂停了一阵.现在继续把剩下一些热门的算法再吃吃透,"无聊+逗比"地把他们搞到MapReduce上.这次选择的入手对象为Apri ...

  6. 随记两个SHELL文本处理

    1,对于AWK通配符的处理 例如文本: AAAAAAAA(CZ航母STYLE+CZ航母STYLE+CZ航母STYLE+CZ航母STYLE);XXXX;CCCCC(F22战机+F22战机);33333( ...

  7. 搭建一个三台服务器的Memcached集群

    关于memcached的基础知识可以查看博客其他博文,这里只记录了搭建的过程,谢谢! 1.分别在三台服务器上安装Memcached并启动 第一.由于memcached是基于libevent的事件处理, ...

  8. TDD(测试驱动开发)学习二:创建第一个TDD程序

    本节我们将学习一些测试驱动开发环境的搭建,测试驱动开发概念和流程.所涉及的内容全部会以截图的形式贴出来,如果你也感兴趣,可以一步一步的跟着来做,如果你有任何问题,可以进行留言,我也会很高兴的为你答疑. ...

  9. javascirpt怎样模仿块级作用域(js高程笔记)

    因为javascript没有块级作用域的概念,所以在块语句中定义的变量,实际上是在包括函数中而非语句中创建的. 如: function outputNumbers(count){ for(var i= ...

  10. PhpStorm创建Drupal模块项目开发教程

    在PhpStorm开发工具中,创建Drupal开发项目有两种方式:整合Drupal到现有的项目中和直接创建一个新的Drupal模块. 接下来将展示这两种方式的具体操作! 整合Drupal到现有的项目 ...