AI摘要
本文介绍了一种代码提交信息规范,旨在提高代码的可读性和维护性。规范包括提交类型的分类(主要类型、特殊类型和扩充类型),提交信息的格式规范(基础格式、格式说明和示例),以及高级规范(长度限制、语言与符号、范围推荐)。此外,还提供了常见问题的解答,帮助开发者更好地遵循规范。
为提升代码提交信息的可读性和维护性,推荐遵循以下规范。本规范扩展了常用提交类型,并细化了格式要求,支持自动化生成变更日志(CHANGELOG)和版本管理。
提交类型分类
主要类型(影响版本功能)
| 类型 | 说明 |
|---|---|
feat | 新增功能(feature),通常对应 Minor 版本更新 |
fix | Bug 修复,通常对应 Patch 版本更新 |
特殊类型(非功能代码变更)
| 类型 | 说明 |
|---|---|
docs | 仅文档更新(如 README、CHANGELOG、注释等) |
style | 代码格式调整(空格、缩进、分号等),不改变逻辑 |
refactor | 代码重构,既非新增功能也非修复 Bug |
test | 测试用例新增或修改(包括单元测试、集成测试) |
chore | 非代码/文档的杂项变更(如构建脚本、工具配置等) |
扩充类型(扩展场景支持)
| 类型 | 说明 |
|---|---|
build | 构建系统或外部依赖变更(如 webpack、npm、Gradle) |
perf | 性能优化相关的代码变更 |
ci | CI 配置或脚本修改(如 GitHub Actions、Jenkins、Travis) |
revert | 回滚某次提交 |
security | 安全补丁或防护措施(如 XSS、SQL 注入修复) |
db | 数据库相关变更(迁移脚本、表结构修改) |
i18n | 国际化或本地化调整(如多语言文案、时区处理) |
typo | 修复代码或文档中的拼写错误(若影响功能,优先用 fix) |
提交信息格式规范
基础格式
<类型>[可选范围]: <描述> -- 标题行(必填)
// 空一行
[可选正文] -- 正文(可选)
// 空一行
[可选页脚] -- 页脚(可选)格式说明
标题行(必填)
- 类型:从上述分类中选择,使用英文小写。
- 范围(可选):用括号包裹,描述影响模块(如
(auth),(user-api))。 - 描述:简明扼要,使用现在时(如 "add" 而非 "added"),首字母小写,无句号结尾。
正文(可选)
- 详细描述变更内容、动机及与之前行为的对比。
- 使用祈使句(如 "Change default timeout to...")。
页脚(可选)
- 关联 Issue:如
Closes #123,Related #45。 - 破坏性变更:以
BREAKING CHANGE:开头,说明变动及迁移方式。
- 关联 Issue:如
示例
feat(user): 新增邮箱绑定功能 (#42)
- 添加邮箱验证接口 POST /verify-email
- 实现绑定成功后的邮件通知服务
- 增加用户设置页面的邮箱管理UI组件fix(auth): 修复JWT令牌过期时间计算错误
- 将时间单位从秒修正为毫秒
- 增加token有效期测试用例
- 修复相关文档中的错误描述docs(README): 添加项目本地启动指南
- 补充Node.js版本要求说明
- 增加环境变量配置示例
- 附调试模式启动命令refactor(payment): 解耦支付回调处理逻辑
- 抽离支付宝/微信支付解析器
- 引入策略模式实现支付网关
- 保持原有接口兼容性perf(db): 优化用户查询SQL性能
- 为user_id添加复合索引
- 重写N+1查询为JOIN语句
- 查询响应时间从1200ms降至150mstest(calculator): 增加税率计算边界测试
- 添加零值/负值输入测试
- 覆盖税率阶梯临界点用例
- 修复浮点数精度问题style(profile): 优化移动端头像上传交互
- 增加拖拽上传区域视觉反馈
- 裁剪控件添加手势缩放支持
- 统一错误提示Toast样式chore(deps): 升级axios到v1.6.0
- 修复CVE-2023-45857漏洞
- 更新拦截器类型定义
- 移除已弃用的maxContentLength配置hotfix(order): 修复支付成功状态未更新
- 修复MQ消息丢失导致的回调失败
- 增加支付状态补偿机制
- 紧急补丁版本v1.2.1WIP(search): 实现商品搜索分词功能
- 集成jieba中文分词库
- 构建商品关键词倒排索引
- TODO: 优化长尾词匹配算法BREAKING CHANGE(api): 重构用户端点路径
- /api/v1/users => /api/core/users
- 移除旧版地址支持
- 升级指南见 MIGRATION.mdi18n(login): 新增法语语言包
- 翻译登录页全部文案
- 添加语言切换下拉菜单
- 支持动态加载语言资源config(ci): 迁移到GitHub Actions
- 添加单元测试流水线
- 配置自动部署到Staging环境
- 移除Travis CI配置文件build: 添加Docker多阶段构建
- 优化生产环境镜像大小
- 分离构建依赖与运行环境
- 镜像体积从1.2GB降至280MBrelease: v2.3.0 电商大促版本
- 支持限时秒杀功能
- 新增拼团模块
- 优化库存扣减性能高级规范
长度限制
- 标题行:不超过 50 个字符
- 正文每行:不超过 72 个字符(避免 GitHub 自动换行)
语言与符号
- 使用英文(开源项目推荐)或团队统一语言
- 避免 Emoji 或特殊符号(可结合 Gitmoji 扩展,但需团队统一)
范围(Scope)推荐
| 范围示例 | 适用场景 |
|---|---|
(auth) | 认证模块 |
(db) | 数据库相关 |
(ci) | 持续集成流程 |
(ui) | 用户界面组件 |
常见问题
如何选择类型?
- 影响用户的新功能 →
feat - 修复用户可感知的缺陷 →
fix - 仅开发者相关的变动 →
chore或build
多类型变更如何处理?
原则
- 主次分明:选择最主要的变更类型作为标题类型
- 补充说明:在正文中描述次要变更,用
(fixes #issue)等标记关联问题 - 保持原子性:如涉及不相关的大改动,应拆分为多个提交
示例:重构代码时修复了Bug
refactor(auth): 简化令牌验证逻辑
- 移除冗余的加密步骤
- 修复token过期检查问题 (fixes #89)
1 条评论
测试测试测试