git提交规范

# 提交规范

包含文字规范emoji规范;

# 文字规范

commit一共由五部分组成,具体内容如下。

# type

提交 commit 的类型,包括以下几种

  • feat: 新功能
  • fix: 修复问题
  • docs: 修改文档
  • style: 修改代码格式,不影响代码逻辑
  • refactor: 重构代码,理论上不影响现有功能
  • perf: 提升性能
  • test: 增加修改测试用例
  • chore: 修改工具相关(包括但不限于文档、代码生成等)
  • deps: 升级依赖

# scope

修改文件的范围(包括但不限于 doc, middleware, core, config, plugin)

# subject

用一句话清楚的描述这次提交做了什么

# body

补充 subject,适当增加原因、目的等相关因素,也可不写。

  • 当有非兼容修改(Breaking Change)时必须在这里描述清楚
  • 关联相关 issue,如 Closes #1, Closes #2, #3
  • 如果功能点有新增或修改的,还需要关联文档 doc

# emoji规范

注:以下emoji表情在git提交时已经完全支持,哪怕下面的表情显示不完整也不用慌,可以直接在git-submit里使用。 可以通过安装vscode对应emoji提交规范插件提示;

emoji emoji代码 commit说明
🎨 (调色板) 🎨 改进代码结构/代码格式
⚡️ (闪电) ⚡️ 提升性能
🐎 (赛马) 🐎 提升性能
🔥 (火焰) 🔥 移除代码或文件
🐛 (bug) 🐛 修复 bug
🚑 (急救车) 🚑 重要补丁
✨ (火花) 引入新功能
📝 (铅笔) 📝 撰写文档
🚀 (火箭) 🚀 部署功能
💄 (口红) 💄 更新 UI 和样式文件
🎉 (庆祝) 🎉 初次提交
✅ (白色复选框) 增加测试
🔒 (锁) 🔒 修复安全问题
🍎 (苹果) 🍎 修复 macOS 下的问题
🐧 (企鹅) 🐧 修复 Linux 下的问题
🏁 (旗帜) :checked_flag: 修复 Windows 下的问题
🔖 (书签) 🔖 发行/版本标签
🚨 (警车灯) 🚨 移除 linter 警告
🚧 (施工) 🚧 工作进行中
💚 (绿心) 💚 修复 CI 构建问题
⬇️ (下降箭头) ⬇️ 降级依赖
⬆️ (上升箭头) ⬆️ 升级依赖
👷 (工人) 👷 添加 CI 构建系统
📈 (上升趋势图) 📈 添加分析或跟踪代码
🔨 (锤子) 🔨 重大重构
➖ (减号) 减少一个依赖
🐳 (鲸鱼) 🐳 相关工作
➕ (加号) 增加一个依赖
🔧 (扳手) 🔧 修改配置文件
🌐 (地球) 🌐 国际化与本地化
✏️ (铅笔) ✏️ 修复 typo

# commit校验

// commitlint 校验提交
npm i --save-dev @commitlint/config-conventional @commitlint/cli

// 在项目根目录创建 commitlint.config.js 文件并设置校验规则
// module.exports = {
//   extends: ["@commitlint/config-conventional"],
//   // rules 里面可以设置一些自定义的校验规则
//   rules: {},
// };
// 安装 husky
npm install --save-dev husky

// husky.config.js 中加入以下代码, 
// module.exports = {
//   "hooks": {
//     "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
//   }
// }

// husky.config.js 中加入以下代码,为了不用git cz
"prepare-commit-msg": "exec < /dev/tty && git cz --hook || true",
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 生成changelog

# 命令操作

npm install -g commitizen
npm install -g conventional-changelog
npm install -g conventional-changelog-cli

# 运行下面命令,使其支持Angular的Commit message格式
commitizen init cz-conventional-changelog --save --save-exact
# 生成CHANGELOG
conventional-changelog -p angular -i CHANGELOG.md -s
1
2
3
4
5
6
7
8

# 版本控制

{
  "scripts": {
     "fix": "npm run lint -- --fix",
    "changelog": "standard-changelog -f && git add CHANGELOG.md",
    "commit": "git-cz"
  }
}
1
2
3
4
5
6
7
"husky": "^1.2.0",
"prettier": "1.15.2",
"standard-changelog": "^2.0.24",
"stylelint-config-prettier": "^4.0.0",
"stylelint-config-standard": "^18.0.0",


"config": {
  "commitizen": {
    "path": "node_modules/cz-conventional-changelog"
  }
},
"commitlint": {
  "extends": [
    "@commitlint/config-conventional"
  ],
  "rules": {
    "type-enum": [
      2,
      "always",
      [
        "feat",
          "fix",
          "style",
          "docs",
          "perf",
          "refactor",
          "deps",
          "test",
          "build",
          "ci",
          "chore",
          "revert"
      ]
    ],
    "subject-full-stop": [
      0,
      "never"
    ],
    "subject-case": [
      0,
      "never"
    ]
  }
},
"lint-staged": {
  "**/*.{js,ts,tsx,json,jsx}": [
    "prettier --write",
    "git add"
  ],
  "*.{html,less,css,sass,scss,vue}": [
    "stylelint --fix",
    "git add"
  ]
},
"husky": {
  "hooks": {
    "pre-commit": "lint-staged",
    "commit-msg": "commitlint -e $GIT_PARAMS"
  }
}
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
49
50
51
52
53
54
55
56
57
58
59
60
61
上次更新: 2022/04/15, 05:41:30
×