提交信息格式模板
<type>(<scope>): <subject>
<body>
BREAKING CHANGE: <changes>
Closes <closes>
Type - 提交类型
取值 | 适用范围 | 使用范围英文原文 |
---|---|---|
feat (feature) | 新功能、新特性 | A new feature |
fix | 修改 bug | A bug fix |
docs | 仅文档修改 | Documentation only changes |
style | 代码格式修改 | Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc) |
refactor | 代码重构(重构,在不影响代码内部行为、功能下的代码修改) | A code change that neither fixes a bug nor adds a feature |
perf | 更改代码,以提高性能(在不影响代码内部行为的前提下,对程序性能进行优化) | A code change that improves performance |
test | 测试用例新增、修改 | Adding missing or correcting existing tests |
build | 影响项目构建或依赖项修改 | Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm) |
ci | CI/CD 持续集成相关文件修改 | Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs) |
chore | 其他修改(不在上述类型中的修改) | Other changes that don’t modify src or test files |
revert | 恢复上一次提交 | Reverts a previous commit |
Scope - 此次变更的范围
用于说明 commit 影响的范围
Subject - 简短描述
主要为对本次变更内容的简短描述,一般不超过 50 个字符。提交信息应该描述清楚修改的内容,避免使用模糊的词汇。
Body - 详细描述(可选部分)
body 部分是对本次 commit 的详细描述,可以分成多行
Footer - 脚注部分(可选部分)
BREAKING CHANGE、Closes 均属于该部分,为可选项
BREAKING CHANGE(破坏性改动)
所有破坏性改动都必须作为破坏性改动块在页脚中提及,以 “BREAKING CHANGE” 开头,并用空格或两行换行。提交信息的其余部分是对变更的描述、理由说明和迁移注释。
Closes(关联的 issue 编号)
已关闭的 bug 应列在页脚中以 “Closes” 关键字为前缀的单独的行中,如下所示:
Closes #234
也可以同时包含多个 issue 编号
Closes #123, #245, #992
优势
-
使用广泛,有很多工具可以用来辅助编写、校验,可以依据此格式生成 ChangeLog,以及可以筛选指定类型的提交记录等。
-
Git 图形化客户端、IDE 兼容,可以在图形化的客户端中查看时,软件可以自动为其添加上类似加粗、换行的样式
-
Git 命令行查询方便,单行显示便可大致知晓某个提交的内容。
参考资料
-
Angular.JS Git Commit Guidelines: https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines
-
AngularJS Git Commit Message Conventions: https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit#
-
Git Commit 规范(Conventional Commit): https://juejin.cn/post/6985500205554597918
-
Commit message 和 Change log 编写指南 - 阮一峰: https://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html