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 支持的备用别名,如 Close
或 Resolves
来代替 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 的一部分。