Go Wiki: 提交消息

提交消息,也称为 CL(更改列表)描述,应按照 https://golang.ac.cn/doc/contribute#commit_messages 进行格式化。例如,

net/http: handle foo when bar

[longer description here in the body]

Fixes #12345

值得注意的是,对于主题(描述的第一行)

  • 更改所影响的包的名称放在冒号之前
  • 冒号后面的部分使用动词时态 + 短语来完成空白,“此更改将 Go 修改为 ___________”
  • 冒号后面的动词使用小写字母
  • 末尾没有句号
  • 应尽量保持简短(许多 git 查看工具偏好在 76 个字符以内,尽管 Go 对此并不十分严格)。

对于正文(描述的其余部分)

  • 文本应换行到大约 76 个字符(主要是为了适应 git 查看工具),除非您确实需要更长的行(例如,用于 ASCII 艺术、表格或长链接)。
  • Fixes 行放在正文之后,两者之间有一个空新行。(允许但不要求使用句号,例如 Fixes #12345.)。
  • 提交消息中包含 Markdown。
  • 我们使用 Signed-off-by 行。不要添加它们。我们的 Gerrit 服务器和 GitHub 机器人会强制执行 CLA 合规性。
  • 引用 CL 时,请优先使用“CL nnn”或 go.dev/cl/nnn 短链接,而不是直接的 Gerrit URL 或 git hash,因为这样更具未来兼容性。
  • 在存储库之间移动代码时,请包含 CL、存储库名称和从中/移动到的 git hash,以便更容易追溯历史/归因。

不要使用 GitHub 支持的备用别名,如 CloseResolves 来代替 Fixes

要将提交链接到一个问题而不将其标记为已修复——例如,如果提交正在朝着修复方向努力,但尚未完全修复——GitHub 只要求在提交消息中提及该问题的编号。按惯例,Go 提交会在消息底部使用 For 来提及,这可能是在预期 Fixes 的地方,即使编号也在提交消息的正文中提及。

例如

Refactor func Foo.
This will make the handling of <corner case>
shorter and easier to test.

For #12345

在其他 Git 项目中,通常使用 Updates 而不是 For,这也同样可以接受,尽管它不太符合逻辑(提交并没有更新问题)。更精确的措辞也同样适用。在代码审查中不要过于挑剔:不值得要求人们从 Updates 或其他内容更改为 For,反之亦然。

Reverts

您可以使用 Gerrit 的 Revert 按钮回滚更改。Gerrit 会为您生成一个描述。编辑该描述,在 Git 修订号旁边或代替它添加要回滚的 Gerrit CL 号。

请勿使用 Gerrit UI 创建对 revert 的 revert,因为这会立即通知相关人员。而是将其作为新更改邮件发送,并在描述中解释这是 CL NNNNNN 的向前滚动,而 CL NNNNNN 将其回滚了。

其他存储库

对于非“go”存储库(“crypto”、“tools”、“net”等),主题仍然是包的名称,但您需要使用 GitHub org/repo 语法来完全限定问题编号。

cipher/rot13: add new super secure cipher

Fixes golang/go#1234

值得注意的是,第一行主题应包含 x/crypto/ 前缀。我们只在问题跟踪器中使用它。

非规范性引用

GitHub Pull Requests

如果您使用 GitHub Pull Requests,您的提交消息将由 GerritBot 根据您的 PR 的标题和描述构建。请参阅 GerritBot 如何确定最终的提交消息?

如果有人要求您修改提交消息,您需要修改您的 PR。


此内容是 Go Wiki 的一部分。