教程

Claude Code Git Worktrees 官方完整指南:并行会话隔离,文件不冲突

Claude Code Worktrees 官方文档完整中文整理:Worktree 是什么(独立目录+独立分支+共享历史);--worktree/-w 标志基本用法;基础分支选择(fresh vs head,PR 号创建);.worktreeinclude 自动复制被 gitignore 的文件;Subagent 隔离(isolation: worktree 字段);清理行为(三种状态);手动管理 Git 命令;SVN/Perforce 的 WorktreeCreate Hook 示例。

2026/5/137分钟 阅读ClaudeEagle

一次让两个 Claude Code 会话同时工作,各自在独立分支上修改文件,互不干扰——这就是 Worktrees 的核心价值。本文是官方 Worktrees 文档的完整中文整理,覆盖 --worktree 标志、基础分支配置、.worktreeinclude、Subagent 隔离、清理和手动管理的每个细节。


什么是 Worktree?

Git Worktree 是一个独立的工作目录,有自己的文件和分支,但与主检出共享同一个 Repository 历史和远端。

在 Claude Code 语境里的价值:在一个终端里让 Claude 开发新功能,同时在另一个终端里让 Claude 修复 Bug——两个会话编辑不同分支上的文件,没有冲突。

主检出(main) Worktree A Worktree B ├── src/ .claude/worktrees/ .claude/worktrees/ │ ├── app.ts feature-auth/ bugfix-123/ │ └── auth.ts ├── src/ ├── src/ │ │ ├── app.ts │ ├── app.ts │ │ └── auth.ts │ └── auth.ts └── (branch: worktree- └── (branch: worktree- feature-auth) bugfix-123)

Desktop App 的行为:Desktop App 为每个新会话自动创建 Worktree,无需手动配置。

并行方式对比

方式隔离级别适用场景
Worktrees文件系统隔离(不同分支)同时处理多个功能/Bug
Subagents上下文隔离(独立会话)主会话委托子任务
Agent teams跨会话协调协调多个 Claude 实例

三者可以组合使用:Worktrees 负责文件隔离,Subagents 负责任务委托。


启动 Worktree 会话

基本用法

bash
# 创建命名 Worktree,在其中启动 Claude
claude --worktree feature-auth

默认在 .claude/worktrees/feature-auth/ 创建 Worktree,分支名为 worktree-feature-auth

短标志-w 等同于 --worktree

bash
# 在另一个终端启动第二个并行会话
claude --worktree bugfix-123

省略名称(自动生成):

bash
claude --worktree
# 自动生成名称,如 bright-running-fox

在会话内启动:也可以在会话中告诉 Claude "在 worktree 里工作",Claude 会使用 EnterWorktree 工具自动创建。

首次使用注意:在一个目录里第一次使用 --worktree 之前,必须先运行一次 claude(接受工作区信任对话框)。否则 --worktree 会报错并提示运行 claude

.gitignore 设置:把 .claude/worktrees/ 添加到 .gitignore,避免 Worktree 内容显示为主检出的未追踪文件。


选择基础分支

Worktree 默认从 origin/HEAD(远端默认分支)创建,确保从干净的远端状态开始。如果没有配置远端或获取失败,回退到本地 HEAD

始终从本地 HEAD 分支(适合需要包含未推送提交的场景):

json
// settings.json
{
  "worktree": {
    "baseRef": "head"
  }
}

只接受 "fresh"(默认,从远端)或 "head"(从本地 HEAD)。

从特定 PR 创建 Worktree(Week 19 新增):

bash
# 传入 PR 号(# 前缀)
claude --worktree "#1234"

# 或完整 GitHub PR URL
claude --worktree "https://github.com/org/repo/pull/1234"

Claude Code 从 origin 获取 pull/1234/head,在 .claude/worktrees/pr-1234/ 创建 Worktree。

完全自定义:配置 WorktreeCreate Hook 替换默认的 git worktree 逻辑,实现任意创建行为。


.worktreeinclude:复制被 Gitignore 的文件

Worktree 是全新检出,所以主检出里的 .env.env.local 等未追踪文件不会出现。使用 .worktreeinclude 文件自动复制它们。

创建 .worktreeinclude 文件(项目根目录):

# .worktreeinclude # 语法同 .gitignore .env .env.local config/secrets.json

规则:只复制同时满足"匹配 .worktreeinclude 模式""被 .gitignore 忽略"的文件。已追踪的文件不会被复制。

