为什么需要提交规范?
在发起 Code Review 之前,如果提交的代码杂乱无章,审查者会非常痛苦。理解成本高,审查者得花大量时间猜测这个提交到底做了什么、为什么这么做。范围不明确也是一个问题,一个提交里混杂了多个功能的修改,难以聚焦审查。此外,混乱的提交信息会让日后排查问题、生成变更日志变得几乎不可能。
良好的提交规范旨在解决这些问题,它的核心目标是让每一次提交都是一个逻辑独立、意图明确、易于理解的故事单元。
提交规范详解
一份优秀的提交主要由两部分组成:提交信息和提交内容(代码变更集)。
提交信息规范
提交信息是写给未来维护者(包括你自己)的说明文档。一个常见的规范格式如下:
<类型>[可选 范围]: <主题> [空行] [正文] [空行] [脚注]
举个例子:
feat(auth): add login with GitHub OAuth
Add new `GithubOAuthProvider` class implementing the OAuth flow.
Extend `User` model to include `oauth_provider` and `oauth_id` fields.
Add unit tests for the new provider.
Closes #123
BREAKING CHANGE: The `User.login()` method now returns a Promise.
逐部分解析一下:
- 类型(Type):说明本次提交的性质。常用类型包括
feat(新功能)、fix(修复 bug)、docs(仅文档更改)、style(不影响代码逻辑的格式修改)、refactor(重构)、perf(性能优化)、test(测试用例)、chore(构建或辅助工具变动)。 - 范围(Scope,可选):说明本次提交影响的模块或组件。例如
(auth),(user-api)。这让审查者能快速定位受影响的核心区域。 - 主题(Subject):对本次更改的简短描述。使用祈使句、现在时(如 'add',而不是 'added'),首字母不需大写,结尾不加句号。长度建议在 50 个字符以内。

