听劝,开始用 worktree 了,整理下笔记。
-
1\ 最简单的起手式。
```
# 终端 1
claude -w feature-auth
# 终端 2
claude -w bugfix-login
```
默认建在 `.claude/worktrees/<名字>/`,自动开一条 `worktree-<名字>` 分支。
不取名?`claude -w` 直接给你生成一个,比如 bright-running-fox。
2\ 不想切终端,也可以让 Claude 自己进。
会话里直接说「work in a worktree」,它会用 `EnterWorktree` 工具帮你建好、甚至中途切到另一个 worktree。干完用 `ExitWorktree` 回到原目录。全程不用手敲 git。
个人更喜欢这种。
3\ 新 worktree 从哪条分支分叉?
默认 `"fresh"`,从远程默认分支拉一棵干净的树,和线上一致。
想带上你本地还没 push 的提交? settings 里设:
```json
{ "worktree": { "baseRef": "head" } }
```
4\ review PR 的神操作。
```
claude -w "#
1234#"
```
直接把这个 PR 拉进一个隔离 worktree(`.claude/worktrees/pr-1234`),贴完整 GitHub PR URL 也行。让 Claude 在干净环境里读这个 PR,不污染你手头的活。
5\ 坑 1:.env 不会跟过来。
根目录放一个 `.worktreeinclude`(语法同 .gitignore),列出要带的本地文件:
```
.env
.env.local
config/secrets.json
```
新 worktree 自动复制进去。
6\ 坑 2:每个 worktree 都重装一遍 `node_modules` 。
```json
{ "worktree": {
"symlinkDirectories": ["node_modules", ".cache"]
}}
```
软链共享,不占磁盘。
大型 monorepo 再加 `sparsePaths`,只检出你要动的那几个目录,起得更快。
7\ subagent 启 worktree?
在自定义 subagent 的 frontmatter 加一行:
```
isolation: worktree
```
每个子代理拿到一份独立仓库副本各干各的;没做任何改动的,结束时自动删掉。零垃圾。
8\ 最后一条。
记得让 `.claude/worktrees/` 加进 `.gitignore`。