# Git工作流

## 规则（Rules）

# Git工作流 - 规范

## 分支命名规范

| 分支类型 | 命名格式 | 来源 | 合并到 |
|:---------|:---------|:-----|:-------|
| 主分支 | `main` / `master` | — | — |
| 开发主线 | `develop` | `main` | `main` |
| 功能分支 | `feat/{描述}` | `develop` | `develop` |
| 修复分支 | `fix/{描述}` | `develop` | `develop` |
| 热修复分支 | `hotfix/{描述}` | `main` | `main` + `develop` |
| 发布分支 | `release/v{版本}` | `develop` | `main` + `develop` |

## 提交信息规范（Conventional Commits）

```
<类型>(<范围>): <简短描述>
```

| 类型 | 说明 |
|:-----|:-----|
| `feat` | 新功能 |
| `fix` | Bug 修复 |
| `docs` | 文档变更 |
| `refactor` | 重构 |
| `perf` | 性能优化 |
| `test` | 测试相关 |
| `chore` | 构建/依赖变更 |

## .gitignore 必须包含项

```
node_modules/
dist/
build/
.env
.env.local
*.log
.DS_Store
coverage/
.cache/
```

## 禁止行为
- ❌ 禁止直接向 main 分支提交代码
- ❌ 禁止在 commit 中包含敏感信息（密码、密钥）
- ❌ 禁止提交大文件（>10MB）
- ❌ 禁止在功能分支中混入无关修改

## 方法（Methods）

# Git工作流 - 方法

## 前置条件
- [ ] 已创建或克隆 Git 仓库
- [ ] 已确认当前所在分支

## 流程概览
```
创建功能分支 → 开发提交 → 推送到远程 → 创建 PR → Code Review → 合并 → 删除分支
```

## 详细步骤

### 步骤1：从 develop 拉取功能分支
```bash
git checkout develop
git pull origin develop
git checkout -b feat/my-feature
```

### 步骤2：开发并提交
```bash
git add <文件>
git commit -m "feat(模块): 实现xxx功能"
```

### 步骤3：推送到远程
```bash
git push origin feat/my-feature
```

### 步骤4：创建 Pull Request
- 目标分支：`develop`
- PR 标题格式：`<类型>(<范围>): <描述>`
- PR 描述包含：背景、变更内容、测试验证

### 步骤5：Code Review
- 至少 1 人 Review 通过
- CI 流水线通过
- 无未解决的对话

### 步骤6：合并
- 功能分支使用 **Squash Merge**
- 发布分支使用 **Merge Commit**
- 合并后删除远程分支

### 步骤7：同步本地
```bash
git checkout develop
git pull origin develop
git branch -d feat/my-feature
```

## 技巧（Tips）

# Git工作流 - 技巧

## 1. 先拉再改
每次开始新功能前先 `git pull` 同步 develop，减少冲突。

## 2. 小步提交
每个 commit 只做一件事，方便回退和 Review。

## 3. 及时删除已合并分支
合并后删除本地和远程分支，保持仓库整洁：
```bash
git branch -d feat/xxx
git push origin --delete feat/xxx
```

## 4. 冲突处理
```bash
# 拉取目标分支最新代码
git fetch origin develop
# 在功能分支上 rebase
git rebase origin/develop
# 解决冲突后
git add .
git rebase --continue
```

## 5. 提交信息速查
```bash
git commit -m "feat: 新功能"
git commit -m "fix: 修复bug"
git commit -m "docs: 更新文档"
git commit -m "refactor: 重构代码"
```
