git提交规范
# 提交规范
包含文字规范和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
# 版本控制
{
"scripts": {
"fix": "npm run lint -- --fix",
"changelog": "standard-changelog -f && git add CHANGELOG.md",
"commit": "git-cz"
}
}
1
2
3
4
5
6
7
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
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