Claude Code worktree 怎么用:多个会话并行开发不打架

想同时开几个 Claude Code 会话改同一个仓库又怕互相覆盖?用 git worktree。本文讲 claude --worktree 用法、退出清理、.worktreeinclude 复制 .env、基于 PR 开分支、子代理隔离和常见问题。

NNathaniel bigo··原创首发·AI 辅助撰写
8 分钟读完
资料核对于 2026-10-07 · 依据官方文档与公开资料整理 Plus 账号
本文根据 Claude Code 官方文档《Run parallel sessions with worktrees》整理,核对日期 2026-10-07。worktree 需要 git 仓库。

适用于谁

  • 想让一个 Claude Code 会话写新功能、另一个同时修 bug,又担心两边改同一批文件打架的人;
  • 搜「claude code worktree 怎么用」「claude code 并行任务」「worktree node_modules」的人;
  • 想让多个子代理并行改代码、互不干扰的人。

结论先说

  1. git worktree = 同一个仓库的另一份独立工作目录:有自己的文件和分支,但共享同一个 .git 历史和远程。每个会话在自己的 worktree 里改,互不影响。
  2. 最简单的用法:claude --worktree 名字(简写 -w),会在仓库根目录的 .claude/worktrees/名字/ 下新建 worktree,分支名为 worktree-名字。另开一个终端换个名字再来一次,就是第二个并行会话。
  3. worktree 是一份全新的检出:node_modules、.env 这些没进 git 的东西都没有。依赖要重新装;.env 可以用 .worktreeinclude 自动复制。
  4. 退出时,干净的 worktree 会自动删除;有改动的会问你保留还是删除——选删除会连同分支和里面的改动一起删掉。
  5. 建议把 .claude/worktrees/ 加进 .gitignore。

步骤

1. 在 worktree 里启动 Claude

bash
# 终端 1:做登录功能
claude --worktree feature-auth

# 终端 2:修一个 bug
claude --worktree bugfix-123

不写名字的话,Claude 会自动起一个,比如 bright-running-fox。

注意:交互式运行要求这个目录已被「信任」。如果从没在这个仓库里运行过 claude,先运行一次普通的 claude 接受信任提示,否则 --worktree 会报错退出。

也可以在会话里直接说「在一个 worktree 里做这件事」,Claude 会用 EnterWorktree 工具自己建一个。

2. 准备开发环境

worktree 里只有被 git 跟踪的文件。进去之后可以直接让 Claude「先安装依赖」,或者自己到 .claude/worktrees/名字/ 下运行项目的初始化命令(npm install、pip install -r requirements.txt 等)。

想把 .env 等被 gitignore 的文件自动带进每个新 worktree,在项目根目录建一个 .worktreeinclude,写法同 .gitignore:

text
.env
.env.local
config/secrets.json

只有「匹配规则并且被 gitignore 的文件」才会复制,已跟踪的文件不会重复。这个规则对 --worktree、子代理的 worktree 和桌面版的并行会话都生效。

3. 选择从哪个分支开始

默认从远程默认分支(通常是 main)新建,保证起点是干净的。如果你希望新 worktree 带上当前本地的提交(比如让子代理接着你没推送的工作改),在设置里写:

json
{
  "worktree": {
    "baseRef": "head"
  }
}

baseRef 只接受 "fresh"(默认)和 "head" 两个值,不能写分支名。想从某个已有分支开始,用下面的「手动管理」。

基于某个 PR 开 worktree(审 PR、接手别人的改动很方便):

bash
claude --worktree "#1234"

# 要加引号,不然 shell 会当成注释。也可以直接传 GitHub PR 或 GitLab MR 的链接,Claude Code 会从 origin 拉取该 PR 的提交,建在 .claude/worktrees/pr-1234。

4. 退出与清理

退出交互式 worktree 会话时,Claude 会检查里面有没有会被删除的工作(改动、未跟踪文件、新提交):

情况处理
干净、未命名的会话自动删除 worktree 和分支
干净、但会话有名字先问你要不要留着以后用
有改动或新提交问你保留还是删除;保留时会打印 claude --worktree <名字> --resume 命令,下次用它回来
状态无法确认不自动删,提示你哪些没检查到

用 claude -p 非交互运行时没有退出提示,worktree 不会被自动清理,需要自己 git worktree remove(被锁时先 git worktree unlock)。

