你有没有遇到过这样的场景:正在用 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 内快速切换 |
小贴士
- 记得加 .gitignore:在仓库的 .gitignore 里添加 .claude/worktrees/,避免 worktree 内容被追踪
- 安装依赖:每个新 worktree 都需要重新安装项目依赖(npm install、pip install 等)
- 命名有意义:给 worktree 起有意义的名字(比如 feature-auth、bugfix-login),方便后续找到和管理
- 及时清理:用完的 worktree 及时删除,避免磁盘空间浪费。可以用 git worktree list 查看所有 worktree
- 配合 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…
今天的文章就到这里啦,如果觉得不错,可以点个赞、在看、转发,三连支持我~
扫描下方图片中我的微信二维码备注"进群",拉你进社群一起交流学习!