Git Commit Message 须知和使用技巧
一直以来自己的 commit message 都比较随意,之前有看到同事写: feat、chore 等,同时还有相应的 emoij 表情,觉得很酷。便搜寻资料整理出此文,便于后续查询相关知识。
1. commit message 规范
<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>
// 示例
docs(guide): updated fixed docs from Google Docs
Couple of typos fixed:
- indentation
- batchLogbatchLog -> batchLog
- start periodic checking
- missing brace
- type: 说明 commit 类型
- scope:可选,用于说明 commit 影响的范围
- subject:commit 目的的简单描述
- body:可选,详细的 commit 描述
- footer:可选,关闭的 issues 或者不兼容的变更
2. Type 类型
- feat: 新功能
- fix: bug 修复
- docs: 文档(documentation)
- style: 代码格式化,添加分号等(不影响代码运行的变动)
- refactor: 重构(不是新增功能也不是修改bug)
- test: 增加或修改测试用例
- chore: 构建过程或者辅助工具的变动
- perf: 改善性能的修改
3. 如何书写多行 commit message
Git 每次提交代码,都需要写 Commit message,否则不允许提交
当 Commit message 存在多行时,可以执行: git commit
, 此时会进入 vim 编辑器,允许输入多行文字。
4. 格式化输出 commit message
4.1 筛选出有效信息
通常我们使用 git log
查看 commit 信息,如下:
我们可以使用以下命令,得到更简洁的输出:
git log <last tag> HEAD --pretty=format:%s
另外,我们可以使用 --grep
得到包含某些单词的提交,比如 --grep feature
来得到属于 feature 类型的提交:
git log <last release> HEAD --pretty=format:%s --grep feat
5. Commitizen
通过与命令行的交互,生成符合 AngularJS 规范的 commit message
具体使用参考 Commitizen 官方文档
6. commit message with emoij
如何在 commit 信息中添加 emoij 表情,以及不同 emoij 表情所对应的 type?
参考 git commit message emoji 使用指南
7. commitlint
对 commit message 格式进行校验:
安装 @commitlint/cli、@commitlint/config-conventional
npm install --save-dev @commitlint/config-conventional @commitlint/cli
使用 @commitlint/config-conventional 作为 lint 配置文件: echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js
安装好以上依赖之后,可以在本地测试是否生效 echo "test(xxx): add test" | npx commitlint
配置 husky:
"husky": {
"hooks": {
"pre-commit": "npm run test",
"commit-msg": "commitlint -e $GIT_PARAMS" // 或者 "commitlint -E HUSKY_GIT_PARAMS"
}
},
这样就能对 commit 信息进行 lint 了。
8. 根据 commit 信息自动生成 CHANGELOG
conventional-changelog-cli 可以根据 commit 信息,通过以下命令自动生成 CHANGELOG.md 文件
npx conventional-changelog -p angular -i CHANGELOG.md -s -r 0
我们可以配置,当升级版本之后,自动生成 CHANGELOG.md
// package.json
{
scripts: {
"postversion": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0 && git add CHANGELOG.md && git commit -m\"docs(changelog): $npm_package_version\" && git push --follow-tags"
}
}
参考资料
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论