Update from Sync Service
This commit is contained in:
125
AI工程/概念/Git_Worktree.md
Executable file
125
AI工程/概念/Git_Worktree.md
Executable file
@@ -0,0 +1,125 @@
|
||||
# Git Worktree
|
||||
|
||||
> 相关:[[Harness工程]]、[[核心Loop]]、[[超级Loop]]
|
||||
|
||||
## 定义
|
||||
|
||||
**Git Worktree**是Git的一个功能,允许从同一个仓库检出多个工作目录,每个工作目录都是一个独立的分支。
|
||||
|
||||
**核心思想**:共享同一个.git目录,节省磁盘空间,实现多任务并行开发。
|
||||
|
||||
## 核心特征
|
||||
|
||||
### 1. 多工作区
|
||||
- 一个仓库,多个工作目录
|
||||
- 每个工作目录是一个独立分支
|
||||
- 共享同一个.git目录
|
||||
|
||||
### 2. 并行开发
|
||||
- 多个AI实例可以同时工作
|
||||
- 互不干扰
|
||||
- 快速切换
|
||||
|
||||
### 3. 节省空间
|
||||
- 共享.git目录
|
||||
- 不需要克隆多个仓库
|
||||
- 节省磁盘空间
|
||||
|
||||
## 基本命令
|
||||
|
||||
### 创建Worktree
|
||||
```bash
|
||||
# 基于已有分支创建
|
||||
git worktree add ../feature-login feature/login
|
||||
|
||||
# 创建新分支 + 工作区(最常用)
|
||||
git worktree add -b feature-payment ../feature-payment
|
||||
|
||||
# 查看所有worktree
|
||||
git worktree list
|
||||
|
||||
# 删除工作区
|
||||
git worktree remove ../feature-login
|
||||
```
|
||||
|
||||
### 管理Worktree
|
||||
```bash
|
||||
# 列出所有工作区
|
||||
git worktree list
|
||||
# 输出:
|
||||
# /project/main abc1234 [main]
|
||||
# /project/feature-a def5678 [feature-a]
|
||||
# /project/feature-b ghi9012 [feature-b]
|
||||
|
||||
# 删除工作区
|
||||
git worktree remove ../feature-a
|
||||
|
||||
# 强制删除(即使有未提交的更改)
|
||||
git worktree remove --force ../feature-a
|
||||
|
||||
# 清理已删除的工作区记录
|
||||
git worktree prune
|
||||
```
|
||||
|
||||
## 使用场景
|
||||
|
||||
### 场景1:多AI实例并行开发
|
||||
```bash
|
||||
# 主工作区:开发功能A
|
||||
cd /project/feature-a
|
||||
claude-code # 启动Claude Code
|
||||
|
||||
# 新开终端:开发功能B
|
||||
cd /project/feature-b
|
||||
claude-code # 启动另一个Claude Code实例
|
||||
|
||||
# 再开终端:开发功能C
|
||||
cd /project/feature-c
|
||||
claude-code # 启动第三个Claude Code实例
|
||||
```
|
||||
|
||||
### 场景2:AI + 人工并行开发
|
||||
```bash
|
||||
# AI在feature-a开发
|
||||
cd /project/feature-a
|
||||
claude-code
|
||||
|
||||
# 人工在main分支修复紧急bug
|
||||
cd /project/main
|
||||
# 手动修复bug
|
||||
```
|
||||
|
||||
### 场景3:Code Review时继续开发
|
||||
```bash
|
||||
# 主工作区:feature-a提交PR,等待review
|
||||
# 新开工作区:继续开发feature-b
|
||||
git worktree add -b feature-b ../feature-b
|
||||
cd ../feature-b
|
||||
claude-code
|
||||
```
|
||||
|
||||
## 优势
|
||||
|
||||
1. **并行开发**:多个AI实例可以同时工作在不同分支
|
||||
2. **上下文隔离**:每个功能的上下文独立,不会混淆
|
||||
3. **快速切换**:不需要`git checkout`,直接切换目录
|
||||
4. **节省空间**:共享.git目录
|
||||
|
||||
## 挑战
|
||||
|
||||
- **分支管理**:需要管理多个分支
|
||||
- **冲突处理**:可能需要处理分支冲突
|
||||
- **学习成本**:需要了解Git Worktree概念
|
||||
|
||||
## 最佳实践
|
||||
|
||||
1. **命名规范**:工作区目录名与分支名一致
|
||||
2. **及时清理**:完成的功能及时删除Worktree
|
||||
3. **AI工具支持**:利用AI工具的自动Worktree功能
|
||||
4. **定期Prune**:定期清理无效的工作区记录
|
||||
|
||||
## 相关概念
|
||||
|
||||
- [[Harness工程]]:Git Worktree是Harness的组成部分
|
||||
- [[核心Loop]]:Git Worktree支持并行执行多个Loop
|
||||
- [[超级Loop]]:Git Worktree支持并行执行多个超级Loop
|
||||
Reference in New Issue
Block a user