主题
3.4 多目录与 Git Worktree — 并行开发
学习目标
学完这节课,你将能够:
- 在 Claude Code 中同时管理多个项目目录
- 理解 Git Worktree 的概念和优势
- 使用 Worktree 实现"一边修 Bug 一边开发新功能"的并行工作流
- 结合子智能体在多个 Worktree 中同时执行任务
多项目目录工作
日常开发中,你经常需要同时处理多个项目,或者在同一个项目的不同部分之间跳转。
切换工作目录
Claude Code 默认在启动时所在的目录工作。你可以随时切换:
bash
# 启动时指定目录
claude --project /path/to/my-project
# 对话中切换(直接告诉 AI)
你:切换到 ~/projects/backend 目录,看一下 API 的代码多终端并行
最直接的方法:开多个终端窗口,每个窗口启动一个独立的 Claude Code 实例。
bash
# 终端 1:前端项目
cd ~/projects/frontend && claude
# 终端 2:后端项目
cd ~/projects/backend && claude
# 终端 3:移动端项目
cd ~/projects/mobile && claude[截图: 三个并排的终端窗口,分别在不同项目目录下运行 Claude Code]
每个实例有独立的上下文和对话历史,互不干扰。适合处理完全独立的项目。
Git Worktree — 一个仓库多个工作区
但如果你要在同一个仓库的不同分支上并行工作呢?传统做法是:
bash
# 传统方式:切换分支
git stash # 暂存当前改动
git checkout hotfix # 切到修复分支
# ...修完bug...
git checkout feature # 切回功能分支
git stash pop # 恢复之前的改动这很麻烦,还容易出错。Git Worktree 解决了这个问题。
什么是 Git Worktree
Worktree 允许你从同一个仓库签出多个工作目录,每个目录对应一个不同的分支。它们共享同一个 .git 仓库数据,但文件系统完全独立。
my-project/ ← 主工作区 (main 分支)
my-project-hotfix/ ← Worktree 1 (hotfix 分支)
my-project-feature-auth/ ← Worktree 2 (feature/auth 分支)三个目录、三个分支、三个独立的文件状态,但只有一份 Git 历史数据。
基本操作
bash
# 创建 Worktree:基于某个分支签出到新目录
git worktree add ../my-project-hotfix hotfix/fix-login
# 如果分支不存在,加 -b 参数创建新分支
git worktree add -b feature/new-auth ../my-project-auth main
# 查看所有 Worktree
git worktree list
# 删除 Worktree(完成工作后清理)
git worktree remove ../my-project-hotfix[截图: git worktree list 的输出,显示三个工作区及其对应的分支]
实战:一边修 Bug 一边开发新功能
这是最经典的并行开发场景。假设你正在开发用户认证功能,突然接到报告:线上登录页有个紧急 Bug 需要修复。
第一步:为 Bug 修复创建 Worktree
不需要打断当前的功能开发,直接创建一个新的工作区:
bash
# 当前在 my-project/ 目录,正在 feature/auth 分支上开发
git worktree add -b hotfix/login-bug ../my-project-hotfix main第二步:在新 Worktree 中启动 Claude Code
打开一个新终端:
bash
cd ../my-project-hotfix
claude你:线上登录页报错 "Cannot read property 'email' of undefined",
用户在邮箱为空时点击登录就会触发。帮我定位并修复这个 Bug。[截图: 在 hotfix worktree 中,Claude Code 定位到 bug 并给出修复方案]
第三步:两边同时工作
现在你有两个终端、两个 Claude Code 实例,互不干扰地同时工作:
终端 1 (my-project/) 终端 2 (my-project-hotfix/)
┌─────────────────────┐ ┌──────────────────────────┐
│ feature/auth 分支 │ │ hotfix/login-bug 分支 │
│ │ │ │
│ 你:继续实现 OAuth │ │ 你:修复登录 Bug │
│ 登录功能 │ │ │
│ AI:好的,继续... │ │ AI:已修复,需要加个 │
│ │ │ 空值检查... │
└─────────────────────┘ └──────────────────────────┘第四步:修复完成,合并回主线
Bug 修复完成后:
bash
# 在 hotfix worktree 中
git add . && git commit -m "fix: 修复登录页空邮箱导致的崩溃"
git push origin hotfix/login-bug
# 合并到 main(或通过 PR)
git checkout main
git merge hotfix/login-bug
git push origin main第五步:清理 Worktree
bash
# 回到主工作区
cd ../my-project
# 删除 hotfix worktree
git worktree remove ../my-project-hotfix
# 删除已合并的分支
git branch -d hotfix/login-bug进阶:结合子智能体的并行工作流
Worktree 和子智能体结合起来,可以实现更高级的并行开发模式。
方案一:手动多终端
适合 2-3 个并行任务。每个终端一个 Worktree + 一个 Claude Code 实例,你手动协调。
方案二:子智能体自动编排
对于可以拆分的大任务,让主 Claude Code 自动创建 Worktree 并分派子智能体:
你:我要给项目加三个功能:用户头像上传、消息通知、主题切换。
请用 Git Worktree 隔离每个功能到独立分支,并行开发。Claude Code 会:
- 创建三个 Worktree,每个对应一个功能分支
- 在每个 Worktree 中派出子智能体独立实现
- 各自完成后汇总结果
- 按依赖顺序合并分支
[截图: Claude Code 创建多个 worktree 并显示并行任务进度的终端输出]
Worktree 使用注意事项
- 不要在多个 Worktree 中签出同一个分支——Git 会拒绝,因为会导致状态冲突
- Worktree 目录建议放在主仓库的同级目录,不要放在仓库内部
- 用完及时清理——
git worktree list查看,git worktree remove删除 - 共享 node_modules 等依赖:每个 Worktree 需要独立安装依赖(
npm install),因为它们是独立的目录 - IDE 支持:大多数 IDE(VSCode、WebStorm)能正确识别 Worktree 目录
小结
- 多终端 + 多 Claude Code 实例是最简单的并行工作方式
- Git Worktree 让你在同一仓库的不同分支上同时工作,互不干扰
- 核心命令:
git worktree add(创建)、git worktree list(查看)、git worktree remove(清理) - 经典场景:正在开发新功能时突然要修线上 Bug,用 Worktree 隔离,修完合并,继续开发
- 结合子智能体可以实现自动化的并行开发流水线
安全提示:在多 Worktree 环境中,注意每个 Worktree 的 Claude Code 实例都有独立的权限模式。如果你在一个 Worktree 中用了
acceptEditsAndCommands模式,确保你信任当前分支的代码状态。恶意仓库中的.claude/配置可能被利用。