APM

>Agent Skill

@xiaobei930/git

skilldevelopment

Git version control best practices: branching, commits, merging, conflict resolution, PR workflows. Use when managing branches, creating commits, merging code, or resolving conflicts.

apm::install
$apm install @xiaobei930/git
apm::allowed-tools
ReadWriteEditBashGrepGlob
apm::skill.md
---
name: git
description: "Git version control best practices: branching, commits, merging, conflict resolution, PR workflows. Use when managing branches, creating commits, merging code, or resolving conflicts."
allowed-tools: Read, Write, Edit, Bash, Grep, Glob
---

# Git 工作流技能

本技能提供 Git 版本控制的最佳实践。

## 触发条件

当用户提及以下关键词时自动激活:`git`, `commit`, `branch`, `merge`, `rebase`, `cherry-pick`, `PR`, `pull request`, `conflict`, `stash`, `gitflow`, `conventional commits`

常见场景:

- 管理 Git 分支
- 创建提交
- 处理合并
- 解决冲突
- 代码审查

## Workflow | 工作流程

### 1. 检查当前状态

```bash
git status
git branch -a
git log --oneline -5
```

根据状态确定下一步操作。

### 2. 选择操作类型

| 场景         | 执行流程                                    |
| ------------ | ------------------------------------------- |
| 创建功能分支 | `git checkout -b feature/xxx` → 开发 → 提交 |
| 提交代码     | `git add``git commit` → 验证             |
| 合并代码     | `git checkout main``git merge` → 推送    |
| 解决冲突     | 查看冲突 → 手动解决 → 标记解决 → 继续       |
| 创建 PR      | 推送分支 → `gh pr create` → 等待审查        |

### 3. 执行并验证

- 执行命令前确认当前分支和状态
- 执行后验证结果:`git status`, `git log --oneline -3`
- 确保无未提交的修改或冲突

### 4. 完成确认

```
✅ Git 操作完成!

📊 当前状态:
   分支: [当前分支名]
   最新提交: [commit message]

⚠️ 提醒:
   - 功能完成后记得创建 PR
   - 合并前确保通过所有测试
   - 定期从 main 分支同步更新
```

## 分支策略

### Git Flow

```
main (生产)

  └── develop (开发)

        ├── feature/xxx (功能分支)
        ├── release/x.x (发布分支)
        └── hotfix/xxx (热修复)
```

### GitHub Flow(推荐)

```
main (始终可部署)

  └── feature/xxx (功能分支)

        └── PR → Code Review → Merge
```

### 分支命名规范

```bash
# 功能分支
feature/add-user-auth
feature/JIRA-123-payment-integration

# Bug 修复
fix/login-validation
bugfix/JIRA-456-cart-total

# 热修复
hotfix/security-patch

# 发布
release/v1.2.0

# 重构
refactor/database-layer
```

## 提交规范 (Conventional Commits)

### 格式

```
<type>(<scope>): <subject>

<body>

<footer>
```

### 类型

| 类型     | 说明      | 示例                         |
| -------- | --------- | ---------------------------- |
| feat     | 新功能    | feat(auth): 添加 OAuth 登录  |
| fix      | Bug 修复  | fix(cart): 修复价格计算错误  |
| docs     | 文档更新  | docs(readme): 更新安装说明   |
| style    | 格式调整  | style: 格式化代码            |
| refactor | 重构      | refactor(api): 重构用户服务  |
| perf     | 性能优化  | perf(query): 优化搜索查询    |
| test     | 测试      | test(user): 添加用户注册测试 |
| chore    | 构建/工具 | chore(deps): 更新依赖        |
| ci       | CI 配置   | ci: 添加 GitHub Actions      |

### 示例

```bash
# 简单提交
git commit -m "feat(user): 添加用户头像上传功能"

# 带详情的提交
git commit -m "fix(payment): 修复支付金额精度问题

- 使用 Decimal 替代 float 处理金额
- 添加金额格式化工具函数
- 更新相关测试用例

Closes #123"

# 破坏性变更
git commit -m "feat(api)!: 重构 API 响应格式

BREAKING CHANGE: API 响应格式从 {data} 改为 {success, data, error}"
```

