ecplise git修改提交信息_Git提交信息规范化
目的
统一团队Git Commit标准,便于后续代码review、版本发布、自动化生成change log;
可以提供更多更有效的历史信息,方便快速预览以及配合cherry-pick快速合并代码;
团队其他成员进行类
git blame
时可以快速明白代码用意;
Git版本规范
分支
master分支为主分支(保护分支),不能直接在master上进行修改代码和提交;
develop分支为测试分支,所以开发完成需要提交测试的功能合并到该分支;
feature分支为开发分支,大家根据不同需求创建独立的功能分支,开发完成后合并到develop分支;
fix分支为bug修复分支,需要根据实际情况对已发布的版本进行漏洞修复;
Tag
采用三段式,v版本.里程碑.序号,如v1.2.1
架构升级或架构重大调整,修改第2位
新功能上线或者模块大的调整,修改第2位
bug修复上线,修改第3位
具体操作,可参见:Git标签、Git基础-打标签(来源csdn :李刚的学习专栏)
changelog
版本正式发布后,需要生产changelog文档,便于后续问题追溯。
Git提交信息
message信息格式采用目前主流的Angular规范,这是目前使用最广的写法,比较合理和系统化,并且有配套的工具。
commit message格式说明
Commit message一般包括三部分:Header、Body和Footer。
Header
type(scope):subject
type:用于说明commit的类别,规定为如下几种
feat:新增功能;
fix:修复bug;
docs:修改文档;
refactor:代码重构,未新增任何功能和修复任何bug;
build:改变构建流程,新增依赖库、工具等(例如webpack修改);
style:仅仅修改了空格、缩进等,不改变代码逻辑;
perf:改善性能和体现的修改;
chore:非src和test的修改;
test:测试用例的修改;
ci:自动化流程配置修改;
revert:回滚到上一个版本;
scope:【可选】用于说明commit的影响范围
subject:commit的简要说明,尽量简短
Body
对本次commit的详细描述,可分多行
Footer
不兼容变动:需要描述相关信息
关闭指定Issue:输入Issue信息
commit message工具
Commitizen是一个主流的 Commit message 的生成工具,支持Angular的commit message格式,被众多主流框架采用。
$ npm install -g commitizen
安装完成后,需要在项目目录下,输入以下命令来初始化您的项目以使用cz-conventional-changelog适配器
$ commitizen init cz-conventional-changelog --save --save-exact
上述命令会干3件事情:
安装cz-conventional-changelog
保存其依赖到package.json中
添加config.commitizen key到package.json中,如下:
"config": {"commitizen": {"path": "./node_modules/cz-conventional-changelog"}}
然后使用git cz
代替git commit
命令即可,或者可以增加友好的npm命令,通过npm run commit
进行提交!
"script": { "commit": "git-cz"}
也可以本地安装:
$ npm install --save-dev commitizen
使用项目内的本地
$ ./node_modules/.bin/commitizen init cz-conventional-changelog --save-dev --save-exact
$ ./node_modules/.bin/git-cz
生成change log文件
cz-conventional-changelog 可以自动根据提交信息生成change log,便于统一管理和查阅!
$ npm install -g conventional-changelog-cli
进入项目执行
# 在之前生成的基础上,叠加$ conventional-changelog -p angular -i CHANGELOG.md -s# 生成所有记录,包括之前的$ conventional-changelog -p angular -i CHANGELOG.md -s -r 0
同样可以创建npm脚本,来更方便的操作
"scripts": { "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0 && git add CHANGELOG.md"}
强制验证提交信息
采用Git hooks来拦截提交信息,进行格式判断。这里使用commit-msg
钩子,该钩子接收一个参数(存有当前提交信息的临时文件的路径)。如果该钩子脚本以非0退出,Git将放弃提交。
yorkie用于执行git-hooks,首先在package.json中增加相关配置
$ npm i --D yorkie
"gitHooks": { "commit-msg": "node git-hooks/verify-commit-msg.js"}
verify-commit-msg.js
const chalk = require('chalk')const msgPath = process.env.GIT_PARAMSconst msg = require('fs').readFileSync(msgPath, 'utf-8').trim()const commitRE = /^(revert: )?(feat|fix|polish|docs|style|refactor|perf|test|workflow|ci|chore|types|build)((.+))?: .{1,50}/if (!commitRE.test(msg)) { console.error( ` ${chalk.bgRed.white(' ERROR ')} ${chalk.red(`invalid commit message format.`)}` + chalk.red(` Proper commit message format is required for automated changelog generation. Examples:`) + ` ${chalk.green(`feat(compiler): add 'comments' option`)}` + ` ${chalk.green(`fix(v-model): handle events on blur (close #28)`)}` + chalk.red(` You can also use ${chalk.cyan(`npm run commit`)} to interactively generate a commit message.`) ) process.exit(1)}
参考地址自定义Git-Git钩子:https://git-scm.com/book/zh/v2/%E8%87%AA%E5%AE%9A%E4%B9%89-Git-Git-%E9%92%A9%E5%AD%90
ecplise git修改提交信息_Git提交信息规范化相关推荐
- git分支合并、撤销;git修改已push的commit信息; git 撤销操作;
git分支合并 1.分支代码提交 2.git branch 查询本地分支 3.git checkout 分支名1 切换分支到需要合并的分支上 4.git merge 分支名2 //选择要合并到 分支 ...
- git 公钥提交代码_Git提交代码push的时候报错常见错误
今天我想rk的sdk包里面的一些东西提交到我的git服务器上,结果,总是报错,折腾了一下午,结果才解决. 首先看看我提交代码的时候,报错的信息: git.exe push --progress &qu ...
- git 查询提交明细_Git [提交记录查看、提交、变基](I)
查看提交记录 终端命令 git log:列出历史提交记录; 记录查看 git log --oneline:查看历史记录的简洁的版本; 简洁记录查看 提交 提交规范 feat: 新功能 fix: 修复问 ...
- git修改上一次提交之前的提交git commit --fixup
转自:点击打开链接 "好的文章不是写出来的,而是改出来的." 代码提交也是如此. 程序员写完代码,往往迫不及待地敲下:git commit,然后发现提交中少了一个文件,或者提交了多 ...
- git 修改标签名称_Git常用命令汇总,希望能帮到你
展示帮助信息 git help -g 回到远程仓库的状态 抛弃本地所有的修改,回到远程仓库的状态. git fetch --all && git reset --hard origin ...
- ecplise git修改提交信息_eclipse git提交忽略文件配置
eclipse git提交忽略文件配置 一.修改.gitgnore文件 /target/ !.mvn/wrapper/maven-wrapper.jar ### STS ### .apt_genera ...
- git提交输入密码_git提交到自己的服务器,每次都要输入密码
我有个云服务器,已经在上面安装 git,并按着网络方法搭建了git服务器. 现在的问题是,我在自己的电脑上,安装 msysGit , 提交代码,需要输入git的密码.(第一次不知道密码,后来我在云服务 ...
- git 修改本地用户名_git简单介绍
Git是目前世界上最先进的分布式版本控制系统. Git 如此的优秀是因为,Git 跟踪并管理的不是文件,而是修改. 需要填写用户名和邮箱作为一个标识. git config --global user ...
- Git修改以前某次历史提交注释
Git修改之前的注释提交注释 比如Git的提交记录是这样的: $ git log b536e0c Smart Linux:enable adbd bd45a6f Smart Linux:optimiz ...
最新文章
- 在大厂干了 5 年产品后,如今她裸辞回家开店去了
- Spring进阶的几大要点,你有做到吗?
- 32. Leetcode 141. 环形链表 (链表-双指针-环形链表)
- JVM内存及GC回收
- 任正非认为自己的成功没有秘诀
- SecureCRT key登录linux ssh设置
- 个人课中所学vlan相关知识整理
- spring web.xml配置服务启动后执行文件
- Log-Polar——关于对数极坐标
- 人工智能:模型与算法2搜索求解之启发式搜索
- 15款免费远程控制软件下载
- Unicode 字符集
- 详解拉东(Radon)变换原理、直线检测、代码实现
- (77)--用框架爬取博客园信息并保存到数据库
- 团队博客-第二周:需求规格说明书(科利尔拉弗队)
- ProxySQL 配置详解及读写分离(+GTID)等功能说明 (完整篇)2
- 阿里面试官鬼得很,问我为什么他们阿里要禁用Executors创建线程池?
- oCPC实践录 | 摸石头过河,oCPC先跑起来再说
- 算法日志:python把终端的信息存为log和logging
- java 一年工作经验简历_java一年工作经验简历 一年工作就有5年工作经验 你只需要这三个技能...
热门文章
- .NET的可调信号量
- 网络机房利用()将多台计算机,2020现代教育技术章测试答案.doc
- 修改主从服务器,搭建BIND主从服务器
- 简易 Vue 构建--终
- php序列化 java对象,在Java中反序列化一个序列化的php对象
- 有限差分法FDM和有限元法FEA比较
- python列表使用判断_浅谈Python数据类型判断及列表脚本操作
- 回顾一年的工作历程_ppt模板开门红年会颁奖典礼PPT模板,回顾总结过去一年的各项工作...
- 哪些系统使用了linux内核,Linux操作系统有哪些
- php request对象,PHP 中TP5 Request 请求对象的实例详解