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

一套自用的git提交规范,可清晰的识别到关联的任务/bug - 实践

分享一套自用的git提交规范,可清晰的识别到关联的任务/bug

一、提交信息的基本结构

推荐使用约定式提交的一种变体,结构如下:

<类型>(<范围>): <主题>[#<禅道-ID>]<正文>(可选)<脚注>(可选)

一个完整的、优秀的示例:

feat(用户模块): 增加用户手机号绑定功能 [#12345]
- 新增手机号验证接口(/api/user/bind_mobile)
- 用户表增加 mobile 和 mobile_verified 字段
- 添加发送短信验证码的功能
关联禅道需求: http://your-zentao-domain/zentao/story-view-12345.html

二、核心组成部分详解

1. 类型 (Type) - 必选

表示本次提交的意图。以下是类型定义:

类型关键字含义适用场景禅道关联
feat新功能开发新的需求、功能关联 需求ID (如 #123
)
fix修复Bug修复测试提出的或已知的Bug关联 BugID (如 #456
)
docs文档更新修改文档(如README、接口文档),不涉及代码可关联需求/BugID,或无
style代码样式调整代码格式、缩进、分号等(不改变逻辑)通常无关联
refactor代码重构重构代码,既非修Bug也非加功能可关联需求ID(如性能优化需求)
test测试相关增加或修改测试用例可关联需求/BugID
chore杂项事务构建流程、依赖管理、工具脚本(如webpack配置)通常无关联
2. 范围 (Scope) - 可选

用括号括起来,说明提交影响的范围。这有助于快速定位变更。

  • 例如: 用户模块订单模块登录页API数据库等。
  • 如果修改范围很杂或难以概括,可以省略 (scope)
3. 主题 (Subject) - 必选

对本次提交的简短描述,不超过50个字符。

4. 禅道 ID - 强烈推荐

这是与禅道联动的关键!使用 # + ID 的形式。

  • 格式: [#12345]
  • 位置: 通常放在主题的末尾。
  • 作用: 很多工具(如GitLab, Jenkins)可以自动解析这个格式,生成超链接。即使不能,也极其便于人工搜索。
5. 正文 (Body) - 可选

在主题之后空一行,编写更详细的说明。

6. 脚注 (Footer) - 可选

通常用于放置不兼容的变动(以 BREAKING CHANGE: 开头)或关闭Issue(如 Closes #123, #245)。在你的场景下,可以放禅道需求的完整URL。

三、具体示例

示例1:完成一个需求

禅道需求: ID 为 10086,标题是“【用户中心】需要支持修改头像功能”

feat(用户中心): 支持用户上传和裁剪头像 [#10086]
- 新增头像上传接口 POST /api/user/avatar
- 新增图片裁剪组件(基于Cropper.js)
- 用户表增加 avatar_url 字段存储头像地址
See: http://zed.xxx.com/zentao/story-view-10086.html
示例2:修复一个Bug

禅道Bug: ID 为 50020,标题是“商品详情页加入购物车按钮点击无效”

fix(商品页): 修复加入购物车按钮点击无效的问题 [#50020]
修复了因事件绑定函数名错误导致点击无效的问题,将 `addToCart` 更正为 `addToCart`See: http://zed.xxx.com/zentao/bug-view-50020.html
示例3:处理多个任务(一次提交解决一个需求和一个Bug)
feat(订单): 增加订单导出为Excel的功能 [#10010]
fix(订单): 修复导出列表时间显示错误的问题 [#50015]
- 新增 POI 依赖用于生成 Excel
- 修复时区转换工具类的一个逻辑错误
http://www.hskmm.com/?act=detail&tid=15762

相关文章:

  • 撕开厂商锁定黑箱:MyEMS 如何用开源代码夺回能源管理的 “自主控制权”?
  • 继续 Vibe Coding 撸工具:Markdown写作 + 一键发布
  • C造桥与砍树
  • Keil uVision5 MDK 5.42安装教程(支持ARM Cortex全系列开发)
  • 2024 ICPC ECfinal E
  • 从Void到Task<PublishAggregateResult>:一次服务方法返回类型重构的纠结与决策
  • LVGL移植到STM32F4出现无法运行的问题
  • 题目记录(Before NOIP2025 ver)
  • 专业修复sqlserver master 数据库损坏。
  • jenkins job的configure中配置git时 选择的credential为什么不能选择secret认证方式的数据
  • Day21继承
  • C# Avalonia 15- Animation- ImageWipe
  • 题解:P8067 [BalkanOI 2012] balls
  • 题解:P8300 [COCI 2012/2013 #2] INSPEKTOR
  • SuperHarness-3D低压柜机电协同设计方案!
  • 详细介绍:.NET驾驭Word之力:打造专业文档 - 页面设置与打印控制完全指南
  • 使用.NET标准库实现多任务并行处理的详细过程 - 实践
  • 模型训练中 平均损失值和平均准确率的深入理解
  • torch.max函数在分类问题中的使用 学习
  • godot3.6字典遍历
  • 国产DevOps工具链崛起:Gitee领衔的本土化技术生态全景解读
  • 安装 elasticsearch-9.1.4的 IK分词器
  • react性能优化
  • 从研发效能到知识中枢:Gitee Wiki如何重塑企业知识管理范式
  • Gitee DevSecOps平台:军工软件研发的智能化革命
  • 杆状病毒表达系统为何成为蛋白表达首选
  • 日记3
  • Gitee如何重塑中国开发者的代码托管体验
  • 模块化面向对象 2章
  • css `isolation: isolate` - 详解