juechafun/20260206-备忘-工具技巧-git提交规范.md

256 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
#领域/未知
#复盘/0 #临时/备忘 #状态/待处理
## 一句话描述
[____git **Conventional Commits约定式提交** 规范____]
注意:请忽略以上内容
---
## 操作需求
问题描述是【输入内容】,请专业耐心的解答我的问题,并将你的答案整理归纳至【输出内容】
## 内容要求
1. 结论先行,主次分明:先给出「一句话核心结论」,再分点给出细节
2. 逐层递进逻辑链:原理->知识点->用法->案例,理解本质再应用
3. 实操为王,案例全覆盖:所有知识点必须配备「可实现的案例」
4. 避坑指南,强制标配:必须单独列出易踩坑点+精准解决方案
5. 融会贯通:讲解单个知识点时,必须主动关联同类/互补工具,明确差异、标准、场景,帮助建立知识体系
6. 浓缩总结,提炼精华,方便记忆:提炼所有重点为极简内容,方便复习和快速查阅
7. 语言风格:口语化、专业但不晦涩,复杂概念用「大白话 + 示例」解释,拒绝堆砌专业术语;所有命令 / 代码 / 参数格式工整,带中文注释,一目了然。
8. 内容结构:层级清晰,用标题 / 分点做区分,核心内容加粗标注,代码块独立展示,重点规则用「✅ 黄金规则」「⚠️ 避坑点」「💡 核心技巧」做醒目标注,阅读体验极佳。
9. 无冗余内容:不拓展无关知识点、不做无意义的参数罗列、不写复杂冷门用法,所有内容都围绕「吃透核心 + 落地实战」,精准匹配学习需求,不浪费时间。
10. 知识联动要求:当讲解后续内容时,必须主动关联之前讲解过的内容,形成知识闭环。
11. 联动案例:必须是高频使用场景
12.
## 输出格式
- [x] markdown
```markdown
## 一句话描述
【使用一句话概括】
## 详细解释
【你的解答】
## 延伸补充
...
### 常见避坑点
### 知识点浓缩
【背诵级,解决反复查资料的核心需求】
### 进阶优化方向
## 提问建议
...
---
```
## 注意
1. 请判断勾选框是否处于被勾选状态例如markdown勾选框处于未被勾选状态则无需输出markdown格式
以上内容为系统提示,为了辅助你更好的回答。
---
## 输入内容
| 项目 | 内容 |
| ------ | ---------------------------------------------- |
| 你的角色设定 | 你是一位结构化、体系化的[__软件工程,git______]教学专家,定位为精准知识的输出者 |
| 上下文 | **Conventional Commits约定式提交** 规范git 提交 |
| 约束 | |
| 任务目标 | 熟悉**Conventional Commits约定式提交** 规范,并应用到实际场景中 |
| 解决问题 | git 提交时提交混乱随意 |
| 服务于 | 项目更好的推进、管理 |
| | |
---
注意:请忽略以下内容
## 输出内容
## 一句话描述
约定式提交是一套标准化 Git 提交信息格式,通过固定结构规范提交日志,解决提交混乱问题,同时支持自动化生成版本、日志与项目管理。
## 详细解释
### 一、核心原理
本质是给 Git 提交信息定 “统一语法”,让提交日志从 “随意文字” 变成 “机器可读 + 人易理解” 的结构化数据,既方便团队协作,也能对接自动化工具(如生成 CHANGELOG、自动发版
### 二、核心知识点(结构 + 规则)
提交信息的标准结构(必选 + 可选):
```plaintext
<type>(<scope>): <subject>
// 空行
<body>
// 空行
<footer>
```
#### 1. 必选核心:<type>(提交类型)
✅ 黄金规则:**type 必须是固定枚举值,禁止自定义**,核心常用类型:
- `feat`:新功能(对应 SemVer 的 MINOR 版本)
- `fix`:修复 Bug对应 SemVer 的 PATCH 版本)
- `docs`仅文档修改README、注释等
- `style`:代码格式调整(不影响代码逻辑,如空格、分号)
- `refactor`:重构(既不是新功能也不是 Bug 修复,如代码优化、变量重命名)
- `test`:测试相关(新增 / 修改测试用例,不修改业务代码)
- `chore`:构建 / 工具 / 依赖调整(如打包配置、依赖更新、脚本修改)
#### 2. 可选:<scope>(影响范围)
标注修改的模块 / 文件 / 功能,用小括号包裹,无范围可省略括号,例:`feat(login): 新增登录验证码`
#### 3. 必选:<subject>(简短描述)
✅ 黄金规则:**不超过 50 字符,动词开头、小写开头、无结尾标点**,清晰说明 “做了什么”。
#### 4. 可选:<body>(详细说明)
换行后写具体修改原因、实现逻辑,每行不超过 72 字符,解释 “为什么改”。
#### 5. 可选:<footer>(脚注)
用于关联 Issue、标注破坏性变更格式
- 关联 Issue`Closes #123`(关闭 Issue 123
- 破坏性变更:`BREAKING CHANGE: 移除旧版登录接口`(对应 SemVer 的 MAJOR 版本)
### 三、实操用法
1. 简单提交:直接按格式写单行信息
bash
```
git commit -m "fix(user): 修复用户昵称过长截断问题"
```
2. 复杂提交用多行body+footer通过`git commit`(不带 - m进入编辑器编写。
### 四、全覆盖实战案例
1. 新功能提交
plaintext
```
feat(pay): 新增微信支付渠道
支持微信扫码支付对接微信支付V3接口
Closes #45
```
2. Bug 修复提交
plaintext
```
fix(cart): 修复购物车商品数量计算错误
解决商品数量为0时仍显示的问题修正数量校验逻辑
```
3. 文档修改
plaintext
```
docs: 更新README部署步骤
补充Docker部署的环境变量配置说明
```
4. 代码重构
plaintext
```
refactor(api): 重构用户信息查询接口
拆分接口逻辑,提升查询性能,不改变接口入参出参
```
5. 测试用例新增
plaintext
```
test(order): 新增订单支付超时测试用例
覆盖支付超时自动取消的场景测试
```
6. 构建配置调整
plaintext
```
chore: 升级webpack到5.0版本
优化打包体积,移除废弃插件
```
7. 破坏性变更
plaintext
```
feat(auth): 重构权限校验逻辑
BREAKING CHANGE: 移除旧版token校验方式统一使用JWT
```
## 延伸补充
### 一、关联工具 / 标准
1. **commitlint**:校验提交信息是否符合约定式提交规范,避免违规提交
2. **husky**Git 钩子工具,配合 commitlint 在提交前自动校验
3. **语义化版本SemVer**:约定式提交是 SemVer 的 “落地载体”type 直接对应版本升级规则feat→MINOR、fix→PATCH、BREAKING CHANGE→MAJOR
4. **standard-version**:基于约定式提交自动生成 CHANGELOG、升级版本、打 Tag
### 二、与其他提交规范的差异
- 对比 “随意提交”(如`fix bug``修改代码`):结构化、可自动化,团队协作无歧义
- 对比 “Angular 提交规范”:约定式提交是 Angular 规范的简化通用版,更易落地,无过度复杂的 type 限制
---
### 常见避坑点
⚠️ 避坑 1type 自定义(如用`add`代替`feat`
解决方案:严格使用核心 7 种 type禁止自创团队统一枚举表。
⚠️ 避坑 2subject 过长 / 带标点 / 大写开头(如`Fix: 修复了登录失败的问题,这个问题很严重`
解决方案:控制在 50 字符内,小写动词开头,去掉句号、感叹号。
⚠️ 避坑 3scope 滥用(如写`fix(all): 修复所有问题`
解决方案scope 精准到模块,无具体范围直接省略,不写模糊值。
⚠️ 避坑 4忽略 footer 的破坏性变更标注
解决方案:涉及接口删除、参数移除等 breaking 变更,必须加`BREAKING CHANGE:`脚注,避免线上风险。
⚠️ 避坑 5style 和 refactor 混淆(把代码逻辑优化写成 style