使用Commitizen规范git提交

提交规则

1.1 commit message format(信息域)

commit message一般分为三个部分Header,Body 和 Footer

(): 
// 空一行

// 空一行
其中,Header 是必需的,Body 和 Footer 可以省略

1.2 HEAD

  • type用于说明 commit 的类别,使用下列标识
feat:     新功能
fix:      修复
docs:     文档变更
style:    代码格式(不影响代码运行的变动)
refactor: 重构(既不是增加feature,也不是修复bug)
perf:     性能优化
test:     增加测试
chore:    构建过程或辅助工具的变动
revert:   回退
build:    打包
  • scope 用来说明本次Commit影响的范围,即简要说明修改会涉及的部分,比如数据层、控制层、视图层等,
  • subjectcomment所在的位置,这次提交的简短描述

1.3 Body 是对本次 commit 的详细描述,可以分成多行

1.4 Footer 部分只用于两种情况

  • 不兼容变动

如果当前代码与上一个版本不兼容,则 Footer 部分以BREAKING CHANGE开头,后面是对变动的描述、以及变动理由和迁移方法

  • 关闭 Issue

如果当前 commit 针对某个issue,那么可以在 Footer 部分关闭这个 issue (可依次关闭过个issueCloses #123, #245, #992)

1.5 Revert

还有一种特殊情况,如果当前 commit 用于撤销以前的 commit,则必须以revert:开头,后面跟着被撤销 Commit 的 Header

revert: type(scope):  some comment
This reverts commit bfe307ce57d87677c6c473c228e6c2ed8b81dcec.

Body部分的格式是固定的,必须写成This reverts commit .,其中的hash是被撤销 commit 的 HSHA 标识符。
如果当前 commit 与被撤销的 commit,在同一个发布(release)里面,那么它们都不会出现在 Change log 里面。如果两者在不同的发布,那么当前 commit,会出现在 Change log 的Reverts小标题下面

安装Commitizen工具

前提需要安装node

1.全局安装方案

1.1 全局安装commitizennode模块

npm install -g commitizen

1.2 初始化commitizen的适配器cz-customizable

cz-customizable可以自定义提交提示信息

npm install -g cz-customizable

1.3 .czrchome 目录中创建一个文件,并 path 引用首选的全局安装的 commitizen 适配器

{"path":"cz-customizable"}

1.4 在package.json中添加代码

...
  "config": {
    "commitizen": {
      "path": "cz-customizable"
    }
  }

1.5 1.21.4的步骤也可以使用命令行实现

commitizen init cz-customizable --save-dev --save-exact

上面的命令为你做三件事。

  • 安装cz-customizable适配器npm模块
  • 节省了devDependencies包的依赖关系
  • 添加了 config.commitizen 关键你的根源 package.json 如下所示:
...
  "config": {
    "commitizen": {
      "path": "cz-customizable"
    }
  }

1.6 添加cz-customizable的配置文件.cz-config.js到与.git同级文件夹

'use strict';

module.exports = {
  types: [
    {value: 'feat',     name: 'feat:     新功能'},
    {value: 'fix',      name: 'fix:      修复'},
    {value: 'docs',     name: 'docs:     文档变更'},
    {value: 'style',    name: 'style:    代码格式(不影响代码运行的变动)'},
    {value: 'refactor', name: 'refactor: 重构(既不是增加feature,也不是修复bug)'},
    {value: 'perf',     name: 'perf:     性能优化'},
    {value: 'test',     name: 'test:     增加测试'},
    {value: 'chore',    name: 'chore:    构建过程或辅助工具的变动'},
    {value: 'revert',   name: 'revert:   回退'},
    {value: 'build',    name: 'build:    打包'}
  ],
  // override the messages, defaults are as follows
  messages: {
    type: '请选择提交类型:',
    // scope: '请输入文件修改范围(可选):',
    // used if allowCustomScopes is true
    customScope: '请输入修改范围(可选):',
    subject: '请简要描述提交(必填):',
    body: '请输入详细描述(可选,待优化去除,跳过即可):',
    // breaking: 'List any BREAKING CHANGES (optional):\n',
    footer: '请输入要关闭的issue(待优化去除,跳过即可):',
    confirmCommit: '确认使用以上信息提交?(y/n/e/h)'
  },
  allowCustomScopes: true,
  // allowBreakingChanges: ['feat', 'fix'],
  skipQuestions: ['body', 'footer'],
  // limit subject length, commitlint默认是72
  subjectLimit: 72
};

1.7 现在 cd 进入任何 git 存储库并使用 git cz 而不是git commit。 你会发现 commitizen 提示。

提示:可以使用所有 git commit optionsgit cz,例如:git cz -a

2.项目安装方案(非全局)

NPM版本高于5.2
2.1 使用命令行npm install --save-dev commitizen
2.2 使用命令行npx commitizen init cz-customizable --save-dev --save-exact
2.3 使用命令行npx git-cz
或者添加npm脚本

...
  "scripts": {
    "commit": "npx git-cz"
  }

2.4 添加cz-customizable的配置文件.cz-config.js到与.git同级文件夹
2.5 使用 git cz

你可能感兴趣的:(使用Commitizen规范git提交)