5. 让子代理各自用一个 worktree

并行的子代理改同一批文件也会冲突。可以直接跟 Claude 说「让你的子代理都用 worktree」,或者在自定义子代理里固定写上:

markdown
---
name: refactorer
description: 在很多文件里执行机械式重构
isolation: worktree
---

在所有受影响的文件里完成指定的重构,然后运行测试并汇报结果。

每个子代理拿到一个临时 worktree,没有改动就自动删除,有改动的保留到之后的定期清理能安全删除为止。批量大改动还可以用内置的 /batch 命令:它会把任务拆成 5~30 个独立单元,每个单元在独立 worktree 里由一个后台子代理完成。

worktree 之间共享什么

  • .git 目录:在 worktree 里 git commit 写的是同一个仓库;
  • 项目范围的插件:主目录装过的,worktree 里也能用,不用重装;
  • 权限批准:在 worktree 里选「Yes, and don't ask again」,规则保存到主目录的 .claude/settings.local.json,所有 worktree 通用(Windows 等少数情况除外);
  • 未进 git 的技能、子代理、命令:如果 worktree 里没有 .claude/skills 等目录,会读主目录的。

手动管理 worktree

需要从已有分支开始,或者想把 worktree 放到仓库外面时,直接用 git:

bash
# 新分支
git worktree add ../project-feature-a -b feature-a

# 已有分支
git worktree add ../project-bugfix fix-issue-456

# 在里面启动 Claude
cd ../project-feature-a
claude

# 查看和删除
git worktree list
git worktree remove ../project-feature-a

并行的几种方式怎么选

方式特点
worktree隔离文件改动,每个会话一个独立目录
子代理在一个会话内部拆分工作,结果汇报给主对话,详见本站《Claude Code Subagents(子代理)怎么用:创建、调用与最佳实践》
后台会话 / Agent Teams多个独立会话并行,可以统一查看或互相传消息

三者可以组合:多个会话各占一个 worktree,会话里再派子代理。

常见问题

Q:worktree 里没有 node_modules,每次都要重新装吗?

是的,worktree 是全新检出,依赖要在里面重新安装(官方建议让 Claude 装,或者自己运行初始化命令)。同名 worktree 再次用 --worktree 名字 打开时会复用已有目录,不必每次重装。

Q:主目录里冒出一堆未跟踪文件?

把 .claude/worktrees/ 加进 .gitignore。

Q:提示需要先信任工作区?

在仓库目录先运行一次普通的 claude,接受信任对话框,再用 --worktree。

Q:Hooks 里的 $CLAUDE_PROJECT_DIR 会跟着进 worktree 吗?

不会,它仍指向会话启动时的项目根目录。Hook 需要 worktree 路径时,读输入 JSON 里的 cwd 字段。

Q:不用 git(比如 SVN、Perforce)能用吗?

默认的 worktree 依赖 git。其他版本控制系统可以配置 WorktreeCreate / WorktreeRemove Hook 替换创建和删除逻辑,见官方文档「Non-git version control」一节。

参考资料

  • Run parallel sessions with worktrees(官方):https://code.claude.com/docs/en/worktrees
  • Run agents in parallel(官方):https://code.claude.com/docs/en/agents
  • Create custom subagents(官方):https://code.claude.com/docs/en/sub-agents
  • git worktree 文档:https://git-scm.com/docs/git-worktree
需要开通或续费?Claude Pro 充值 →

