Git Worktrees 平行開發

講義

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 會自動:

  1. 建立一個新的 worktree
  2. 在該 worktree 中執行任務
  3. 完成後建立 PR 或合併變更
  4. 如果代理沒有做任何變更,自動清理 worktree

實際工作流

想像你正在開發 Feature A,同時想讓 Claude 處理 Feature B:

  1. 你在主工作目錄中繼續開發 Feature A
  2. 啟動一個子代理,讓它在 worktree 中處理 Feature B
  3. 子代理在獨立的分支和目錄中工作,不會影響你的 Feature A
  4. 完成後,子代理建立 PR,你可以審查和合併

Worktree + 子代理的組合

這是目前社群最推薦的平行開發模式:

幫我同時處理以下任務,每個用獨立的 worktree:
1. 在 feature/user-auth 分支上實現登入 API
2. 在 feature/dashboard 分支上建立儀表板組件
3. 在 fix/memory-leak 分支上修復記憶體洩漏問題

三個任務會同時在三個獨立的 worktree 中執行,互不干擾。 每個完成後都會建立各自的 PR。

自動清理

Claude Code 具備智慧清理功能。如果一個代理在 worktree 中工作後沒有產生任何有意義的變更 (例如探索後發現不需要修改),系統會自動移除該 worktree,不留下多餘的目錄。

實際範例:10 檔案重構

假設你需要重構分散在 10 個檔案中的一套舊 API:

  1. 主代理分析所有 10 個檔案,制定重構策略
  2. 將工作分成 3 組,各建立一個 worktree
  3. 三個子代理平行工作,各處理 3-4 個檔案
  4. 主代理整合結果,解決可能的衝突
  5. 執行完整測試套件驗證

這種方式將原本可能需要一個小時的重構工作壓縮到 20 分鐘。

注意事項

  • Worktrees 共享同一個 .git 目錄,所以 git hooks 和設定是共享的
  • 確保不要在多個 worktree 中簽出同一個分支
  • 定期清理不再需要的 worktrees:git worktree prune