# Git Workflow

> Git workflow 综合指南。Invoke when user wants to make commits, needs commit format guidance, or after completing coding tasks. Use when this capability is needed.

- Skill: `tomevault-io/git-workflow-52` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/git-workflow-52`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/git-workflow-52/raw
- Safety review: pending (external: skill-scanner PASS, skillspector CAUTION)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/git-workflow-52

---


# Git Workflow 综合指南

本技能包含完整的 Git 提交工作流指南，涵盖提交规范和任务完成后的提交流程。

## 📚 目录

1. [Git Commit 规范](#git-commit-规范) - 提交信息格式规范
2. [Task Completion Commit](#task-completion-commit) - 任务完成后的提交指南
3. [快速参考](#快速参考) - 提交流程和 Emoji 速查

---

## Git Commit 规范

### 🎯 原子提交原则

**每个 commit 只包含一个主题的变更**。如果一次修改涉及多个方面，应该拆分成多个 commit：

```bash
# ✅ 正确：拆分成两个独立的 commit
git add src/components/viewpost/vp-overlay-image.vue
git commit -m "♻️ 重构图片浮窗组件拖拽缩放逻辑"

git add .trae/skills/typescript-standards/skill.md
git commit -m "📝 更新 TypeScript 类型注解规范"

# ❌ 错误：不要混在一个 commit 中
git add 文件 1 文件 2
git commit -m "♻️ 重构组件并更新 TypeScript 规范"
```

### 提交格式

```
<emoji> <描述>
```

- **emoji**：使用 Unicode emoji 图标，放在提交信息开头
- **描述**：使用中文，以动词开头，简短明了
- **一行不超过 100 字符**
- **禁止括号声明**：不要使用 `✨ feat(xxx)` 这种格式

### 拆分指南

| 场景                | 拆分方式          | 示例                              |
| ------------------- | ----------------- | --------------------------------- |
| 代码重构 + 文档更新 | 分成两个 commit   | `♻️ 重构组件` + `📝 更新文档`     |
| 功能开发 + Bug 修复 | 分成两个 commit   | `✨ 添加功能` + `🐛 修复问题`     |
| 多个组件修改        | 按组件拆分 commit | `♻️ 重构组件 A` + `♻️ 重构组件 B` |
| 代码修改 + 配置文件 | 分成两个 commit   | `✨ 实现功能` + `🔧 更新配置`     |

### Emoji 选择指南

#### 🆕 新增内容

| Emoji | 场景          | 示例                          |
| ----- | ------------- | ----------------------------- |
| ✨    | 新功能        | `✨ 添加用户个人页面跳转功能` |
| 🎨    | 代码结构/格式 | `🎨 重构角色卡片组件`         |
| 📝    | 文档          | `📝 更新 README`              |
| 🎉    | 初始项目      | `🎉 初始化项目`               |
| ✅    | 测试          | `✅ 添加角色查询单元测试`     |

#### 🔧 修改内容

| Emoji | 场景        | 示例                        |
| ----- | ----------- | --------------------------- |
| 🐛    | Bug 修复    | `🐛 修复角色生日判断逻辑`   |
| 🩹    | 小修复/补丁 | `🩹 补充首页 mini 参数处理` |
| ⚡️    | 性能优化    | `⚡️ 优化角色列表渲染性能`   |
| ♻️    | 重构        | `♻️ 重构数据库操作层`       |
| 💄    | UI/样式     | `💄 调整首页卡片布局`       |

#### 🗑️ 删除/清理

| Emoji | 场景          | 示例                  |
| ----- | ------------- | --------------------- |
| 🔥    | 删除代码/文件 | `🔥 移除废弃组件`     |
| ⚰️    | 删除死代码    | `⚰️ 清理未使用的导入` |

#### 📦 依赖/配置

| Emoji | 场景     | 示例                |
| ----- | -------- | ------------------- |
| ➕    | 添加依赖 | `➕ 添加图表库依赖` |
| ➖    | 删除依赖 | `➖ 移除冗余依赖`   |
| ⬆️    | 升级依赖 | `⬆️ 升级 Vue 版本`  |
| 🔧    | 配置文件 | `🔧 更新 vite 配置` |

#### 🚀 部署/构建

| Emoji | 场景      | 示例              |
| ----- | --------- | ----------------- |
| 🚀    | 部署      | `🚀 部署生产环境` |
| 📦    | 编译/打包 | `📦 更新构建产物` |

#### 更多 Emoji

| Emoji | 场景      | Emoji | 场景        |
| ----- | --------- | ----- | ----------- |
| 🗃️    | 数据库    | 🔒    | 安全问题    |
| 📈    | 分析/跟踪 | 🏗️    | 架构变更    |
| 🧑‍💻    | 开发体验  | 🚸    | 用户体验    |
| 💫    | 动画/过渡 | 🔀    | 合并分支    |
| ⏪    | 回滚      | 🔖    | 版本标签    |
| 🚧    | 进行中    | 💚    | CI 修复     |
| 🚨    | 警告修复  | 👔    | 业务逻辑    |
| 🦺    | 验证      | 🌐    | 国际化      |
| 💥    | 重大变更  | 🍱    | 静态资源    |
| 🏷️    | 类型定义  | 🚚    | 移动/重命名 |

---

## Task Completion Commit

### 何时使用

**当以下条件满足时，应该提交 commit：**

- ✅ 用户请求的编码任务已完成
- ✅ 代码已通过 lint 和类型检查
- ✅ 没有未解决的错误
- ✅ 用户没有明确要求不提交

### 提交流程

#### 1. 检查变更内容

```bash
git status
```

#### 2. 分析变更主题

**关键原则：原子提交**

- 如果所有变更属于**同一个主题** → 一个 commit
- 如果变更涉及**多个主题** → 拆分成多个 commit

#### 3. 选择正确的 emoji

根据变更类型选择对应的 emoji（见上方 [Emoji 选择指南](#emoji-选择指南)）

#### 4. 执行提交

**单个主题的提交：**

```bash
git add <文件路径>
git commit -m "<emoji> <描述>"
```

**多个主题的提交（拆分）：**

```bash
# 提交 1
git add 文件 1
git commit -m "♻️ 重构组件 A"

