git提交CZ规范
# 提交规范
包含文字规范和emoji规范;
# 文字规范
commit一共由五部分组成,具体内容如下。
# type
提交 commit 的类型,包括以下几种
- feat: 新功能
- fix: 修复问题
- docs: 修改文档
- style: 修改代码格式,不影响代码逻辑
- refactor: 重构代码,理论上不影响现有功能
- perf: 提升性能
- test: 增加修改测试用例
- chore: 修改工具相关(包括但不限于文档、代码生成等)
- deps: 升级依赖
# scope
修改文件的范围(包括但不限于 doc, middleware, core, config, plugin)
# subject
用一句话清楚的描述这次提交做了什么
# body
补充 subject,适当增加原因、目的等相关因素,也可不写。
# footer
- 当有非兼容修改(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
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
2
3
4
5
6
7
8
# 版本控制
// 安装 standard-verison
npm i --save-dev standard-version
// 在 package.json 中的 scripts 加入 standard-version
{
"scripts": {
"release": "standard-version"
}
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# CZ项目实践[推荐]
"scripts": {
"lint": "eslint --ext .js,.ts src --ignore-path .gitignore && npm run lint:style && npm run lint:prettier",
"lint:style": "stylelint \"src/**/*.less\" --syntax less",
"lint:prettier": "check-prettier lint",
"lint:fix": "eslint --fix --ext .js && npm run lint:style",
"lint-staged": "lint-staged",
"lint-staged:js": "eslint --ext .js",
"fix": "npm run lint -- --fix",
"changelog": "standard-changelog -f && git add CHANGELOG.md",
"commit": "git-cz"
},
"dependencies": {},
"devDependencies": {
"@commitlint/cli": "^11.0.0",
"@commitlint/config-conventional": "^11.0.0",
"babel-eslint": "^10.0.1",
"commitizen": "^4.2.1",
"cz-conventional-changelog": "^3.3.0",
"eslint": "^5.4.0",
"eslint-config-airbnb": "^17.0.0",
"eslint-config-prettier": "^3.0.1",
"eslint-plugin-babel": "^5.3.0",
"eslint-plugin-compat": "^2.6.2",
"eslint-plugin-import": "^2.14.0",
"eslint-plugin-jsx-a11y": "^6.1.2",
"eslint-plugin-markdown": "^1.0.0-beta.6",
"eslint-plugin-react": "^7.11.1",
"gh-pages": "^2.0.1",
"husky": "^1.2.0",
"lint-staged": "^8.1.0",
"standard-changelog": "^2.0.24",
},
"checkFiles": [
"src/**/*.js*",
"src/**/*.ts*",
"src/**/*.less",
"config/**/*.js*",
"scripts/**/*.js"
],
"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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# 使用 Git CZ Emoji
插件
在 VScode 中提交 git 的时候添加 cz规范 emoji 前缀
# 安装
方式1:插件商店搜索 Git CZ Emoji
即可找到该插件
方式2:访问 vscode 网上商店 (opens new window) 进行安装
方式3:github搜索git-cz-emoji-vsc
,下载git-cz-emoji-vsc*.vsix文件
# 使用
任意单个源代码管理上方点击图标进入或使用 command+shift+p 输入 Git CZ: generate prefix msg
打开 git cz 插件。
有三种模式切换:
- emoji模式;
- emoji对应的code模式;
- 纯cz提交模式;
# 演示
# 说明
类型 | emji | 描述 |
---|---|---|
feat | ✨ | 引入新功能 |
fix | 🐛 | 修复 bug |
style | 💄 | 更新 UI 样式文按键 |
format | 🥚 | 格式化代码 |
docs | 📝 | 添加/更新文档 |
perf | 👌 | 提高性能/优化 |
refactor | 🎨 | 改进代码结构/代码格式 |
test | ✅ | 增加测试代码 |
build | 👷 | 构建过程或辅助工具的变动 |
ci | 💻 | 修改CI/CD相关内容 |
chore | 🔧 | 日常改动维护 |
revert | ⏪ | 还原修改记录 |
上次更新: 2023/11/17, 05:08:17