Git Worktrees 是一個強大但經常被忽略的 Git 功能。在 Claude Code 的世界裡, 它是實現平行開發的基礎設施。理解 worktrees 對於有效使用 Agent Teams 至關重要。
什麼是 Git Worktrees?
通常一個 Git 倉庫只有一個工作目錄。Git Worktrees 讓你可以從同一個倉庫建立多個工作目錄, 每個目錄可以簽出不同的分支。這意味著你可以同時在多個分支上工作,而不需要 stash 或 commit 當前的變更。
# 建立一個新的 worktree
git worktree add ../my-project-feature-b feature-b
# 列出所有 worktrees
git worktree list
# 移除一個 worktree
git worktree remove ../my-project-feature-b
為什麼 Worktrees 對 Claude Code 很重要?
當你使用子代理或 Agent Teams 時,多個 Claude 實例需要同時修改檔案。 如果它們都在同一個目錄中工作,就會產生衝突。Worktrees 提供了完美的隔離: 每個代理在自己的 worktree 中工作,互不干擾。
Claude Code 的 Worktree 整合
Claude Code 內建了 worktree 支援。當你使用 Agent Teams 或啟動子代理時,
可以指定 isolation: "worktree" 參數,Claude 會自動:
- 建立一個新的 worktree
- 在該 worktree 中執行任務
- 完成後建立 PR 或合併變更
- 如果代理沒有做任何變更,自動清理 worktree
實際工作流
想像你正在開發 Feature A,同時想讓 Claude 處理 Feature B:
- 你在主工作目錄中繼續開發 Feature A
- 啟動一個子代理,讓它在 worktree 中處理 Feature B
- 子代理在獨立的分支和目錄中工作,不會影響你的 Feature A
- 完成後,子代理建立 PR,你可以審查和合併
Worktree + 子代理的組合
這是目前社群最推薦的平行開發模式:
幫我同時處理以下任務,每個用獨立的 worktree:
1. 在 feature/user-auth 分支上實現登入 API
2. 在 feature/dashboard 分支上建立儀表板組件
3. 在 fix/memory-leak 分支上修復記憶體洩漏問題
三個任務會同時在三個獨立的 worktree 中執行,互不干擾。 每個完成後都會建立各自的 PR。
自動清理
Claude Code 具備智慧清理功能。如果一個代理在 worktree 中工作後沒有產生任何有意義的變更 (例如探索後發現不需要修改),系統會自動移除該 worktree,不留下多餘的目錄。
實際範例:10 檔案重構
假設你需要重構分散在 10 個檔案中的一套舊 API:
- 主代理分析所有 10 個檔案,制定重構策略
- 將工作分成 3 組,各建立一個 worktree
- 三個子代理平行工作,各處理 3-4 個檔案
- 主代理整合結果,解決可能的衝突
- 執行完整測試套件驗證
這種方式將原本可能需要一個小時的重構工作壓縮到 20 分鐘。
注意事項
- Worktrees 共享同一個
.git目錄,所以 git hooks 和設定是共享的 - 確保不要在多個 worktree 中簽出同一個分支
- 定期清理不再需要的 worktrees:
git worktree prune