3.0 KiB
Executable File
3.0 KiB
Executable File
Git Worktree
定义
Git Worktree是Git的一个功能,允许从同一个仓库检出多个工作目录,每个工作目录都是一个独立的分支。
核心思想:共享同一个.git目录,节省磁盘空间,实现多任务并行开发。
核心特征
1. 多工作区
- 一个仓库,多个工作目录
- 每个工作目录是一个独立分支
- 共享同一个.git目录
2. 并行开发
- 多个AI实例可以同时工作
- 互不干扰
- 快速切换
3. 节省空间
- 共享.git目录
- 不需要克隆多个仓库
- 节省磁盘空间
基本命令
创建Worktree
# 基于已有分支创建
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
# 列出所有工作区
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实例并行开发
# 主工作区:开发功能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 + 人工并行开发
# AI在feature-a开发
cd /project/feature-a
claude-code
# 人工在main分支修复紧急bug
cd /project/main
# 手动修复bug
场景3:Code Review时继续开发
# 主工作区:feature-a提交PR,等待review
# 新开工作区:继续开发feature-b
git worktree add -b feature-b ../feature-b
cd ../feature-b
claude-code
优势
- 并行开发:多个AI实例可以同时工作在不同分支
- 上下文隔离:每个功能的上下文独立,不会混淆
- 快速切换:不需要
git checkout,直接切换目录 - 节省空间:共享.git目录
挑战
- 分支管理:需要管理多个分支
- 冲突处理:可能需要处理分支冲突
- 学习成本:需要了解Git Worktree概念
最佳实践
- 命名规范:工作区目录名与分支名一致
- 及时清理:完成的功能及时删除Worktree
- AI工具支持:利用AI工具的自动Worktree功能
- 定期Prune:定期清理无效的工作区记录