当前位置: 首页 > news >正文

Conventional Commits 团队使用文档

Conventional Commits 团队使用文档

一、引言

在软件开发过程中,清晰、一致的提交信息对于项目的维护、协作以及自动化流程的实施至关重要。Conventional Commits 规范为我们提供了一种标准化的提交信息格式,有助于提高团队协作效率,提升项目的可维护性。本文档旨在介绍 Conventional Commits 规范在本团队项目中的具体使用方法和要求。

二、Conventional Commits 规范概述

Conventional Commits 规范的提交信息由以下几部分组成:

<类型>[可选 范围]: <描述>[可选 正文][可选 脚注]

2.1 类型(type)

类型指明了本次提交的性质,常见的类型及其含义如下:

类型描述
feat新增功能
fix修复 bug
docs文档更新
style代码格式调整(不影响代码逻辑)
refactor代码重构(既非新增功能,也非修复 bug)
test添加或修改测试代码
chore构建过程或辅助工具的变动

2.2 范围(scope)

范围是可选的,用于说明本次提交影响的范围,例如某个模块、功能点或技术组件等。例如,feat(user): 添加用户注册功能 中的 user 就是范围,表示该提交影响的是用户模块。

2.3 描述(description)

描述简要概括了此次提交的主要内容,需使用祈使句,首字母小写,且结尾不要加句号。例如,fix(login): 修复登录验证失败的问题 中的 修复登录验证失败的问题 就是描述。

2.4 正文(body)

正文是可选的,用于进一步阐述提交的详细信息,如修改的原因、背景等。

2.5 脚注(footer)

脚注同样是可选的,一般用于记录重大变更、关联的 issue 编号等。例如,Resolves: #123 表示该提交解决了编号为 123 的 issue。

三、团队使用规则

3.1 范围定义

根据项目的特点,我们对提交信息中“范围”的定义如下:

  • 模块范围:对于大型项目,可按照功能模块进行划分,如 user(用户模块)、order(订单模块)、product(商品模块)等。
  • 功能范围:针对具体的功能点,如 login(登录功能)、payment(支付功能)、search(搜索功能)等。
  • 技术范围:涉及技术组件或工具的提交,如 frontend(前端框架)、backend(后端服务)、database(数据库)等。

3.2 提交频率和粒度

  • 每次提交应该是一个相对独立、完整的功能或修复,避免将多个不相关的变更合并在一次提交中。
  • 提交信息能够清晰地反映本次变更的主要内容,便于团队成员快速理解。

3.3 审核机制

在代码审查过程中,审查人员需要对提交信息进行审核,确保其符合 Conventional Commits 规范。对于不符合规范的提交,要求开发者进行修改。

四、提交规范细则

4.1 原子提交原则

  1. 按功能模块拆分
    每次提交必须限定在单一逻辑功能或修复范围内,禁止跨模块/跨功能的"大包提交"。例如:

    • 前端UI调整与后端API修改需分开提交
    • 用户模块与订单模块的改动不可合并提交
    • 功能实现与配套测试代码需分开提交(特殊情况除外)
  2. 避免无关修改
    提交内容必须与本次变更直接相关,禁止夹带其他无关修改。例如:

    • 修复bug时不应同时调整代码格式
    • 新增功能时不应修改其他模块的配置文件
    • 文档更新需单独提交,不与代码变更混合

4.2 提交粒度指南

  1. 功能开发

    # 正确示例:按功能点拆分
    feat(user): 添加用户注册表单验证
    feat(order): 实现订单支付状态查询接口# 错误示例:跨功能大包提交
    feat: 添加用户系统和订单支付功能
    
  2. Bug修复

    # 正确示例:精确定位问题
    fix(login): 修复用户名包含特殊字符时登录失败的问题
    fix(api): 修复订单列表接口返回数据格式错误# 错误示例:模糊描述问题
    fix: 修复一些登录问题
    
  3. 代码重构

    # 正确示例:按重构对象拆分
    refactor(user): 将用户认证逻辑提取为独立服务
    refactor(order): 优化订单状态机实现# 错误示例:笼统重构
    refactor: 重构系统代码
    

