为提升代码提交信息的可读性和维护性,推荐遵循以下规范。本规范扩展了常用提交类型,并细化了格式要求,支持自动化生成变更日志(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`) | ## 提交信息格式规范 ### 基础格式 ```plaintext <类型>[可选范围]: <描述> -- 标题行(必填) // 空一行 [可选正文] -- 正文(可选) // 空一行 [可选页脚] -- 页脚(可选) ``` #### 格式说明 1. **标题行(必填)** * **类型**:从上述分类中选择,使用英文小写。 * **范围(可选)**:用括号包裹,描述影响模块(如 `(auth)`, `(user-api)`)。 * **描述**:简明扼要,使用**现在时**(如 "add" 而非 "added"),**首字母小写**,**无句号结尾**。 2. **正文(可选)** * 详细描述变更内容、动机及与之前行为的对比。 * 使用祈使句(如 "Change default timeout to...")。 3. **页脚(可选)** * **关联 Issue**:如 `Closes #123`, `Related #45`。 * **破坏性变更**:以 `BREAKING CHANGE:` 开头,说明变动及迁移方式。 #### 示例 ```plaintext feat(user): 添加 OAuth2 登录支持 - 集成 Google OAuth2 SDK - 添加用户令牌验证中间件 Closes #128 BREAKING CHANGE: 移除旧版基于 Cookie 的认证 ``` ## 高级规范 ### 长度限制 * **标题行**:不超过 50 个字符 * **正文每行**:不超过 72 个字符(避免 GitHub 自动换行) ### 语言与符号 * 使用英文(开源项目推荐)或团队统一语言 * 避免 Emoji 或特殊符号(可结合 Gitmoji 扩展,但需团队统一) ### 范围(Scope)推荐 | 范围示例 | 适用场景 | | ---------- | ------------ | | `(auth)` | 认证模块 | | `(db)` | 数据库相关 | | `(ci)` | 持续集成流程 | | `(ui)` | 用户界面组件 | ## 常见问题 ### 如何选择类型? * 影响用户的新功能 → `feat` * 修复用户可感知的缺陷 → `fix` * 仅开发者相关的变动 → `chore` 或 `build` ### 多类型变更如何处理? ### 原则 1. **主次分明**:选择**最主要**的变更类型作为标题类型 2. **补充说明**:在正文中描述次要变更,用 `(fixes #issue)` 等标记关联问题 3. **保持原子性**:如涉及不相关的大改动,应拆分为多个提交 **示例**:重构代码时修复了Bug ```plaintext refactor(auth): 简化令牌验证逻辑 - 移除冗余的加密步骤 - 修复token过期检查问题 (fixes #89) ``` Loading... 为提升代码提交信息的可读性和维护性,推荐遵循以下规范。本规范扩展了常用提交类型,并细化了格式要求,支持自动化生成变更日志(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`) | ## 提交信息格式规范 ### 基础格式 ```plaintext <类型>[可选范围]: <描述> -- 标题行(必填) // 空一行 [可选正文] -- 正文(可选) // 空一行 [可选页脚] -- 页脚(可选) ``` #### 格式说明 1. **标题行(必填)** * **类型**:从上述分类中选择,使用英文小写。 * **范围(可选)**:用括号包裹,描述影响模块(如 `(auth)`, `(user-api)`)。 * **描述**:简明扼要,使用**现在时**(如 "add" 而非 "added"),**首字母小写**,**无句号结尾**。 2. **正文(可选)** * 详细描述变更内容、动机及与之前行为的对比。 * 使用祈使句(如 "Change default timeout to...")。 3. **页脚(可选)** * **关联 Issue**:如 `Closes #123`, `Related #45`。 * **破坏性变更**:以 `BREAKING CHANGE:` 开头,说明变动及迁移方式。 #### 示例 ```plaintext feat(user): 添加 OAuth2 登录支持 - 集成 Google OAuth2 SDK - 添加用户令牌验证中间件 Closes #128 BREAKING CHANGE: 移除旧版基于 Cookie 的认证 ``` ## 高级规范 ### 长度限制 * **标题行**:不超过 50 个字符 * **正文每行**:不超过 72 个字符(避免 GitHub 自动换行) ### 语言与符号 * 使用英文(开源项目推荐)或团队统一语言 * 避免 Emoji 或特殊符号(可结合 Gitmoji 扩展,但需团队统一) ### 范围(Scope)推荐 | 范围示例 | 适用场景 | | ---------- | ------------ | | `(auth)` | 认证模块 | | `(db)` | 数据库相关 | | `(ci)` | 持续集成流程 | | `(ui)` | 用户界面组件 | ## 常见问题 ### 如何选择类型? * 影响用户的新功能 → `feat` * 修复用户可感知的缺陷 → `fix` * 仅开发者相关的变动 → `chore` 或 `build` ### 多类型变更如何处理? ### 原则 1. **主次分明**:选择**最主要**的变更类型作为标题类型 2. **补充说明**:在正文中描述次要变更,用 `(fixes #issue)` 等标记关联问题 3. **保持原子性**:如涉及不相关的大改动,应拆分为多个提交 **示例**:重构代码时修复了Bug ```plaintext refactor(auth): 简化令牌验证逻辑 - 移除冗余的加密步骤 - 修复token过期检查问题 (fixes #89) ``` 最后修改:2025 年 03 月 10 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 别忘了点赞或赞赏,让我知道创作的路上有你陪伴。