Published on

Claude Code 多工處理:運用 Git 工作樹提升開發效率

Claude Code 多工處理:運用 Git 工作樹提升開發效率

這段影片探討了如何有效率地使用 Claude Code 這款強大的 AI 程式碼助理進行多工處理,以解決在 AI 輔助開發工作流程中常見的效率瓶頸。影片指出,Claude Code 目前被認為是 AI 驅動開發領域中最具能力的工具之一,然而,當它在同一 Git 分支上執行大型任務時,開發者往往需要長時間等待,無法同時進行其他工作,導致工作流程受阻並可能引發大量合併衝突。

為了解決這個問題,影片重點介紹了 Git 工作樹 (Git WorkTrees) 的應用。

Git 工作樹的原理與優勢

獨立程式碼環境

Git 工作樹的運作方式並非僅僅創建一個新的分支,而是在檔案系統中複製一份完整的程式碼庫(包括所有檔案和資料夾)。這使得開發者或 AI 代理可以在這個獨立的複製程式碼庫中,於其專屬的分支上進行開發工作。

避免衝突

由於每個工作樹都擁有獨立的檔案集合,多個開發者或 AI 代理可以同時在不同的工作樹中工作,而不會立即產生衝突,大幅提升了並行開發的能力。

彈性整合

當工作樹上的開發任務完成後,其變更可以像正常分支一樣,無縫地合併回主分支。

Git 工作樹的實踐與挑戰

1. 手動設定流程

首先,需要在專案主資料夾旁建立一個專門存放工作樹的資料夾(例如:專案名稱-WorkTrees)。影片強調,將工作樹資料夾置於主專案資料夾之外是最佳實踐。

不推薦內部巢狀

影片引用 Claude 的建議,解釋了為何不應將工作樹資料夾巢狀於主專案內部:

  • Git 預設會追蹤這些目錄,除非手動加入 .gitignore,否則可能誤提交整個複製的程式碼庫
  • Git 及相關工具可能會因巢狀的程式碼庫而產生混淆
  • 某些開發環境 (IDE) 工具會遞歸掃描專案目錄,導致效能下降或混亂

操作步驟

  • 使用 git worktree add <目標路徑> <分支名稱> 指令來創建新的工作樹
  • 在新的工作樹目錄中開啟獨立的開發環境(如 Cursor 編輯器的新視窗),並切換到相應的工作樹分支

2. Claude Code 自訂指令的限制

影片嘗試透過 Claude Code 的自訂斜線指令(例如:/createWorkTree)來自動化工作樹的創建。

然而,Claude Code 存在安全權限限制,無法在專案主資料夾之外執行 cd(變更目錄)操作。這意味著它無法完全自動化地在外部創建工作樹並進入該目錄。

3. 基於終端機別名 (ZSH Alias) 的自動化方案

鑑於 Claude Code 的權限限制,影片推薦使用自訂的終端機別名指令碼來實現完整的自動化,例如在 ZSH 設定檔中定義 WT <分支名稱> 別名。

指令碼功能

這個指令碼可以自動執行以下操作:

  • 取得當前專案資料夾名稱
  • 創建一個相鄰的工作樹根資料夾(如 Music Shop-WorkTrees
  • 在該根資料夾內為指定分支創建新的工作樹(複製整個程式碼庫)
  • 關鍵優化: 自動複製必要的隱藏檔案和配置,例如 .ENV 環境變數檔、.cloud(Claude Code 設定)、.cursor(Cursor IDE 設定)以及其他自訂程式庫資料夾(如 instrumental componentsagent OS)。這是確保新工作樹環境能夠立即運作的關鍵步驟
  • 在新的工作樹目錄中自動開啟一個新的 Cursor 視窗,並切換到對應的 Git 分支

多代理並行開發實例

影片以一個簡單的 Rails 應用程式「音樂商店」為例,展示了如何利用上述自動化工作流程,同時添加「鼓」、「貝斯」和「鍵盤」三種樂器功能:

實施步驟

  1. 透過 WT drumsWT basesWT keyboards 指令快速創建三個獨立的工作樹和分支
  2. 在每個工作樹的 Cursor 視窗中啟動獨立的 Claude Code 實例,並給予其各自的開發任務
  3. 為了測試和驗證,每個工作樹上的 Rails 伺服器在不同的連接埠運行(例如:主專案 3000、鼓 3002、貝斯 3003、鍵盤 3004),確保互相獨立且可同時瀏覽
  4. 當各個功能在獨立的工作樹中開發完成並提交後,將其合併回主分支。影片也演示了處理預期的合併衝突(例如在導航列檔案中),這與日常的團隊協作方式一致

關鍵技術要點

  • Git WorkTrees: 創建獨立的程式碼庫副本,實現真正的並行開發
  • 終端機自動化: 通過 ZSH 別名簡化工作樹創建流程
  • 環境配置同步: 自動複製隱藏檔案和配置,確保開發環境一致性
  • 多代理協作: 同時運行多個 Claude Code 實例處理不同任務
  • 衝突管理: 延遲衝突處理到合併階段,提高開發效率

總結

透過 Git 工作樹與自訂終端機指令碼的結合,開發者可以有效地利用 Claude Code 進行多工處理。這種方法使得同時啟動多個 AI 程式碼代理,讓它們在獨立的程式碼環境中並行開發不同功能成為可能,顯著減少了等待時間並最小化了早期衝突,從而大大加速了產品開發與交付。


圖片來源:AI 產生