Claude Code 新功能:Worktree 并行开发,多个 Claude 同时帮你写代码

10 阅读9分钟

你有没有遇到过这样的场景:正在用 Claude Code 开发一个新功能,写到一半,突然来了个紧急 bug 要修。你不得不 stash 手头的代码,切换分支,修完再切回来。整个过程又慢又容易出错。

如果我告诉你,你可以同时开两个甚至三个 Claude Code 会话,每个都在独立的代码副本里干活,互不干扰——你会不会觉得效率直接翻倍?

这就是 Git Worktree 在 Claude Code 中的魔力。

Worktree 是 Claude Code 刚刚上线的新功能,更新到最新版就能直接使用,不需要任何额外配置。

什么是 Git Worktree?

简单来说,Git Worktree 让你从一个仓库里"克隆"出多个工作目录。每个目录有自己的文件和分支,但它们共享同一份 Git 历史和远程连接。

打个比方:如果说 Git 仓库是一栋大楼,那 Worktree 就像是从大楼里开出来的多间独立办公室。每间办公室可以做不同的项目,但公共资源(Git 历史、远程仓库)是共享的。

这意味着你可以让一个 Claude Code 在 Worktree A 里写新功能,另一个 Claude Code 在 Worktree B 里修 bug,两边完全不会打架。

 

为什么这个功能这么重要?

有 X 博主评价说:AI 模型写代码的能力早就够了,真正的瓶颈一直在文件系统隔离上。

想想之前的情况:要让多个 Claude Code 并行干活,你得手动写 bash 脚本、自己管理 worktree 创建和清理,甚至有公司专门开发了一套内部工具,就为了让多个 AI Agent 不互相踩文件。开发者光配置并行环境就要花半小时,还没开始写一行业务代码。

问题的根源在于——两个 Agent 同时编辑同一个工作目录,会产生竞态条件、状态污染和合并噩梦,吃掉的时间比 Agent 省下的还多。有数据显示,AI 使用率高的团队,PR Review 时间反而增加了 91%,因为管理并行产出的开销超过了生成速度的收益。

现在,一个 --worktree 参数就解决了。每个 Agent 有自己的分支、自己的目录、自己的"平行宇宙"。不需要协调,不需要 stash-checkout-重启的循环。

这也正在改变开发者的角色定位:从"写代码的人"变成"同时调度多个 Agent 写代码、挑选最优输出的人"。Cursor 已经支持 8 个 Agent 并行,Codex 有后台 Agent。整个 AI 编程市场都在奔向同一个方向:单线程开发已死,降低多 Agent 协作摩擦的工具才是赢家。

而 Claude Code 的 Worktree,就是这一个 flag。

具体场景包括:

  • 功能开发 + 紧急修复并行:一个 Claude 继续写新功能,另一个 Claude 修紧急 bug
  • Writer/Reviewer 模式:一个 Claude 写代码,另一个 Claude 在独立环境里做 Code Review
  • 批量迁移任务:多个 Claude 并行处理不同文件的迁移工作
  • A/B 方案对比:让两个 Claude 分别用不同方案实现同一个功能,最后对比效果

在 CLI 中使用 Worktree(最详细)

CLI 是使用 Worktree 功能最灵活的方式。只需一个 --worktree(简写 -w)参数,就能创建独立的工作环境并启动 Claude。

基本用法

# 创建名为 "feature-auth" 的 worktree 并启动 Claude
claude --worktree feature-auth

# 再开一个会话,处理另一个任务
claude --worktree bugfix-123

如果你懒得起名字,也可以让 Claude 自动生成一个:

# 自动生成随机名字,比如 "bright-running-fox"
claude --worktree

记住使用 Worktree 前项目需要有.git文件。没有的使用 "git init" 生成。

Worktree 存在哪里?

所有 Worktree 默认存放在 <你的仓库>/.claude/worktrees/<名字>/ 目录下。分支名则是 worktree-<名字>。

比如你运行 claude --worktree feature-auth,就会:

  • 创建目录:.claude/worktrees/feature-auth/
  • 创建分支:worktree-feature-auth
  • 从默认远程分支作为起点

建议在 .gitignore 中添加 .claude/worktrees/,防止 worktree 内容被主仓库追踪。

会话中创建 Worktree

除了命令行参数,你还可以在会话中直接让 Claude 创建 worktree。只需说一句 "work in a worktree" 或 "start a worktree",Claude 就会自动处理。

退出时的自动清理

这是一个很贴心的设计。当你退出 worktree 会话时:

  • 没有任何改动:Claude 自动删除 worktree 和对应分支,不留垃圾
  • 有改动或提交:Claude 会询问你是保留还是删除。保留就留着目录和分支,方便下次继续;删除则清理一切,包括未提交的改动

手动管理 Worktree

如果你需要更精细的控制,比如检出一个已有的分支,或者把 worktree 放到仓库外面,可以直接用 Git 命令:

# 创建 worktree 并新建分支
git worktree add ../project-feature-a -b feature-a

# 用已有分支创建 worktree
git worktree add ../project-bugfix bugfix-123

