git commit规范化实践
最近从svn转到git进行代码版本控制,今天了解了git commit规范化的一些知识后,写此文章记录下配置过程。
环境
编辑器使用的是vscode,项目框架是vue3.0
规范化工具
规范化git commit消息的工具commitizen
# 将commitizen命令行安装到全局
npm install -g commitizen
安装完之后我们就项目中引进改工具,就可以规范commit行为了。提交的命令为git cz,如果还是用git commit命令进行提交,那么这个工具就不会起到什么作用了。
commitizen对commit规范化界面都是英文提示,这个时候我就想如果要汉化怎么办,这就有了下面一个工具的出现。
安装可定制的Commitizen插件cz-customizable
npm install cz-customizable --save-dev
安装cz-customizable可以配置自定义的commitizen配置文件,在自定义的配置文件中我就可以对配置进行汉化
"config": {
"commitizen": {
"path": "./node_modules/cz-customizable"
},
"cz-customizable": {
"config": "my.cz-config.js" // 这里的文件名可以自定义,但是改文件需要放置在项目的根目录下
}
}
汉化完之后的效果是下面这样:

版本发布
进行commit规范化的好处是为了提高团队协作效率,使代码阅读性更强。还有另外一个节省后期维护版本信息的成本。通过规范化commit行为,我们可以通过自动化工具生成版本信息这样极大的降低了维护成本,提高了工作效率。在这里我使用的版本发布工具是standard-version,当然还有conventional-changelog可以使用。
standard-version可以自动帮助我们做以下几件事情:
- 自动在数据中生成版本号
- 使用conventional-changelog更新 CHANGELOG.md
- 提交package.json (如果有) 和 CHANGELOG.md
- 给新版本打一个tag
首先是安装standard-version
npm i standard-version --save-dev
安装完成之后,执行standard-version命令,在控制台可以看到如下信息:

