工程化实践指南
commit message
编写规范的 commit message 不仅可以让别人清晰的了解对代码所作的更改,还能便捷的生成 changelog。
事实上,约定式提交 就是针对编写 commit message 的一系列规范。 按照此规范,commit message 的结构应如下所示:
<类型>[可选的作用域]: <描述>
[可选的正文]
[可选的脚注]
其中,类型指此次提交所属的类型;作用域 必须 是一个描述某部分代码的名词,并用圆括号包围; 描述指的是对代码变更的简短总结;正文为代码变更提供额外的上下文信息; 脚注 必须 包含关于提交的元信息,例如:关联的合并请求、Reviewer、破坏性变更,每条元信息一行。
Angular Commit Message Guidelines 中提供了 9 种可选的类型,我们参考此使用以下类型:
fix
:修复 bugfeat
:新功能refactor
:既没有修复 bug 也没有添加新功能的代码更改test
:添加缺失的测试或更正现有的测试style
:不会影响代码含义的更改(空格,格式,缺少分号等)perf
:提高性能的代码更改docs
:仅文档更改chore
:修改工具相关(包括但不限于文档、代码生成等)
按照上述规范,一个典型的 commit message 如下所示:
fix: correct minor typos in code
see the issue for details on the typos fixed
closes issue #12
以下是一些遵守此规范的开源项目,可供参考:
Tips:如果你的开源项目也遵循 约定式提交 规范,不妨在 README 文件中加上徽章吧!
[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org)
显示效果如下:
SEEALSO:
阮一峰写的关于 commit message 的博客:Commit message 和 Change log 编写指南
知乎上关于 commit message 的讨论:如何写好 Git commit log?
changelog
一个规范的项目必然要提供 changelog,每个人都需要 changelog 以知晓项目在不同版本之间的差别。
changelog 的规范各不相同,不过, keep a changelog 项目可以给你一些关于编写 changelog 的相关建议。
如果你的项目遵循前面提到的 约定式提交 规范, 那么你可以使用 Conventional Changelog 工具将 commit message 转换为 changelog。
Tips:如果你的开源项目也采纳了 keep a changelog 的相关建议,不妨在 README 文件中加上徽章吧!
[![Keep a Changelog v1.1.0 badge](https://img.shields.io/badge/changelog-Keep%20a%20Changelog%20v1.1.0-%23E05735)](https://keepachangelog.com/zh-CN/1.0.0/)
显示效果如下:
版本号
版本号的规范可参考 语义化版本 。