影响范围--worktree 创建的 Worktree、Subagent Worktree、Desktop App 的并行会话——全部生效。


在 Subagent 里使用 Worktree 隔离

让 Subagent 在各自的 Worktree 里运行,避免并行编辑冲突。

临时启用:在会话中告诉 Claude "为你的 Agent 使用 Worktree"。

永久启用(在自定义 Subagent 定义里):

markdown
---
name: my-parallel-agent
description: 并行工作的独立 Agent
isolation: worktree
---

你的任务:实现...

isolation: worktree 让每个 Subagent 获得独立的临时 Worktree。Subagent 完成且没有变更时,自动删除该 Worktree。


清理 Worktree

退出 Worktree 会话时,清理行为取决于是否有变更:

状态清理行为
无未提交变更 + 无未追踪文件 + 无新 commit自动删除 Worktree 和分支(如果会话有名称则先询问)
有未提交变更、未追踪文件或新 commit询问:保留或删除。保留:目录和分支留下,可以回来继续。删除:丢弃所有内容
非交互模式(--worktree + -p不自动清理,需手动 git worktree remove

崩溃/中断后的孤立 Worktree

启动时自动清理超过 cleanupPeriodDays 设置天数的孤立 Subagent Worktree(前提是没有未提交变更/未追踪文件/未推送 commit)。

--worktree 手动创建的 Worktree 不在自动清理范围内。


手动管理 Worktree

需要更精确控制 Worktree 位置或分支时,直接用 Git 操作:

bash
# 创建新分支的 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

# 列出所有 Worktree
git worktree list

# 完成后删除
git worktree remove ../project-feature-a

重要:每个新 Worktree 都是全新检出,记得初始化开发环境(安装依赖、设置虚拟环境等)。


非 Git VCS 支持

默认行为依赖 Git。对于 SVN、Perforce、Mercurial 等,配置 WorktreeCreateWorktreeRemove Hook 提供自定义逻辑。

SVN 示例WorktreeCreate Hook):

json
{
  "hooks": {
    "WorktreeCreate": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'NAME=$(jq -r .name); DIR=\"$HOME/.claude/worktrees/$NAME\"; svn checkout https://svn.example.com/repo/trunk \"$DIR\" >&2 && echo \"$DIR\"'"
          }
        ]
      }
    ]
  }
}

Hook 从 stdin 读取 Worktree 名称,检出 SVN 工作副本,打印目录路径供 Claude Code 用作工作目录。

注意:使用 WorktreeCreate Hook 时,.worktreeinclude 不会被处理(Hook 替换了默认 Git 行为)。在 Hook 脚本里手动复制本地配置文件。


实战并行工作流

工作流 1:新功能 + Bug 修复同时进行

bash
# 终端 1:开发新特性
claude --worktree feature-payment
> 实现完整的支付模块,包含 Stripe 集成和测试

# 终端 2:同时修复 Bug
claude --worktree bugfix-login-timeout
> 修复用户反映的登录超时问题,根本原因在 auth.ts

# 两个 Claude 会话完全独立,文件不冲突
# 完成后各自创建 PR,再合并到 main

工作流 2:代码审查 + 实现同时进行

bash
# 终端 1:审查当前 PR
claude --worktree "#234"
> /review 审查这个 PR,找出安全和性能问题

# 终端 2:同时继续开发新特性
claude --worktree feature-notification
> 实现通知系统的后端部分

工作流 3:测试隔离(最常用)

bash
# 主会话:正常开发
claude
> 给 auth 模块添加 OAuth2 支持

# 隔离会话:跑全量测试,不污染主会话
claude --worktree test-run -p "运行完整测试套件并报告结果"
# -p 非交互模式,测试完自动退出
# 不会因为测试输出污染主会话的上下文

常见问题

Q:Worktree 里的 CLAUDE.md 有效吗?

A:有效。Worktree 有独立的文件系统,Claude Code 在 Worktree 目录里正常发现并加载 CLAUDE.md。

Q:.env 文件会在 Worktree 里有吗?

A:使用 .worktreeinclude 文件可以自动复制。或者在 Worktree 创建后手动 cp .env .claude/worktrees/my-tree/.env

Q:Worktree 会消耗额外 Token 吗?

A:每个 Worktree 会话有独立的上下文窗口,和普通会话一样消耗 Token。

Q:baseRef: headbaseRef: fresh 区别?

