Claude Desktop 支持 git worktree:一个会话可以在独立的 worktree(.claude/worktrees/ 下的一份隔离副本)里干活,不污染主目录。这样既能并行跑多个任务,又能放心让 AI 大刀阔斧地改,反正改坏了也不影响主分支。
听上去很美好,但我实际用下来体验不太理想,这里把踩到的几个坑记录一下。
问题一:AI 总是溜回主目录
worktree 的意义就是隔离,可 AI 身处 worktree 里,却总是 cd 回项目主目录、读取甚至修改主目录里的文件。
结果就是隔离形同虚设:我以为改动都被关在 worktree 里,回头一看主目录也被动过了。每次都得盯着它,提醒它”留在 worktree 里”。
问题二:worktree 只复制了 git 追踪的文件
git worktree 只会复制 git 追踪了的文件,外加一个 .claude/settings.local.json。这就带来两个麻烦:
一是未追踪的文件不会过去。 node_modules、.env 这些没被 git 追踪的文件,在新 worktree 里统统缺失,于是每次都要 AI 额外处理——做软链、指定绝对路径之类的,多一道手续。
二是放行的权限留不下来。 我在会话里确认放行的操作,会被写进 worktree 那份 settings.local.json。可 worktree 是临时的,用完就删,这些配置也跟着没了。想让它们生效,我还得额外把配置复制回主目录的 settings.local.json 里去。
问题三:我的 review 工作流跑不通
我的工作流是两段式的:先开一个会话完成任务并创建 PR,再开另一个会话来 /review 这个 PR。
问题在于,如果第一个会话开了 worktree,第二个会话没法直接进到这个 worktree 里。只能走两种折中方案:
- 就在 main 分支上 review,需要改的时候再让 AI 进入 worktree 去改。
- 基于 PR 分支再单独创建一个 worktree 来 review。这个方案还算理想,偶尔 AI 会疑惑”怎么有两条分支都在处理同一个 PR”,但问题不大。
问题四:人忙不过来
理论上 worktree 可以并行处理多个任务,但实践上我一个人根本忙不过来——来回确认权限、确认每个任务的完成情况、挨个开 review……并行的瓶颈最后卡在了我自己身上。
这一条倒不算 worktree 本身的锅,更多是人的精力问题,应该可以通过折腾一下配置来缓解。
小结
前三个是工具层面的摩擦:隔离不彻底、未追踪文件和权限配置不跟随、跨会话进不去同一个 worktree;第四个是人的瓶颈。综合下来,worktree 现阶段对我来说还没到能稳定融入日常工作流的程度,先记录在此,等后续有改善或我找到更顺的配置方式再来更新。