简介
在日常使用 Claude Code 开发时,经常会遇到开发新功能中途突发线上 Bug、多任务并行编码、多会话同时运行的场景。如果直接开启多个 Claude 终端修改同一份代码,极易出现文件互相覆盖、代码混乱的问题。
Git 原生 worktree 结合 Claude Code 专属能力,能够在同一个 Git 仓库中创建多个互相隔离的工作目录与独立分支,实现多任务并行开发,互不干扰。本文结合官方用法、实操流程、命令详解、常见报错与解决方案,整理一套可直接落地的完整教程,适配纯本地开发场景(无需推送远程仓库)。
一、核心概念:Git Worktree + Claude Code 工作机制
1. 什么是 Worktree
git worktree 是 Git 内置功能,核心作用:同一个仓库,创建多个独立工作目录。
-
所有工作目录共享同一个
.git仓库数据库、共享提交历史与远程配置; -
每个工作目录绑定独立分支,文件完全隔离,并行编辑不会互相覆盖;
-
仅复制工作区文件,相比多仓库克隆更节省磁盘空间。
2. Claude Code 对 Worktree 的封装规则
Claude Code 深度适配了 Git Worktree,做了自动化封装,也是新手最容易踩坑的点:
-
目录规则 :自动将工作树创建在项目根目录
.claude/worktrees/[自定义名称]下; -
分支命名规则 :你输入简写名称(如
bugfix),底层自动生成分支worktree-bugfix(部分版本为worktree/bugfix); -
核心限制 :同一个 Git 分支,同一时间只能被一个 Worktree 检出占用,重复使用会直接报错;
-
默认分支来源 :默认从远程默认分支(
origin/HEAD)创建干净分支;如需基于本地未推送提交创建,可在配置中修改baseRef: "head"。
3. 冲突逻辑(重点)
-
并行开发阶段 :多个 Worktree 同时修改同一个文件、同一行代码,不会产生冲突(目录隔离,互不影响);
-
合并回主分支阶段 :多个分支的改动合并到主干时,若修改了同一文件同一位置,必然触发 Git 冲突,需手动 / 借助 Claude 解决。
Worktree 只是隔离了开发环境,并未消除冲突,仅将冲突推迟到合并环节。
二、前置准备与基础查看命令
1. 查看当前所在分支(高频必备)
实操中务必先确认自己处于哪个分支,避免操作失误:
bash
# 最简命令:仅输出当前分支名
git branch --show-current
# 完整查看:列出所有本地分支,带 * 为当前所在分支
git branch
在 Claude Code CLI 中可直接执行(所有 / 开头命令,前方必须加一个空格才能识别):
Plain
/git branch
2. 查看所有已存在的 Worktree
查看全部工作树、对应路径、绑定分支,排查占用 / 残留:
bash
git worktree list
3. 清理无效 Worktree 残留
手动删除目录后,Git 仍会保留元数据记录,执行命令清理:
bash
git worktree prune
三、完整实操流程(纯本地开发,不推送远程)
适用场景:本地多任务开发、临时 Bug 修复、功能实验,代码仅本地留存,无需同步远程仓库。
整体流程总览
创建 Worktree → 编码开发 → 本地提交代码 → 退出工作树(回到主分支)→ 合并分支到主干 → 清理 Worktree + 分支
步骤 1:创建并进入新的 Worktree(开发分支)
方式 1:终端命令创建(全局生效)
在项目根目录终端执行,直接创建并进入隔离工作树:
bash
# 基础用法:创建名为 bugfix 的工作树(推荐自定义名称)
claude --worktree bugfix
# 简写形式
claude -w bugfix
# 基于指定分支创建 Worktree
claude --worktree bugfix --base main
# 随机命名(自动生成名称,无需手动输入)
claude --worktree
执行后效果:
-
生成目录:
.claude/worktrees/bugfix; -
自动创建并切换到分支:
worktree-bugfix; -
当前 Claude 会话完全隔离,可独立开发。
方式 2:Claude CLI 内命令创建(会话内操作)
进入 Claude 会话后,使用内置命令(前方必须加空格):
Plain
/worktree create bugfix
报错提醒:若提示
分支已被另一个 worktree 占用,说明worktree-bugfix正在被其他会话使用,不可重复创建。
步骤 2:编码开发 + 本地提交代码(核心步骤)
2.1 开发代码
在当前 Worktree 中正常修改文件,与主分支、其他工作树完全隔离。
2.2 本地提交(必须执行,未提交无法合并)
要求 :必须在当前开发分支内完成本地 commit,Git 合并仅识别已提交的记录。
- 基础提交(通用)
Plain
提交所有修改
- 自定义提交信息(如固定后缀、备注,示例后缀为「乱码」)
Plain
提交所有修改,提交信息:修复页面样式问题 乱码
底层等价 Git 命令:
bash
git add .
git commit -m "修复页面样式问题 乱码"
关键规则:纯本地开发无需执行
git push推送到远程仓库,仅本地提交即可满足合并需求。
步骤 3:退出 Worktree,回到主分支
代码提交完成后,必须退出当前工作树,回到主分支(main/master)才能执行合并操作:
Plain
/worktree-exit
执行后,当前会话切回项目主目录、主分支。可通过 git branch --show-current 验证。
步骤 4:主分支执行合并操作
硬性要求 :/worktree merge 命令只能在主分支执行,禁止在开发分支内合并。
Plain
/worktree merge bugfix
命令作用:将 worktree-bugfix 分支的所有已提交代码,合并到当前主分支。
合并两种场景:
- 自动合并:多个分支未修改同一文件 / 同一行,Git 自动完成合并,合并后建议再次提交:
Plain
提交所有修改
- 冲突合并 :多个分支修改了同一文件同一位置,Git 终止合并并提示冲突。
解决方案:直接告知 Claude 自动处理冲突:
Plain
帮我解决当前代码合并冲突
步骤 5:彻底删除 Worktree + 关联分支(清理残留)
合并完成后,若该分支任务结束,建议彻底清理,避免残留占用。不同删除命令效果不同,区分使用。
5.1 区分三类删除命令(核心避坑)
-
git branch -d bugfix仅删除 Git 本地分支
bugfix,不删除 Worktree 目录、不清理 Worktree 元数据 。若分支正在被 Worktree 占用,该命令会直接报错,无法执行。
-
git worktree remove .claude/worktrees/bugfix仅删除 Worktree 目录 + Git Worktree 元数据,保留本地 Git 分支
worktree-bugfix。 -
Claude 内置命令(推荐,一键彻底清理)
Plain
/worktree delete bugfix
功能:自动删除工作树目录、清理 Worktree 元数据、删除对应 worktree-bugfix 分支,三方彻底清空。
5.2 终极手动清理(适配命令失效场景)
若 /worktree delete 出现残留,按顺序手动执行原生 Git 命令:
bash
# 1. 删除指定 Worktree
git worktree remove .claude/worktrees/bugfix
# 2. 清理无效 Worktree 记录
git worktree prune
# 3. 删除对应的本地分支(分支名带前缀 worktree-)
git branch -D worktree-bugfix
四、Claude Code Worktree 常用命令速查表
所有 CLI 内置命令前方必须添加 1 个空格,否则会被识别为普通文本。
| 功能 | 命令(Claude CLI) | 补充说明 |
|---|---|---|
| 创建并进入工作树 | /worktree create 名称 |
生成分支 worktree-名称 |
| 切换已有工作树 | /worktree switch 名称 |
不可切换已被占用的分支 |
| 退出工作树回主分支 | /worktree-exit |
无参数,全局通用 |
| 合并分支到主分支 | /worktree merge 名称 |
仅主分支可执行 |
| 删除工作树 + 分支 | /worktree delete 名称 |
一键彻底清理(推荐) |
| 查看所有分支 | /git branch |
查看当前所在分支 |
终端全局命令(项目根目录执行)
bash
# 创建 Worktree
claude --worktree 名称
# 查看所有 Worktree
git worktree list
# 清理无效 Worktree
git worktree prune
# 手动删除分支
git branch -D worktree-名称
五、高频报错与解决方案
报错 1:分支已被另一个 worktree 占用,Git 不允许在两个工作树同时检出同一个分支
原因
Git 规则限制:一个分支同一时间仅能被一个 Worktree 检出。你重复创建 / 切换了正在使用的分支。
解决方案
-
执行
git worktree list查看该分支对应的工作树路径; -
进入对应会话执行
/worktree-exit退出; -
或直接执行删除命令释放分支:
/worktree delete 名称; -
如需新建任务,使用全新名称创建:
/worktree create 新名称。
报错 2:/worktree delete 后目录消失,但分支 / Worktree 记录仍存在
原因
Claude 简易删除命令仅移除文件目录,未清理 Git 元数据与分支。
解决方案
执行全套手动清理命令:
bash
git worktree prune
git branch -D worktree-名称
报错 3:未提交代码直接执行 merge,合并失败
原因
Git 仅合并已 commit 的提交记录,工作区未保存的修改无法被合并。
解决方案
切回对应开发分支,先执行本地提交,再回到主分支合并。
报错 4:合并代码出现冲突
原因
多个分支修改了同一个文件的同一行代码,属于正常开发现象。
解决方案
在 Claude 会话中直接发送指令,由 AI 辅助解决冲突:
Plain
帮我解决代码合并冲突,保留合理改动
六、进阶配置与拓展用法
1. 基于 PR 创建 Worktree(团队协作场景)
若需要 Review 远程 PR,可直接基于 PR 号创建隔离工作树:
bash
# 格式:#PR编号
claude --worktree "#1234"
自动拉取远程 PR 代码,生成独立 Worktree,适合代码评审、二次修改。
2. 多终端并行开发(核心使用场景)
-
终端 1:
claude --worktree feature(开发新功能); -
终端 2:
claude --worktree bugfix(紧急修复 Bug); -
两个终端完全隔离,并行编码互不干扰;
-
全部开发完成后,依次合并到主分支,统一处理冲突。
七、完整标准流程复盘(纯本地开发,背诵版)
-
创建工作树 :
/worktree create bugfix(进入开发分支); -
编码修改:正常开发业务代码;
-
本地提交 :
提交所有修改,提交信息:xxx 阿妈(必做); -
退出分支 :
/worktree-exit(回到主分支); -
合并代码 :
/worktree merge bugfix(主分支执行); -
二次提交 :
提交所有修改(保存合并记录); -
清理资源 :
/worktree delete bugfix(彻底删除分支与目录)。
八、总结
-
核心定位 :Claude Code + Worktree 主打本地多任务并行开发,目录隔离杜绝并行编辑文件覆盖问题,冲突仅出现在合并阶段;
-
命令红线 :
/开头命令前方必须加空格;merge仅在主分支执行;开发分支必须先本地提交再合并; -
删除逻辑 :优先使用
/worktree delete一键清理,残留则配合git worktree prune+git branch -D手动清空; -
纯本地开发 :全程无需
git push,仅本地commit即可满足所有流程; -
冲突认知:并行开发无冲突,合并冲突是 Git 正常保护机制,借助 Claude 可快速解决。
该方案完美适配个人本地多任务开发、临时 Bug 修复、功能实验等场景,是提升 Claude Code 开发效率的核心用法。