Claude Code Git Worktrees 完整教學 - 讓 AI 同時幫你做五件事
一個 Claude Code session 修 auth bug,另一個在寫新的 API endpoint,第三個在跑測試然後修 failing cases。三件事同時進行,互不干擾。
這不是什麼未來願景,是 Claude Code 的 --worktree flag 已經能做到的事。Boris Cherny(Claude Code 的創造者)自己的工作流是同時跑 10-15 個 session,每個 session 各自推進不同任務。聽起來很瘋狂?其實設定比你想的簡單得多。
為什麼需要 Worktrees
先講問題。你在一個 repo 裡開了 Claude Code session A 修 bug,修到一半想讓另一個 session B 同時去加新功能。結果 B 改了你正在 debug 的檔案,A 的 git status 瞬間爆炸——unstaged changes、merge conflicts、整個 context 亂掉。
Git worktree 解決這個問題。一個 worktree 就是同一個 repo 的一個獨立工作目錄,有自己的 branch、自己的檔案,但共享同一份 git history 和 remote。你可以把它想成「同一個 repo 的平行宇宙」——每個宇宙裡的 Claude 各做各的,完事後 merge 回來就好。
一行指令開始
Claude Code 內建了 worktree 支援,不需要自己手動 git worktree add:
1 | # 建立名為 feature-auth 的 worktree 並啟動 Claude |
也可以用縮寫 -w:
1 | claude -w feature-auth |
Worktree 會建在 <repo>/.claude/worktrees/<name>/,branch 名稱是 worktree-<name>,base 分支預設是 origin/HEAD 指向的 branch。
實戰:三個 Terminal 同時跑
打開三個終端機視窗(iTerm2 的 split pane 或 tmux 都行):
Terminal 1 — 修 bug
1 | claude -w fix-auth-race-condition |
Terminal 2 — 新功能
1 | claude -w feature-user-preferences |
Terminal 3 — 重構
1 | claude -w refactor-db-queries |
三個 Claude 各在各的 worktree 裡工作,不會互相踩到。
.worktreeinclude:自動複製 .env
新 worktree 是乾淨的 checkout,不會包含 .env、config/secrets.json 這些 gitignored 的檔案。第一次忘記這件事的時候你的 app 會直接 crash。
在 repo 根目錄建一個 .worktreeinclude 檔案:
1 | .env |
Claude 建 worktree 時會自動把這些檔案複製過去。只有同時符合「match pattern」且「被 gitignore」的檔案才會被複製,tracked 的檔案不會重複。
Subagent 也能用 Worktrees
不只是你手動開多個 terminal。Claude 的 subagent 也支援 worktree 隔離——在 .claude/agents/ 的 agent 定義裡加一行 isolation: worktree,subagent 就會自己建 worktree 來工作:
1 | # .claude/agents/test-runner.md |
或是在對話中直接說「use worktrees for your agents」,Claude 會自動替 subagent 分配獨立的 worktree。
Subagent 做完沒改東西?worktree 自動清掉。有改動?保留等你 review。
跟 Cursor 和 Copilot 比
Cursor 3 剛發布的 agent-first 架構也支援跑多個 agent,但它是在 IDE 內切換,不是真正的獨立工作目錄。如果兩個 Cursor agent 同時改同一個 repo 的不同檔案,還是有衝突風險。
GitHub Copilot 的多 agent 功能還在早期,主要靠 cloud-based workspace。你的 code 要傳到 GitHub 的 server 上跑。
Claude Code 的 worktree 方案是本地 + 獨立目錄,用 Git 原生機制做隔離。不依賴雲端、不需要特殊 IDE 支援、資料不離開你的機器。缺點是吃硬碟空間——每個 worktree 都是一份完整的 checkout(但共享 .git objects,所以不是完整 clone 那麼大)。
清理與管理
退出 worktree session 時,Claude 會自動處理:
- 沒有任何修改 → worktree 和 branch 自動刪除
- 有修改或 commit → Claude 問你要保留還是移除
如果你想手動管理:
1 | # 列出所有 worktree |
記得在 .gitignore 加上 .claude/worktrees/,不然 main repo 的 git status 會顯示一堆 untracked files。
Base Branch 不對怎麼辦
Worktree 預設從 origin/HEAD branch 出去。如果你的 origin/HEAD 指向的不是你想要的 branch(例如 clone 很久了,remote 的 default branch 已經改了),手動同步一下:
1 | # 重新同步 origin/HEAD |
如果你需要每次都從不同 branch 分支,可以設定 WorktreeCreate Hook 來自定義 worktree 建立邏輯。
給 3-5 個 Worktrees 同時跑的建議
Boris Cherny 的建議是 3-5 個 worktree 為一個 sweet spot。超過這個數量,context switching 的認知負擔(就算是看 Claude 的輸出也需要腦力)會開始抵消平行化的好處。
幾個實用建議:
任務要清晰獨立。如果兩個 worktree 的任務會改到同一組核心檔案,merge 的時候會很痛苦。開始之前先想清楚任務邊界。
用 session name 管理。每個 worktree session 取個好名字:claude -w fix-auth -n "修 auth race condition",之後用 claude --resume "修 auth race condition" 就能快速回到上下文。
每個 worktree 跑完記得 push。因為 worktree 是本地的,如果你的硬碟出問題,沒 push 的 commit 就沒了。
定期清理。worktree 多了之後 git worktree list 看一下,完成的就 remove,不然佔硬碟空間。
平行跑 AI agent 聽起來很潮,但本質上就是多開幾個獨立工作目錄,用 Git 的原生機制做隔離。沒有什麼黑魔法,只是 Claude Code 把這個流程包裝成一個 --worktree flag 讓你一行指令搞定。試過一次就回不去了。