# 提交 2
git add 文件 2
git commit -m "📝 更新文档"
```

#### 5. 编写提交信息

**格式要求：**

- emoji 图标 + 空格 + 中文描述
- 以动词开头
- 一行不超过 100 字符
- 不要使用 `feat:` 这种括号声明

**好的示例：**

```
✨ 添加用户个人页面跳转功能
🐛 修复角色生日判断逻辑
♻️ 重构图片浮窗组件拖拽缩放逻辑
📝 更新 TypeScript 类型注解规范
```

**错误的示例：**

```
✨ feat: 添加功能  # ❌ 使用了 type 声明
修复了一些 bug  # ❌ 没有 emoji
Added new feature  # ❌ 没有使用中文
```

### 特殊情况处理

#### 情况 1：用户明确要求不提交

如果用户说"先别提交"或"我自己来提交"，则跳过提交步骤。

#### 情况 2：变更太多不确定如何拆分

如果变更涉及多个方面但不确定如何拆分，应该询问用户：

> "这次修改涉及多个方面，您希望我：
>
> - 拆分成多个 commit 提交？
> - 还是合并成一个 commit 提交？"

#### 情况 3：提交失败

如果提交失败（例如有 lint 错误），应该：

1. 查看错误信息
2. 修复错误
3. 重新尝试提交

### 完整示例

**场景：用户要求重构图片浮窗组件并更新 TypeScript 规范**

任务完成后，应该这样提交：

```bash
# 检查变更
git status

# 提交 1：组件重构
git add src/components/viewpost/vp-overlay-image.vue
git commit -m "♻️ 重构图片浮窗组件拖拽缩放逻辑"

# 提交 2：规范更新
git add .trae/skills/typescript-standards/skill.md
git commit -m "📝 更新 TypeScript 类型注解规范"
```

---

## 快速参考

### 提交流程

```bash
# 1. 检查变更
git status

# 2. 添加文件（原子提交）
git add <文件路径>

# 3. 提交（格式：<emoji> <描述>）
git commit -m "<emoji> <中文描述>"
```

### Emoji 速查表

| Emoji | 场景     | Emoji | 场景     |
| ----- | -------- | ----- | -------- |
| ✨    | 新功能   | 🐛    | Bug 修复 |
| ♻️    | 重构     | ⚡️    | 性能优化 |
| 💄    | UI/样式  | 📝    | 文档     |
| 🎨    | 代码格式 | 🔧    | 配置     |
| 🔥    | 删除     | 🚀    | 部署     |
| ⬆️    | 升级依赖 | 🗃️    | 数据库   |

### 提交示例

```
✨ 添加用户个人页面跳转功能
🐛 修复角色生日判断逻辑
🩹 补充首页 mini 参数&组件参数处理
♻️ 重构数据库操作为事务模式
⚡️ 优化角色列表渲染性能
💄 调整深色模式配色方案
📝 添加组件使用文档
⬆️ 更新依赖版本，修复安全警告
🔧 更新 vite 配置以支持新插件
🚸 统一 UIGF 导出交互，导出前选择导出路径
💫 添加页面转场动画效果
🐛 修复抽卡记录导出为空的问题
🏗️ 引入 Pinia 状态管理
🧑‍💻 优化热更新加载速度
```

---

## 相关文档

- [Git Commit Rules](../rules/git-commit-rules.md) - Git Commit 规则
- [TypeScript Standards](../typescript-standards/SKILL.md) - TypeScript 开发规范

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/BTMuli) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-16 -->