可以清楚的看到standard-version做了哪些事情。其中package.json和changelog.md文件是被自动提交了的。这样在项目中生成了一个changelog文件
# Changelog
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
### [0.3.2](http://112.80.40.2:11080/chenchent/cdss-acs/compare/v0.3.1...v0.3.2) (2019-07-25)
### [0.3.1](http://112.80.40.2:11080/chenchent/cdss-acs/compare/v0.3.0...v0.3.1) (2019-07-25)
### Bug Fixes
* 将commitizen使用本地配置文件 ([4accd0a](http://112.80.40.2:11080/chenchent/cdss-acs/commit/4accd0a))
## [0.3.0](http://112.80.40.2:11080/chenchent/cdss-acs/compare/v0.2.0...v0.3.0) (2019-07-25)
### Bug Fixes
- **changelog:** 生成新的 changelog 文件 ([17747cf](http://112.80.40.2:11080/chenchent/cdss-acs/commit/17747cf))
### BREAKING CHANGES
- **changelog:** 测试
## 0.2.0 (2019-07-25)
### Features
- **me:** 测试 ([64e596d](http://112.80.40.2:11080/chenchent/cdss-acs/commit/64e596d))
# 0.1.0 (2019-07-25)
### Features
- **me:** 测试 ([64e596d](http://112.80.40.2:11080/chenchent/cdss-acs/commits/64e596d))
由于我习惯于使用node命令,所以最后我又将规范化跟版本生成的命令配置到了scripts中
"scripts": {
"commit": "git cz",
"changelog": "standard-version --dry-run && standard-version"
# standard-version --dry-run只是用来打印要做的事情,并不会做实际的操作
}
这就是我对git commit规范化的一些实践。mark下来做一个记录,希望可以帮助到其他人。
git commit规范化实践的更多相关文章
- [git 学习篇] git commit原理 --实践体会
1 现对readme.txt作出修改,增加一行内容: Git has a mutable index called stage. Git is a distributed version contro ...
- 项目git commit时卡主不良代码:husky让Git检查代码规范化工作
看完 <前端规范之Git工作流规范(Husky + Commitlint + Lint-staged) https://www.cnblogs.com/Yellow-ice/p/15349873 ...
- 如何写好 Git commit messages
导语:任何软件项目都是一个协作项目,它至少需要2个开发人员参与,当原始的开发人员将项目开发几个星期或者几个月之后,项目步入正规.不过他们或者后续的开发人员仍然需要经常提交一些代码去修复bug或者实现新 ...
- Android Studio Git 分支使用实践
新公司有些项目是用的 Git,以前公司都是 svn,为了练手 Git,我个人 APP 用到了,但是仅简单的 git pull/push 的使用,并未用到 Git 精髓,只有当项目中用到,才会紧迫去全面 ...
- 从code review到Git commit log
最近在读一本技术类的书:朱赟——<跃迁:从技术到管理的硅谷路径>,其中聊了很多很有趣的观点,比如:技术管理.技术实践.硅谷文化.个人成长等. 读到关于硅谷人如何做code review这一 ...
- git入门与实践【转】
转自:http://www.cnblogs.com/shenhaocn/archive/2011/03/13/1982957.html 什么是版本控制 要了解什么是git,首先需要了解什么是版本控制( ...
- 为什么要先 git add 才能 git commit
1. git 的 add ,是一个容易引起疑问的命令.在 subversion 中的 svn add 动作是将某个文件加入版本控制,而 git add的意义完全不同. 同时, git diff --c ...
- [原创]升级Gerrit的commit-msg,检查git commit时必须填写开发任务编号TaskID
公司使用git+gerrit+jenkins进行持续集成实践,其中gerrit用来进行Code Review.另外我们自己研发了一套敏捷项目管理系统TPM(TeamPlus Management),用 ...
- git commit的规范
https://www.yuque.com/fe9/basic/nruxq8#6c228def 制定一个 git commit 信息的提交规范是开发团队工作流必不可少的环节.试想一下,如果查看主分支上 ...
随机推荐
- Linux 下配置 phpredis 的过程和遇到的问题
其实对于 Linux 系统和 LNMP 环境并不是很熟,如果有错误请指正. 一.关于 PHP PHP 的编译参考了此文:http://blog.aboutc.net/linux/65/compile- ...
- 浅析C#代理
delegate 是委托声明的基础,是.net 的委托的声明的关键字action 是基于delegate实现的代理 有多个参数(无限制个数)无返回值的代理 func 是基于delegate实现的代理 ...
- es6基本语法,vue基本语法
一.es6基本语法 0.es6参考网站 http://es6.ruanyifeng.com/#README 1.let 和 const (1)const特点: 只在局部作用域起作用 不存在变量提升 不 ...
- pycharm安装及配置全过程
首先要准备两个文件,一是pycharm-community,二是python-3.7.2-amd. PyCharm 的下载地址:http://www.jetbrains.com/pycharm/dow ...
- 十分钟了解Kubernetes
何为Kubernetes? 最简单的一句话来概括Kubernetes. 它就是一套成熟的商用服务编排解决方案.Kubernetes定位在Saas层,重点解决了微服务大规模部署时的服务编排问题. Kub ...
- 如何开发优质的 Flutter App:应用架构的搭建
各位读者朋友们,好久不见了! 最近博主一直在忙于工作以及写<Flutter入门与应用实战>的书,所以没有时间打理博客.今天来给大家分享一个博主在GitChat上发起的一场Chat. 下面是 ...
- Flink UDF
本文会主要讲三种udf: ScalarFunction TableFunction AggregateFunction 用户自定义函数是非常重要的一个特征,因为他极大地扩展了查询的表达能力.本文除了介 ...
- java 字符串内存分配的分析与总结
经常在网上各大版块都能看到对于java字符串运行时内存分配的探讨,形如:String a = "123",String b = new String("123" ...
- (1)Linux文件系统的目录组成
记忆秘诀:BBDEH OPRLM TLSUV 宝贝的恩惠 欧派入联盟 偷了suv,19 目录 英文释义 简写 详解 1 / 根目录 整个文件系统的唯一根目录 2 /bin Binary 普通命 ...
- JIRA7.10迁移
1.准备环境 系统环境:Centos7.3 防火墙和Selinux管闭 [root@localhost ~]# useradd jira [root@localhost ~]# yum instal ...