目标
- 允许通过 git bisect 忽略提交(不重要的提交,如格式化)
- 在浏览历史记录时提供更好的信息
警告
此规则适用于所有 Quasar 代码库.
精心维护的日志是一件美丽而有用的东西。 git blame
,revert
,rebase
,log
,shortlog
以及其他子命令变得栩栩如生。审查他人的提交和拉取请求变成了一件值得做的事情,而且突然可以独立完成。理解几个月甚至几年前发生的事件不仅成为可能,而且变得高效。
优秀 Git 提交信息的规则
- 用空行将主题与正文分开
- 将主题行限制在 70 个字符以内
- 主题行首字母大写
- 主题行末尾不要加句号
- 在主题行中使用祈使语气
- 将正文折行到 80 个字符
- 使用正文解释什么和为什么,而不是怎么做
提交信息的格式
type(<scope>): <Subject> #<github-ref-id>
<body>
<footer>
content_paste
提交信息的示例
fix(ui): Ensure Range headers adhere more closely to RFC 2616 #2310
To add new dependency use `range-parser`to compute the range.
It is more well-tested in the wild.
BREAKING CHANGE:
port-runner command line option has changed to runner-port.
To migrate your project, change all the commands,
where you use --port-runner to --runner-port.
content_paste
信息主题(第一行)
第一行不能超过 70 个字符,第二行始终为空。 类型和范围应始终小写,如下所示。
允许的 <type>
值
- feat - 为用户提供的新的功能,而不是为构建脚本提供的新的功能
- fix - 为用户修复的 bug,而不是为构建脚本修复的 bug
- docs - 仅文档更改
- style - 不影响代码含义的更改(空白、格式化、缺少分号等)
- refactor - 重构生产代码,既不修复 bug 也不添加功能的代码更改
- chore - 其他不修改 src 或 test 文件的更改(无生产代码更改)以及依赖项更新
- perf - 提高性能的更改
- revert - 撤消之前的提交
- test - 添加缺少的测试,重构测试;无生产代码更改
- build - 影响构建系统或外部依赖项的更改(例如
ui/build/*
) - ci - 对持续集成配置文件和脚本的更改(例如 GitHub Actions)
示例 <scope>
值
- 与目录/包相关的:ui、cli、app-webpack、app-vite 等。
- 与功能相关的:api、TouchSwipe、QTime 等。
提示
The <scope>
可以包含用 ampersand(&
) 分隔的多个值。 例如:feat(app-vite&app-webpack): Add Capacitor mode
.
The <scope>
可以为空(例如,如果更改是全局的),在这种情况下,圆括号将被省略。 例如:style: Use semicolons
信息正文
- 使用祈使语气,现在时态:“change” 而不是 “changed” 或者 “changes”
- 包含更改的动机并与之前的行为对比
信息页脚
重大变更
所有重大变更都必须在页脚中作为重大变更块进行说明,该块应以 BREAKING CHANGE: 开头,后面跟一个空格或两个换行符。 提交信息的其余部分则是更改的描述、理由和迁移说明。
BREAKING CHANGE: isolate scope bindings definition has changed and
the inject option for the directive controller injection was removed.
To migrate the code follow the example below:
Before:
scope: {
myAttr: 'attribute',
myBind: 'bind',
myExpression: 'expression',
myEval: 'evaluate',
myAccessor: 'accessor'
}
After:
scope: {
myAttr: '@',
myBind: '@',
myExpression: '&',
// myEval - usually not useful, but in cases where the expression is assignable, you can use '='
myAccessor: '=' // in directive's template change myAccessor() to myAccessor
}
content_paste
引用问题
已关闭的问题应在页脚的单独一行中列出,并在前面加上 “Closes” 关键字,例如
Closes #234
或者,如果有多个问题
Closes #123, #245, #992