4.3 特殊情况处理

  1. 紧急修复(Hotfix)
    紧急修复允许临时合并多个相关修改,但必须在提交信息中明确说明:

    fix(security): 紧急修复SQL注入漏洞(包含数据库脚本更新)1. 修改用户输入过滤逻辑
    2. 更新数据库字段长度限制
    3. 添加SQL查询参数化处理BREAKING CHANGE: 数据库字段长度变更,需执行迁移脚本
    
  2. 依赖更新
    第三方依赖更新需单独提交,并注明更新原因:

    chore(deps): 更新React到18.2.0版本- 修复已知安全漏洞CVE-2023-12345
    - 支持新的并发渲染特性
    

五、版本控制工作流

5.1 分支提交规范

  1. 主分支(main/master)

    • 仅接受通过CI/CD流程的自动合并
    • 禁止直接提交代码到主分支
  2. 特性分支(feature/*)

    • 遵循"一个特性一个分支"原则
    • 分支命名格式:feature/<类型>-<范围>-<简要描述>
    # 示例
    feature/feat-user-registration
    feature/fix-login-validation
    
  3. 修复分支(fix/*)

    • 用于紧急修复生产环境问题
    • 直接从主分支创建,修复后合并回主分支和开发分支
    # 示例
    fix/hotfix-sql-injection
    

5.2 拉取请求(PR)规范

  1. 标题格式
    PR标题必须符合Conventional Commits格式,例如:

    [feat] 用户模块 - 添加邮箱验证功能
    [fix] 支付模块 - 修复微信支付签名错误
    
  2. 描述要求

    • 详细说明变更内容和影响范围
    • 关联相关的issue编号
    • 提供测试覆盖情况说明
    ### 变更内容
    1. 添加邮箱格式验证正则表达式
    2. 实现邮箱验证码发送功能
    3. 更新用户注册流程### 测试覆盖
    - 单元测试覆盖率:95%
    - 已在测试环境验证通过### 关联Issue
    Closes #123
    

六、违规处理机制

  1. 自动化拦截
    通过Git钩子和CI/CD流程自动拦截不符合规范的提交:

    • 提交信息格式校验不通过时阻止提交
    • PR标题不符合规范时自动标记为待修改
  2. 人工干预
    对于首次违规的成员:

    • 由代码审查者指出问题并要求修改
    • 记录在团队知识库的"常见错误案例"中
  3. 重复违规处理
    对于多次违反提交规范的成员:

    • 安排一对一代码规范辅导
    • 在团队周会上进行案例分析
    • 影响季度绩效考核评分

七、附录

7.1 提交信息示例

feat(user): 添加用户注册功能在用户模块中新增了注册功能,支持邮箱和手机号注册。Resolves: #123
fix(login): 修复登录验证失败的问题由于密码加密算法错误,导致部分用户登录失败。现已经修复该问题。BREAKING CHANGE: 密码加密算法更新,旧密码需要重新设置。

7.2 参考链接

  • Conventional Commits 官方文档:https://www.conventionalcommits.org/

相关文章:

  • Go语言Stdio传输MCP Server示例【Cline、Roo Code】
  • Qt6.x检查网络是否在线(与Qt 5.x不同)
  • MySQL——七、索引
  • javascript 补充的一些知识点
  • 利用混合磁共振成像 - 显微镜纤维束成像技术描绘结构连接组|文献速递-深度学习医疗AI最新文献
  • Element-UI字体图标不显示
  • Jedis高版本的JedisPoolConfig没有maxActive和maxWait
  • Java中的反射
  • T-SQL在SQL Server中判断表、字段、索引、视图、触发器、Synonym等是否存在
  • MCP协议将颠覆传统数据集成
  • 2025-05-09 提示学习概念
  • QML AnimatedImage组件详解
  • 【动手学大模型开发 20】使用 Streamlit 部署大模型 RAG应用
  • C++跨平台开发实践:深入解析与常见问题处理指南
  • 西门子PLC串口转网口模块:工业通信的智能桥梁
  • 25FIC初赛(介质)
  • BUUCTF——杂项渗透之赛博朋克
  • 视频流:大华及海康视频流本地测试预览
  • 单调栈所有模版类型(4)
  • Windows11下通过Docker安装Redis
  • 巴基斯坦称对印度发起军事行动
  • 明查|哈佛大学批改美教育部长来信,红笔标出语法错误?
  • 人民财评:网售“婴儿高跟鞋”?不能让畸形审美侵蚀孩子身心
  • 新村回响:一周城市生活
  • 中方就乌克兰危机提出新倡议?外交部:中方立场没有变化
  • 从上海首个到成片复制,闵行零工市场如何优化劳动就业服务?