基本结构
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
- type:提交类型,用于描述提交的目的或影响范围。
- scope:可选,用于指定提交的范围或模块。
- subject:提交的简短描述,通常不超过50个字符。
- body:可选,用于提供更详细的提交说明(描述为什么修改、与之前行为的对比、说明实现思路),可以包含多行文本。
- footer:可选,用于提供一些额外的信息,关联的 issues(比如Closes
#123
, Fixes#45
,#67
)、破坏性变更(BREAKING CHANGE, 说明不兼容的改动及迁移方法)等。
提交类型
- feat:新功能(new feature)
- fix:缺陷修复(bugfix)
- docs:文档变更
- style:格式(不影响代码运行的变动,空格、分号等)
- refactor:重构(即不是新增功能,也不是修改 bug 的代码变动)
- test:增加测试
- chore:构建过程或辅助工具的变动
- perf:性能优化
- revert:回滚到上一个版本
提交示例
常用示例
feat: 添加用户登录功能
fix: 修复首页图片loading失败问题
docs: 更新API使用说明文档
style: 格式化用户模型代码
refactor: 重构用户模块逻辑
test: 添加用户注册测试用例
chore: 升级commons-lang3库到v3.8.1版本
perf: 优化图片loading速度
revert: 回退用户权限更新代码
完整示例
feat(api): 实现用户数据导出为 CSV 功能
新增用户数据导出的 RESTful 接口 `/users/export`,支持按时间范围过滤数据。
- 添加 CSV 生成工具类 CsvGenerator
- 增加相关单元测试
- 更新 API 文档
Closes #112
BREAKING CHANGE: 移除旧版导出接口 `/legacy/export`
提交原则
- 简洁性:描述不要过于冗长或模糊,力求准确、精炼
- 原子性:每个提交应尽可能专注于单一的更改,不要将无关的修改混杂在一个 commit 中
- 及时提交:在完成一个逻辑上完整且可测试的功能、修复或改进后立即提交,而不是积累大量未提交的代码再一次性提交
常见错误示例
过于模糊
fix: 修复bug ❌
fix: 修改注册时邮箱验证码错误 ✔️
多合一提交
feat: 添加用户登录和注册功能 ❌(应拆分为两个提交)
技术细节缺失
refactor: 优化代码 ❌
refactor: 使用策略模式重构订单处理逻辑 ✔️