为什么捐赠
API 浏览器
联系站长
提交规范

目的

  • 在使用 git bisect 时可以忽略不重要的提交(如格式调整)
  • 在浏览历史记录时提供更清晰的信息

WARNING

此规范适用于所有 Quasar 仓库

精心维护的提交日志是一件既美观又实用的事情。git blamerevertrebaselogshortlog 等子命令会因此变得真正有用。审查他人的提交和 pull request 将变得有价值,并且可以独立完成。追溯几个月甚至几年前某个改动的原因,不仅成为可能,而且高效。

优秀 Git 提交信息的规则

  1. 用空行将主题与正文分开
  2. 主题行限制在 70 个字符以内
  3. 主题行首字母大写
  4. 主题行末尾不加句号
  5. 主题行使用祈使语气
  6. 正文每行不超过 80 个字符
  7. 正文用来说明"是什么"和"为什么",而不是"怎么做"

提交信息格式

type(<scope>): <Subject> #<github-ref-id>

<body>

<footer>

提交信息示例

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.

信息主题(第一行)

第一行不能超过 70 个字符,第二行始终为空行。type 和 scope 应始终使用小写,如下所示。

允许的 <type> 值:

  • feat - 面向用户的新功能,不是构建脚本的新功能
  • fix - 面向用户的 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 等

TIP

<scope> 可以包含多个值,用 & 分隔。例如:feat(app-vite&app-webpack): Add Capacitor mode

<scope> 可以为空(例如全局性的变更),此时省略括号。例如:style: Use semicolons

信息正文

  • 使用祈使句、现在时:“change” 而不是 “changed” 或 “changes”
  • 说明变更的动机,并与之前的行为进行对比

信息页脚

破坏性变更

所有破坏性变更都必须在页脚中以 BREAKING CHANGE 块的形式说明,该块应以 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
    }

引用 Issue

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

Closes #234

如果涉及多个 issue:

Closes #123, #245, #992