# 优雅的提交你的 Git Commit Message

# Commit message 的作用

  1. 提供更多的历史信息,方便快速浏览。
  2. 可以过滤某些 commit(比如文档改动),便于快速查找信息。
git log <last release> HEAD --grep feature
1
  1. 可以直接从 commit 生成 Change log。

# Commit Message 格式

Commitizen 是一个撰写合格 Commit message 的工具。

  1. 项目级安装
yarn add commitizen cz-conventional-changelog --dev
1
  1. 之后在 package.json 添加脚本 "commit": "git-cz"
{
  "script": {
    // ...,
    "commit": "git-cz"
  },
  "config": {
    "commitizen": {
      "path": "./node_modules/cz-conventional-changelog"
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11

# 自定义 Adapter

也许 Angular 的那套规范我们不习惯, 那么可以通过指定 Adapter cz-customizable 指定一套符合自己团队的规范。

  1. 全局 或 项目级别安装:
yarn add global cz-customizable
or
yarn add cz-customizable --dev
1
2
3
  1. 修改 .czrc 或 package.json 中的 config 为:
{ "path": "cz-customizable" }
or
  "config": {
    "commitizen": {
      "path": "node_modules/cz-customizable"
    }
  }
1
2
3
4
5
6
7
  1. 同时在~/ 或项目目录下创建 .cz-config.js 文件, 维护你想要的格式,如
'use strict';
module.exports = {

  types: [

    {
      value: 'feat',
      name : 'feat:     A new feature'
    },
    {
      value: 'fix',
      name : 'fix:      A bug fix'
    },
    {
      value: 'refactor',
      name : 'refactor: A code change that neither fixes a bug nor adds a feature'
    },
    {
      value: 'docs',
      name : 'docs:     Documentation only changes'
    },
    {
      value: 'test',
      name : 'test:     Add missing tests or correcting existing tests'
    },
    {
      value: 'chore',
      name : 'chore:    Changes that don\'t modify src or test files. Such as updating build tasks, package manager'
    },
    {
      value: 'style',
      name : 'style:    Code Style, Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)'
    },
    {
      value: 'revert',
      name : 'revert:   Revert to a commit'
    },
    {
      value: 'version',
      name: 'version: 发版本用的'
    }
  ],

  scopes: ["一张图","辅助审批","辅助审查","辅助编制","监测预警","公共模块","行业管理","cli","版本更新"],

  allowCustomScopes: true,
  allowBreakingChanges: ["feat", "fix"]
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

# 生成 Change log

# 参考资料

Last Updated: 3/22/2020, 10:00:57 PM