# 进入 worktree 后启动 Claude
cd ../project-feature-a && claude

# 用完后清理
git worktree list          # 查看所有 worktree
git worktree remove ../project-feature-a  # 移除

有一点要注意:每个新 worktree 可能需要重新安装依赖。比如 Node.js 项目要重新跑 npm install,Python 项目要重新配虚拟环境。

在 Desktop 桌面版中使用 Worktree

Claude Code Desktop 桌面版把 Worktree 做得更加无感。你不需要记任何命令,只需点点鼠标。

自动隔离

在 Desktop 中,点击侧边栏的 + New session 就能开启新会话。对于 Git 仓库项目,每个新会话会自动获得独立的 Worktree 隔离,不需要你手动创建。

也就是说,你在左边的会话里写功能,右边的会话里修 bug,它们各自在自己的 worktree 里操作,互不影响。

自定义 Worktree 位置

默认情况下,worktree 存放在 <项目根目录>/.claude/worktrees/。如果你想放到别的地方,可以在 Settings → Claude Code 中修改 "Worktree location"。

设置分支前缀

Desktop 还支持设置分支前缀。比如你设置前缀为 claude/,那么所有 Claude 创建的 worktree 分支都会以 claude/ 开头,方便在 Git 中识别和管理。

清理 Worktree

用完一个会话后,把鼠标悬停在侧边栏的会话上,点击归档图标即可移除对应的 worktree。

注意事项

  • Desktop 的会话隔离需要安装 Git(Mac 一般自带)
  • Windows 用户需要先安装 Git for Windows,否则 Code 标签页无法正常工作

在 VS Code 中使用 Worktree

VS Code 扩展提供了两种使用 Worktree 的方式。

方式一:通过集成终端

在 VS Code 的集成终端中运行:

claude --worktree feature-auth

效果和 CLI 完全一样,创建独立 worktree 并在其中启动 Claude 会话。

方式二:多标签页会话

通过 Command Palette(Cmd+Shift+P)运行 "Open in New Tab" 或 "Open in New Window",可以开启多个独立会话。每个会话都有自己的历史和上下文,适合并行处理不同任务。

不过需要注意,VS Code 扩展的多标签页本身不会自动创建 Git worktree 隔离。如果你需要完整的 worktree 隔离,建议在终端中使用 --worktree 参数启动。

最佳实践:Writer/Reviewer 并行模式

Claude Code 官方推荐的一个高级玩法是 Writer/Reviewer 模式:

 会话 A(Writer) 会话 B(Reviewer)
 实现 API 的限流中间件 
  Review src/middleware/rateLimiter.ts 的实现,检查边界条件、竞态问题和代码风格
 根据 Review 反馈修改代码:[粘贴 B 的输出] 

这种模式的优势在于:Reviewer 在全新的上下文中审查代码,不会因为"我刚写了这段代码"而产生偏见。就像你请一个新同事帮你 review 代码一样客观。

你也可以用类似的方式做测试驱动开发:一个 Claude 写测试,另一个 Claude 写实现代码让测试通过。

三种平台的对比速查

 特性 CLI Desktop VS Code
 创建方式 --worktree 参数 自动创建 终端中使用 --worktree
 自动隔离 需手动指定 新会话自动隔离 需手动指定
 自定义位置 手动 git worktree add 设置中可配置 手动管理
 分支前缀 不支持 支持 不支持
 清理方式 退出时自动提示 侧边栏归档 退出时自动提示
 适合场景 脚本自动化、精细控制 可视化并行开发 IDE 内快速切换

小贴士

  1. 记得加 .gitignore:在仓库的 .gitignore 里添加 .claude/worktrees/,避免 worktree 内容被追踪
  2. 安装依赖:每个新 worktree 都需要重新安装项目依赖(npm install、pip install 等)
  3. 命名有意义:给 worktree 起有意义的名字(比如 feature-auth、bugfix-login),方便后续找到和管理
  4. 及时清理:用完的 worktree 及时删除,避免磁盘空间浪费。可以用 git worktree list 查看所有 worktree
  5. 配合 Agent Teams:如果你需要更高级的多会话协作,可以了解 Claude Code 的 Agent Teams 功能,支持多个 Claude 之间自动协调任务

总结

Git Worktree 是 Claude Code 中实现并行开发的核心能力。无论你用 CLI、Desktop 还是 VS Code,都能通过 Worktree 让多个 Claude 会话同时干活,互不干扰。

对于日常开发,Desktop 的自动隔离最省心;需要精细控制时,CLI 的 --worktree 参数最灵活;在 VS Code 里则可以两者结合使用。

下次当你发现自己在分支之间反复切换、stash 来 stash 去的时候,试试 Worktree 吧。一旦用上,你会发现回不去了。

官方文档:code.claude.com/docs/en/com…


往期推荐:

互动:

飞书社群开源知识库:my.feishu.cn/wiki/PFJswU…

今天的文章就到这里啦,如果觉得不错,可以点个赞、在看、转发,三连支持我~

扫描下方图片中我的微信二维码备注"进群",拉你进社群一起交流学习!