Skip to content

Worktree 并行开发

Claude Code 内置 Git Worktree 支持,一条命令开多个 Claude 并行处理不同分支,不用频繁切分支

适用场景

  • 同时开发 3-5 个功能分支
  • 一边写新功能、一边修紧急 bug
  • 实验性改动(不污染主分支)
  • 团队推荐的"日常多任务"提效法

一句话原理

Git Worktree = 同一个 .git 数据库 + 多个工作目录。所有 commit/branch 共享,但每个 worktree 文件状态独立。

主仓库 myapp/                 ← 你日常开发
├── .git/
├── src/
└── ...

../myapp-feature-auth/         ← worktree 1,独立目录
├── .git → 链接到主仓库
└── src/                       ← 不同状态的文件

../myapp-bugfix-payment/       ← worktree 2
├── .git → 链接到主仓库
└── src/

3 个目录 = 3 个 Claude 可同时跑。

快速使用(Claude Code 内置)

bash
# 在主项目内
cd ~/myapp

# 一条命令创建 worktree + 启动 Claude
claude --worktree feature-auth

# 自动生成随机名(不用想名字)
claude --worktree

Claude Code 会自动:

  1. 创建 ../myapp-feature-auth/ 目录
  2. 在该目录新开 feature-auth 分支
  3. 切到该目录启动 Claude

等于把以下 5 步合一

bash
git worktree add ../myapp-feature-auth -b feature-auth
cd ../myapp-feature-auth
claude  # 启动

同时开多个 Claude

bash
# 终端 1
claude --worktree feature-auth

# 终端 2
claude --worktree bugfix-payment

# 终端 3
claude --worktree experimental-ui

# 终端 4(主分支,不开 worktree)
cd ~/myapp && claude

四个 Claude 各自独立 context,互不干扰

实战案例

案例 1:日常多线程

情境:你在写新功能 → 突然来紧急 bug

不用切分支、不用停服、不用 stash

开新终端:
  cd ~/myapp
  claude --worktree hotfix-prod-bug

在新 worktree 里修 bug、跑测试、合 PR

原来的功能开发 Claude 一点不受影响

案例 2:并行尝试 3 个方案

bash
# 终端 1:保守方案
claude --worktree approach-conservative

# 终端 2:现代方案
claude --worktree approach-modern

# 终端 3:实验方案
claude --worktree approach-experimental

三个 Claude 并行实现同一需求 → 你对比效果选最满意的合主分支。

案例 3:团队最佳实践

开发周一计划:
- worktree-1: 跑测试套件升级
- worktree-2: 重构 auth 模块
- worktree-3: 写新 API 端点
- worktree-4: 看 PR 反馈改 PR

你在 4 个终端切换,每个 Claude 独立推进。

命令清单

bash
# Claude Code 内置
claude --worktree <name>         # 创建并启动
claude --worktree                # 随机命名

# Git 原生命令(手动管理)
git worktree list                # 列出所有 worktree
git worktree add ../myapp-foo -b foo
git worktree remove ../myapp-foo # 删除
git worktree prune               # 清理无效引用

清理

用完一个 worktree 后记得删,否则越来越乱:

bash
# 方法 1:用 git 命令
git worktree remove ../myapp-feature-auth

# 方法 2:手动
rm -rf ../myapp-feature-auth
git worktree prune

# 方法 3:分支也一起删
git worktree remove ../myapp-feature-auth
git branch -d feature-auth

.gitignore 配置

如果 worktree 创建在主仓库内部(不推荐),加 .gitignore:

.claude/worktrees/

更推荐放主仓库外(默认行为)—— 不会污染。

适合 vs 不适合

✅ 适合用 worktree

  • 多个独立功能(auth / payment / ui 等不相关)
  • 长时间任务(编译 / 训练 / 大重构)
  • 实验性改动(怕搞坏主分支)
  • 急 bug + 慢功能并行

❌ 不适合

  • 顺序依赖任务(B 依赖 A 完成)
  • 同一个文件的多个变更(会冲突)
  • 小修改(开销大于收益)
  • 没明确边界的探索(Claude 容易瞎改)

给每个 Claude 清晰边界

启动 worktree Claude 后第一句话就划界

你在 ../myapp-feature-auth/ worktree 里工作。
只改 src/auth/ 下的文件。
不要碰 src/payment/ 或 src/ui/。
其他 worktree 在并行做别的事,避免冲突。

防止 Claude 想"顺手"改其他模块。

CLAUDE.md 跨 worktree 共享

所有 worktree 共享同一 .git,意味着也共享主仓库的 CLAUDE.md(如果有的话)。

每个 worktree 内可以额外加 .claude/worktree.md 写专属规则:

markdown
# 本 worktree(feature-auth)专属

只关注 auth 模块。本任务的 TODO:
- [ ] 实现 magic link 登录
- [ ] 加 rate limiting
- [ ] 测试覆盖 ≥ 80%

性能影响

影响
磁盘每个 worktree 完整副本(node_modules 等会复制)
内存每个 Claude 独立 context(每个 ~500MB-1GB Node 进程)
网络共享 git remote,pull/push 集中

node_modules 不会共享 —— 如果你想省磁盘,用 pnpm + 软链接策略。

跟 Subagent 的对比

WorktreeSubagent
上下文完全独立独立但临时
文件系统不同目录同目录
并发数你能开多少终端最多 10
持久用完手动删任务完即销毁
适合长期并行功能短期委派任务

两者互补:用 worktree 隔离功能分支,每个 worktree 内还能开 subagent 做委派。

进阶:Boris 的 15 个 Claude 流派

社区有人同时跑 15 个 Claude(Boris 流),靠 worktree + tmux:

bash
# 用 tmux 一次开 15 个窗口
for i in {1..15}; do
  tmux new-window -t mysession -n "claude-$i"
  tmux send-keys -t "claude-$i" "claude --worktree task-$i" C-m
done

但实际3-5 个并行已经是甜蜜点 —— 你脑子能跟上的上限。

资源

内容采用 CC BY-NC-ND 4.0 协议 · 禁止商业使用 / 禁止改编 / 禁止训练 AI 模型