A:fresh(默认)从远端 origin/HEAD 创建,你本地未推送的 commit 不会进入 Worktree。head 从本地 HEAD 创建,本地 commit 会带进去。Subagent 需要基于当前进行中的工作时,用 head


来源:Claude Code 官方文档 - Run parallel sessions with worktrees | 整理:ClaudeEagle

相关文章推荐

教程Claude Code Desktop 桌面应用快速入门:图形界面、三大标签页与并行会话详解Claude Code Desktop 桌面应用快速入门:三大标签页概览(Chat/Cowork/Code 功能对比)、macOS/Windows 下载地址(内置 Claude Code 无需安装 Node.js)、4 步开始第一个 Code 会话(选项目/下任务/审查 Diff)、七大核心功能(中断引导/@文件引用/三种权限模式/Diff 视图审查/实时应用预览/PR 监控自动合并/定时任务/并行会话/插件安装/外部工具连接),以及与 CLI 共用同一套引擎、共享 CLAUDE.md/MCP/Hooks/Skills/Settings 配置的关系说明。2026/3/8教程Claude Code .claude 目录完整指南:每个文件和目录的作用与最佳实践Claude Code .claude 目录完整指南:完整目录结构(CLAUDE.md/settings.json/rules/skills/agents/worktrees);settings.json vs settings.local.json 的分工和常用配置示例(allow/deny/hooks/env);全局 vs 项目级优先级;.claude/rules/ 目录的组织方式;.claude/skills/ 结构;.claude/agents/ 自定义 Subagent 定义(security-reviewer 和 test-writer 完整示例);.worktreeinclude 配置;.gitignore 配置建议;以及提交到 Git 的文件清单。2026/5/13教程写好 CLAUDE.md 的 10 个最佳实践:让 Claude 更准确地遵循你的规则CLAUDE.md 10 个最佳实践:只写 Claude 不能自己推断的内容(新同事测试法);写具体可验证的规则;把常用命令写进去;控制文件长度 200 行以内(遵从度 vs 规则数量的经验估算);用路径限定规则(.claude/rules/ 示例);分清 CLAUDE.md/Hooks/Skills 职责;用 CLAUDE.local.md 放个人专属配置;在重要规则前加触发条件;用 @import 拆分大文档;定期维护删除过时规则(含快速检查清单 8 项)。2026/5/13教程Claude Code CLAUDE.md 深度指南:5 种存储位置、Token 预算、Auto Memory 和 .claude/rules/Claude Code CLAUDE.md 系统完整整理:CLAUDE.md vs Auto Memory 两套机制对比;5 种存储位置层级(Managed Policy/User Global/Project/Local/Subdirectory);加载顺序详解;@import 语法;.claude/rules/ 路径限定规则;Token 预算与遵从度(150-200 条上限);Auto Memory 存储路径;CLAUDE.md vs Hooks 分工;Compaction 保留行为;Monorepo 配置;以及 vs AGENTS.md vs .cursorrules 对比表。2026/5/13教程Claude Code 2026 完整新手指南:从安装到高级工作流(官方权威版)Claude Code 2026 全面入门教程:安装(4 种方式)、登录(包含 WSL2 粘贴 OAuth 代码)、定价对比(Pro/Max/Teams/Enterprise/Console);核心命令速查(启动模式/15 个 Slash 命令/键盘快捷键/权限确认说明);五大核心工作流(写代码/理解代码/修复 Bug/测试/Git 和 PR);CLAUDE.md 配置(/init 生成 + 最佳实践);Hooks 事件自动化;Skills 按需加载;成本优化技巧;Auto Mode + hard_deny 安全配置;以及 2026 年高级功能(Routines/Sub-agents/Computer Use/Remote Control/AutoDream/Ultraplan)。2026/5/12教程Claude Code Dispatch 和 Channels 完整指南:作为后台服务运行 Claude CodeClaude Code Dispatch 和 Channels 完整指南:Dispatch 将 Claude Code 变成可程序化调用的后台 Worker;Channels 提供运行中 Session 的结构化实时事件流;两者与 Routines 的定位差异;Dispatch vs 'claude -p 脚本' 的架构比较;Channels 事件类型(file_read/file_modified/tool_called/completion/error);完整 Python 监控代码示例;PR 自动审查/告警驱动自动修复/CI 后部署验证三个完整工作流;Auto Mode 与 Dispatch 的配合;以及 Remote Control 的集成模式。2026/5/12