提交信息格式模板

<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 的详细描述,可以分成多行

BREAKING CHANGECloses 均属于该部分,为可选项

BREAKING CHANGE(破坏性改动)

所有破坏性改动都必须作为破坏性改动块在页脚中提及,以 “BREAKING CHANGE” 开头,并用空格或两行换行。提交信息的其余部分是对变更的描述、理由说明和迁移注释。

Closes(关联的 issue 编号)

已关闭的 bug 应列在页脚中以 “Closes” 关键字为前缀的单独的行中,如下所示:

Closes #234

也可以同时包含多个 issue 编号

Closes #123, #245, #992

优势

  1. 使用广泛,有很多工具可以用来辅助编写、校验,可以依据此格式生成 ChangeLog,以及可以筛选指定类型的提交记录等。

  2. Git 图形化客户端、IDE 兼容,可以在图形化的客户端中查看时,软件可以自动为其添加上类似加粗、换行的样式

  3. Git 命令行查询方便,单行显示便可大致知晓某个提交的内容。

参考资料

  1. Angular.JS Git Commit Guidelines: https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines

  2. AngularJS Git Commit Message Conventions: https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit#

  3. Git Commit 规范(Conventional Commit): https://juejin.cn/post/6985500205554597918

  4. Commit message 和 Change log 编写指南 - 阮一峰: https://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html