[笔记] git提交信息规范化

143 阅读2分钟

本篇文章主要记录git提交信息规范化

目的

  1. 统一团队Git Commit标准,便于后续代码review、版本发布、自动化生成change log;
  2. 可以提供更多更有效的历史信息,方便快速预览以及配合cherry-pick快速合并代码;
  3. 团队其他成员进行类git blame时可以快速明白代码用意;

message信息格式采用目前主流的Angular规范,这是目前使用最广的写法,比较合理和系统化,并且有配套的工具

commit message格式说明

Commit message一般包括三部分:Header、Body和Footer。

Header

type(scope): subject

  1. type:用于说明commit的类别,规定为如下几种
  2. scope:【可选】用于说明commit的影响范围,比如: route, component, utils, build..
  3. subject:commit的简要说明,尽量简短
type
feat新增功能
fix修复bug
docs修改文档
refactor代码重构,未新增任何功能和修复任何bug
build改变构建流程,新增依赖库、工具等(例如webpack修改);
style仅仅修改了空格、缩进等,不改变代码逻辑;
perf改善性能和体现的修改
chore非src和test的修改的其他修改不在上述修改;
test测试用例的修改
ci自动化流程配置修改;
revert回滚到上一个版本

还有一些其他的例如workflow:工作流相关文件修改 可以自定

body

对本次commit的详细描述,可分多行

foote

对本次commit的详细描述,可分多行

  1. 不兼容变动:需要描述相关信息
  2. 关闭指定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

然后会在package.json中出现以下配置

"config": {
    "commitizen": {
      "path": "./node_modules/cz-conventional-changelog"
    }
  }

然后后面将git commit命令改成git cz
将会出现命令行交互界面如下

image.png

进行相应的选择后即可按照规范编写提交信息并提交

image.png

commit提交信息验证

commitlint 是一个commit信息提交验证工具

使用

    npm install --save-dev @commitlint/cli @commitlint/config-conventional husky
    
    // 编写配置文件commitlint.config.js
    module.exports = {
      extends: ['@commitlint/config-conventional'],
    };
    
    // 初始化 husky
    npx husky install
    // 添加提交钩子
    npx husky add .husky/commit-msg "npx --no-install commitlint --edit $1"
    
    // 配置完后 后面在使用git commit 提交的信息都会进过验证 不符合规范将不予以提交

image.png

commitlint也可以自定义提交规则 具体可以去查看官网~