目的

  • 统一团队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提交信息规范化相关推荐

  1. git分支合并、撤销;git修改已push的commit信息; git 撤销操作;

    git分支合并 1.分支代码提交 2.git branch 查询本地分支 3.git checkout 分支名1 切换分支到需要合并的分支上 4.git merge 分支名2  //选择要合并到 分支 ...

  2. git 公钥提交代码_Git提交代码push的时候报错常见错误

    今天我想rk的sdk包里面的一些东西提交到我的git服务器上,结果,总是报错,折腾了一下午,结果才解决. 首先看看我提交代码的时候,报错的信息: git.exe push --progress &qu ...

  3. git 查询提交明细_Git [提交记录查看、提交、变基](I)

    查看提交记录 终端命令 git log:列出历史提交记录; 记录查看 git log --oneline:查看历史记录的简洁的版本; 简洁记录查看 提交 提交规范 feat: 新功能 fix: 修复问 ...

  4. git修改上一次提交之前的提交git commit --fixup

    转自:点击打开链接 "好的文章不是写出来的,而是改出来的." 代码提交也是如此. 程序员写完代码,往往迫不及待地敲下:git commit,然后发现提交中少了一个文件,或者提交了多 ...

  5. git 修改标签名称_Git常用命令汇总,希望能帮到你

    展示帮助信息 git help -g 回到远程仓库的状态 抛弃本地所有的修改,回到远程仓库的状态. git fetch --all && git reset --hard origin ...

  6. ecplise git修改提交信息_eclipse git提交忽略文件配置

    eclipse git提交忽略文件配置 一.修改.gitgnore文件 /target/ !.mvn/wrapper/maven-wrapper.jar ### STS ### .apt_genera ...

  7. git提交输入密码_git提交到自己的服务器,每次都要输入密码

    我有个云服务器,已经在上面安装 git,并按着网络方法搭建了git服务器. 现在的问题是,我在自己的电脑上,安装 msysGit , 提交代码,需要输入git的密码.(第一次不知道密码,后来我在云服务 ...

  8. git 修改本地用户名_git简单介绍

    Git是目前世界上最先进的分布式版本控制系统. Git 如此的优秀是因为,Git 跟踪并管理的不是文件,而是修改. 需要填写用户名和邮箱作为一个标识. git config --global user ...

  9. Git修改以前某次历史提交注释

    Git修改之前的注释提交注释 比如Git的提交记录是这样的: $ git log b536e0c Smart Linux:enable adbd bd45a6f Smart Linux:optimiz ...

最新文章

  1. 在大厂干了 5 年产品后,如今她裸辞回家开店去了
  2. Spring进阶的几大要点,你有做到吗?
  3. 32. Leetcode 141. 环形链表 (链表-双指针-环形链表)
  4. JVM内存及GC回收
  5. 任正非认为自己的成功没有秘诀
  6. SecureCRT key登录linux ssh设置
  7. 个人课中所学vlan相关知识整理
  8. spring web.xml配置服务启动后执行文件
  9. Log-Polar——关于对数极坐标
  10. 人工智能:模型与算法2搜索求解之启发式搜索
  11. 15款免费远程控制软件下载
  12. Unicode 字符集
  13. 详解拉东(Radon)变换原理、直线检测、代码实现
  14. (77)--用框架爬取博客园信息并保存到数据库
  15. 团队博客-第二周:需求规格说明书(科利尔拉弗队)
  16. ProxySQL 配置详解及读写分离(+GTID)等功能说明 (完整篇)2
  17. 阿里面试官鬼得很,问我为什么他们阿里要禁用Executors创建线程池?
  18. oCPC实践录 | 摸石头过河,oCPC先跑起来再说
  19. 算法日志:python把终端的信息存为log和logging
  20. java 一年工作经验简历_java一年工作经验简历 一年工作就有5年工作经验 你只需要这三个技能...

热门文章

  1. .NET的可调信号量
  2. 网络机房利用()将多台计算机,2020现代教育技术章测试答案.doc
  3. 修改主从服务器,搭建BIND主从服务器
  4. 简易 Vue 构建--终
  5. php序列化 java对象,在Java中反序列化一个序列化的php对象
  6. 有限差分法FDM和有限元法FEA比较
  7. python列表使用判断_浅谈Python数据类型判断及列表脚本操作
  8. 回顾一年的工作历程_ppt模板开门红年会颁奖典礼PPT模板,回顾总结过去一年的各项工作...
  9. 哪些系统使用了linux内核,Linux操作系统有哪些
  10. php request对象,PHP 中TP5 Request 请求对象的实例详解