1. commit message
-
commit message 分3个部分:head, body, footer
- head: <type> (scop): subject
- type: feat, fix, docs, style, refactor, test, chore, revert, perf, build
- score: 影响范围
- subject: 简短描述(动词开头,首字母小写,结尾不加.)
- body: 详细描述
- footer: (1) 不兼容改动;(2) 关闭issue
- head: <type> (scop): subject
-
revert 有特殊的格式
# head: revert: <要被撤销的commit的head> # body: This reverts commit <commit-hash>. # eg: revert: docs add README.md This reverts commit a2d04c0b914785e4ff0cdf4baeea84d8611c7a61.
2. 一些规范commit message的工具
-
commitizen:辅助编写规范的commit message
# 安装commitizen cnpm install -g --save-dev commitizen # 生成package.json文件 npm init --yes # 设置支持commit message格式 commitizen init cz-conventional-changelog --save --save-exact
使用
git cz
代替git commit
type介绍type detail 说明 feat A new feature 新功能 fix A bug fix 修复 bug docs Documentation only changes 文档修改 style Changes that do not affect the meaning of the code (white-space, formatting, missing semicolons, etc) 格式(不影响代码运行的变动) refactor A code change that neither fixes a bug nor adds a feature 重构 perf A code change that improves performance 提高性能 test Adding missing tests or correcting existing tests 添加缺失测试或更正现有测试 build Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm) 依赖的外部资源变化 chore Other changes that don’t modify src or test files 构建过程或辅助工具的变动 revert Reverts a previous commit 恢复先前的提交 -
validate-commit-msg:在每次commit前检验缩写的message是否符合规范
# 安装validate-commit-msg npm install --save-dev validate-commit-msg # 安装ghooks cnpm install ghooks --save-dev
在 package.json 配置 ghooks。在config中添加如下信息
"config": { "ghooks": { "commit-msg": "validate-commit-msg" }, "validate-commit-msg": { "types": ["feat", "fix", "docs", "style", "refactor", "perf", "test", "build", "ci", "chore", "revert"], "scope": { "required": false, "allowed": ["*"], "validate": false, "multiple": false }, "warnOnFail": false, "maxSubjectLength": 100, "subjectPattern": ".+", "subjectPatternErrorMsg": "subject does not match subject pattern!", "helpMessage": "", "autoFix": false } }
- change log:目前还未使用,需要再翻查
参考1:Git 提交的正确姿势:Commit message 编写指南
参考2:git commit 规范工具