## 常用命令

> 详细内容参见 [commands-reference.md](commands-reference.md)

## 合并策略

### Merge(合并提交)

```bash
# 创建合并提交
git checkout main
git merge feature/xxx

# 优点:保留完整历史
# 缺点:历史线复杂
```

### Rebase(变基)

```bash
# 变基到 main
git checkout feature/xxx
git rebase main

# 优点:线性历史
# 缺点:改写历史,需要强制推送
```

### Squash Merge(压缩合并)

```bash
# 压缩为单个提交
git checkout main
git merge --squash feature/xxx
git commit -m "feat: 完成用户功能"

# 优点:干净的主分支历史
# 缺点:丢失详细提交记录
```

### 选择策略

| 场景            | 推荐策略     |
| --------------- | ------------ |
| 功能分支 → main | Squash Merge |
| main → 功能分支 | Rebase       |
| 长期分支同步    | Merge        |
| 发布分支        | Merge        |

## 冲突解决

### 解决步骤

```bash
# 1. 拉取最新代码
git fetch origin

# 2. 合并/变基
git rebase origin/main
# 遇到冲突

# 3. 查看冲突文件
git status

# 4. 编辑冲突文件
# 手动解决 <<<<<<< ======= >>>>>>> 标记

# 5. 标记已解决
git add resolved-file.ts

# 6. 继续变基
git rebase --continue

# 或放弃变基
git rebase --abort
```

### 冲突标记

```
<<<<<<< HEAD
当前分支的代码
=======
合并分支的代码
>>>>>>> feature/xxx
```

### VS Code 冲突解决

- Accept Current Change (保留当前)
- Accept Incoming Change (保留传入)
- Accept Both Changes (保留两者)
- Compare Changes (比较差异)

## Pull Request 流程

> 详细内容参见 [pr-workflow.md](pr-workflow.md)

## Git Hooks

> 详细内容参见 [hooks-guide.md](hooks-guide.md)

## .gitignore 最佳实践

```gitignore
# 依赖
node_modules/
venv/
__pycache__/

# 构建输出
dist/
build/
*.egg-info/

# 环境变量
.env
.env.local
.env.*.local

# IDE
.idea/
.vscode/
*.swp

# OS
.DS_Store
Thumbs.db

# 日志
*.log
logs/

# 测试覆盖率
coverage/
.coverage

# 缓存
.cache/
.pytest_cache/
```

## 最佳实践

1. **小而频繁的提交** - 每个提交做一件事
2. **有意义的提交信息** - 说明为什么,不只是什么
3. **保持分支更新** - 经常从主分支同步
4. **PR 前自检** - lint、test、review
5. **不要提交敏感信息** - 使用环境变量
6. **使用 .gitignore** - 忽略不需要的文件
7. **定期清理分支** - 合并后删除
8. **备份重要操作** - 变基前创建备份分支
9. **团队约定** - 统一的分支和提交规范
10. **利用 Git Hooks** - 自动化检查

## 快速场景指南 | Quick Scenarios

### 日常开发

```bash
# 开始新功能
git checkout main && git pull
git checkout -b feature/my-feature

# 提交工作
git add -A && git commit -m "feat: add new feature"

# 推送并创建 PR
git push -u origin feature/my-feature
gh pr create --fill
```

### 紧急修复

```bash
# 从 main 创建热修复分支
git checkout main && git pull
git checkout -b hotfix/critical-fix

# 修复并提交
git add -A && git commit -m "fix: critical bug"

# 快速合并
git checkout main && git merge hotfix/critical-fix
git push origin main
```

### 冲突解决

```bash
# 更新分支遇到冲突
git fetch origin
git rebase origin/main
# 手动解决冲突文件
git add <resolved-files>
git rebase --continue
```

## 委派到专业 Agent | Delegation to Agents

> 详细内容参见 [delegation.md](delegation.md)

> **记住**: Git 是协作的基石——清晰的分支策略和提交规范让团队协作事半功倍。