Nathaniel 的更多内容

  1. 01

    promptfoo 使用教程:对比提示词和模型、写断言自动评测(安装与配置)

    promptfoo 是什么、怎么使用?按官方 README 和入门文档讲清它的用途、三种安装方式、用示例项目起步、promptfooconfig.yaml 里提示词、模型和测试用例三部分怎么写、常用断言类型的含义、eval 与 view 两条命令,以及把它放进日常改提示词流程的方法。

    ChatGPT其他 AI 工具0
  2. 02

    Kimi API怎么用:API Key获取、Python调用、K3价格与429报错处理

    Kimi API Key 在哪里获取、怎么用 Python 调用 K3、价格怎么算、429 和 401 报错怎么办?本文按 Kimi API 开放平台官方文档讲清注册认证、创建 Key、base_url 与模型名、计费规则和常见错误排查。

    Kimi0
  3. 03

    Cursor Agent 模式怎么用:Agent、Plan、Ask 三种模式,检查点回滚与消息排队

    Cursor Agent 模式是什么、和 Plan / Ask 模式怎么选?按官方文档讲清 Agent 能调用哪些工具、Shift+Tab 切换模式、Plan 模式先出方案再动手、用检查点撤销改动、任务进行中排队或插话,以及 /goal 长目标。

    Cursor0
  4. 04

    Gemini 聊天记录怎么导出:导出到文档 / 表格、生成 PDF 与用 Takeout 批量导出完整对话

    Gemini 没有「一键导出全部对话」的按钮,但有三条官方路径:单条回答导出到 Google 文档、Gmail、表格;让 Gemini 直接生成 PDF、Word、Markdown 文件;用 Google Takeout 批量下载全部活动记录。本文给出每种方法的步骤和限制。

    Gemini0
  5. 05

    ChatGPT 生成图片中文乱码、文字错误怎么办:7 个按顺序试的办法

    让 ChatGPT 做海报、封面、信息图,中文总是缺笔画、错字、乱码?本文按 OpenAI 官方图像提示指南,给出从写法、字数、局部修改、质量档位到后期排版的 7 个办法,以及什么时候干脆别让 AI 写字。

    ChatGPT0
  6. 06

    OpenCode Skills 使用指南:技能目录、命名规则、权限配置与不加载排查

    OpenCode 的 Skills 放在哪个目录、怎么控制哪些技能能用?按 OpenCode 官方文档讲清六个扫描位置、name 的正则规则、skill 工具的工作方式、在 opencode.json 里用 allow / deny / ask 配置权限、按智能体覆盖,以及技能不出现时的五项检查。

    其他 AI 工具0

同产品的其他教程

  1. 01

    Cursor、Claude Code、Codex、GitHub Copilot 有什么区别:按形态、账号、计费和规则文件对比

    Cursor 和 Claude Code 的区别是什么、和 Codex、GitHub Copilot 怎么选?只用各家官方文档的事实对比:产品形态、用什么账号、怎么计费、能选哪些模型、规则文件与 MCP、权限模式、代码审查;不做「谁更强」的排名,给出按场景选择的思路。

    ClaudeCursor0
  2. 02

    如何让大模型稳定输出 JSON:结构化输出、JSON 模式与提示词写法(OpenAI / Claude)

    怎么让大模型稳定输出 JSON?本文按 OpenAI 和 Anthropic 官方文档讲清只靠提示词、JSON 模式、结构化输出三种做法的可靠程度,两家的写法与 Schema 限制,以及拒答和截断两种例外。

    ChatGPTClaude0
  3. 03

    npx skills add 怎么用:从 GitHub 安装 Skill、skills.sh 是什么与常用命令

    网上的 Skill 安装命令大多是 npx skills add 开头,它是什么、装到哪去了?按官方 README 讲清 skills 命令行工具支持的来源写法、项目与全局两种范围、-a 指定工具、list / find / update / remove 等命令、软链接与复制的区别,以及怎么关掉遥测。

    Claude其他 AI 工具0
  4. 04

    提示词里的角色设定有用吗:「你是一位专家」该怎么写才有效(官方文档怎么说)

    提示词开头写「你是一位资深专家」到底有没有用?本文按 Anthropic、OpenAI、Google 官方文档讲清角色设定管什么、不管什么,一句话角色和详细人设各自适合什么场景,角色应该放在哪里,以及比「你是专家」更有效的四个写法。

    ChatGPTClaude0
  5. 05

    提示词链(Prompt Chaining)怎么用:把复杂任务拆成几步,前一步的输出交给后一步

    提示词链是什么、什么时候该把大提示词拆开?本文按 Anthropic 和 Google 官方文档讲清拆指令、串成链、分块聚合三种拆法,最常用的「起草 → 审查 → 修改」链,以及哪些情况不必拆。

    ClaudeGemini0
  6. 06

    Claude Code 切换模型:/model 命令、模型别名、effort 与 fast 模式

    Claude Code 怎么切换模型?讲清 /model 命令与选择器、opus / sonnet / haiku / fable / opusplan 等别名、默认模型、推理强度 effort 怎么调、ultrathink、fast 模式,以及换了模型下次又变回去的原因。

    Claude0

0 条评论

登录 后参与评论

还没有评论,来抢沙发~