生活分享

Claude Code|Git Worktree 平行工作

隔離多個任務的檔案與分支。Git Worktree 讓同一儲存庫擁有多個工作目錄,各自使用分支與檔案。本篇會把待辦篩選與文件整理分開,確認兩個 session 不會直接改到彼此的檔案,再把其中一個成果整合回主分支。你也會知道何時可以安全清理工作目錄。

閱讀時間約 5 分鐘

Git Worktree 平行工作:文件、螢幕與完成記號的幾何插圖
圖片:Mokaair (© Mokaair)
本篇目錄
  1. 分開檔案但共用歷史
  2. 先查看主目錄狀態
  3. 使用 Git 建立可觀察的工作目錄
  4. 指定責任與共享資源
  5. 驗證隔離與整合成果
  6. 清理前確認成果已保存

Git Worktree 讓同一儲存庫擁有多個工作目錄,各自使用分支與檔案。本篇會把待辦篩選與文件整理分開,確認兩個 session 不會直接改到彼此的檔案,再把其中一個成果整合回主分支。你也會知道何時可以安全清理工作目錄。

先完成,將建立初始提交。沒有提交歷史時,先保存基準再使用 worktree。以下命令適用 PowerShell、macOS 或 Linux 終端機,所有操作限於你自己的練習儲存庫。

分開檔案但共用歷史

分開檔案但共用歷史 → 先查看主目錄狀態 → 使用 Git 建立可觀察的工作目錄
分開檔案但共用歷史 → 先查看主目錄狀態 → 使用 Git 建立可觀察的工作目錄 · 圖片:Mokaair (© Mokaair)
閱讀完整文字說明

Git Worktree 平行工作,以流程和文件圖形呈現教學重點。

項目Worktree 的關係需要另行安排
工作檔案與目前分支各自獨立清楚的任務範圍
Git 物件與歷史同一儲存庫共用整合與分支管理
開發伺服器與資料庫不會自動隔離連接埠與測試資料

Worktree 不是完整複製另一個獨立 Git 儲存庫。它與主目錄共用物件與歷史,但有自己的工作檔案、索引與目前分支。因此同一個分支通常不能同時在兩個 worktree 被正常檢出,建立時應為每項工作使用不同分支。

未提交的主目錄修改不會自動成為新 worktree 的起點。先決定要從哪個已提交版本開始,再建立分支;若需要帶入尚未提交工作,必須明確保存與移轉,不能只看到相同儲存庫名稱就假設內容一致。

先查看主目錄狀態

PowerShell 或 macOS/Linux 終端機:在練習儲存庫根目錄 · bash
git status --short
git branch --show-current
git log -1 --oneline
git worktree list

記下目前分支與提交,確認沒有不明變更。若已有其他 worktree,先核對路徑與負責人,不要刪除名稱陌生的目錄。這篇使用 todo-filter 分支與旁邊的 todo-filter-work 資料夾,若已存在就選另一個明確名稱。

使用 Git 建立可觀察的工作目錄

PowerShell 或 macOS/Linux 終端機:從目前提交建立分支 · bash
git worktree add -b todo-filter ../todo-filter-work
git worktree list

在另一個終端機進入新目錄,確認實際路徑與分支後再啟動 Claude。主目錄保留原本的 session,可以只做 README 整理;新目錄負責篩選功能,兩者的責任先寫清楚。

PowerShell 或 macOS/Linux 終端機:在新工作目錄啟動 · bash
cd ../todo-filter-work
git branch --show-current
claude

Claude Code 也提供 --worktree 入口,自動建立或進入它管理的工作目錄。這是另一種建立方式,與上面的手動 Git 範例擇一練習,不要在已建立的 worktree 裡再無意間建立第二層。

PowerShell 或 macOS/Linux 終端機:另一種方式,從主儲存庫啟動 · bash
claude --worktree todo-filter-session

指定責任與共享資源

新工作目錄的 Claude Code 對話框 · text
請先回報目前工作目錄與分支,確認位於 todo-filter 的工作副本。
只實作待辦篩選所需的 model.js、app.js、index.html 與相關測試。
不要修改主工作目錄,不要提交或推送。
完成後回報差異、測試結果與尚未處理的項目。

每個目錄若有依賴需要各自準備。這套練習沒有外部套件,執行 npm test 即可;真實專案的 node_modules、環境檔與建置輸出不一定會自動存在。不要把秘密檔案放入版本控制,只為了讓 worktree 可以啟動。

兩個開發伺服器預設都想用相同連接埠時會衝突。請分配不同連接埠,並在每個瀏覽器頁面記錄對應目錄。看到正確畫面也要確認不是另一個 worktree 的伺服器,否則可能驗證到舊版本。

驗證隔離與整合成果

在新目錄修改主標題或篩選功能,回主目錄確認檔案沒有同步改變。兩邊各執行 git status,應只看到自己那邊的未提交修改。這個觀察能直接證明檔案隔離,不需要靠 session 名稱猜測。

功能完成後,在新目錄審查差異、執行測試並建立本機提交。回到主目錄,先確認主目錄乾淨且位於預定接收分支,再選擇合併。這裡示範只允許快轉,遇到分歧會停止,讓你先理解歷史再決定處理方式。

PowerShell 或 macOS/Linux 終端機:在乾淨的接收分支執行 · bash
git merge --ff-only todo-filter
npm test

若快轉失敗,通常是兩邊都新增了提交。先查看圖形化歷史與差異,選擇適合的合併方式並處理衝突,不要用強制覆蓋把另一邊工作丟掉。完整 PR 審查方式可看。

整合之前,先把每個工作目錄的未追蹤檔案也納入檢查。git diff 通常只顯示已追蹤檔案的差異,新增測試或說明可能仍在未追蹤狀態;只看 diff 為空,就直接移除 worktree,仍可能失去重要材料。

共享 Git 歷史也表示某些儲存庫層級操作會影響其他工作目錄,例如修改遠端設定或清理共用物件。平行 session 應以自己的分支與檔案為範圍,不隨意執行全儲存庫維護。需要這類操作時,先協調其他工作是否仍在進行。

如果 worktree 目錄被手動搬走或刪除,Git 的管理紀錄可能與磁碟不一致。先用 git worktree list 查看紀錄與實際路徑,再依 Git 文件修復;不要把看不到的目錄當成可以任意清理的暫存。必要成果可能還在另一個路徑或未合併分支。

完成紀錄除了提交識別碼,也寫下哪個測試與瀏覽器網址對應哪個目錄。這樣審查者可以判斷你的證據是否來自整合後版本,而不是另一個尚未合併的工作副本。

清理前確認成果已保存

關閉該目錄的 Claude session 與伺服器,確認沒有未提交檔案,且必要提交已合併或保存在你要保留的分支。只有在確認不再需要工作副本時,才從其他目錄移除 worktree。

PowerShell 或 macOS/Linux 終端機:確認路徑與保存狀態後 · bash
git worktree remove ../todo-filter-work
git worktree list

不要加 --force 來跳過未提交變更。Claude 自建 worktree 的離開提示可能提供保留或移除,移除會連同工作一起刪除;非互動工作與不同版本的自動清理時機也不同,應讀取提示並自行核對。

小練習是用兩個目錄各改一個互不相同檔案,證明檔案不互相影響,再整合其中一個分支。完成判準是能指出每個目錄、分支、提交與伺服器的對應關係,必要測試通過,並在不遺失工作下完成清理。

準備好練習完整流程時,接著閱讀,使用獨立材料進行故障重現與成果驗證。

回總目錄

  • 生活分享

    Claude Code|建立第一個 mod:在 Claude Code 行程內數工具呼叫

    寫一個三檔案的 mod,用驗證器與測試確認它掛上的事件。文件把 mod 定義成多了入口檔的 plugin:入口檔叫 hooks module,Claude Code 在事件發生時呼叫裡面的函式,函式可以觀察、改寫或接手事件。

  • 生活分享

    Claude Code|雙 Worktree 實作與衝突整合

    隔離兩項功能,最後完成整合與回歸。兩個 Claude 工作階段同時編輯專案,最容易出現的問題是互相改到同一份檔案,或各自測試通過、整合後卻失敗。本篇用兩個 Worktree 分別處理篩選預設值與介面文字,故意製造一次小衝突,再完成整合、驗證與清理。你不需要先啟用 Agent Teams。

  • 生活分享

    Claude Code|比較流程品質、用量與執行時間

    以同一資料集比較兩種工作方法。比較兩種 Claude 工作方法時,不能只挑成功那一次,也不能只看第一個答案有多快。本篇用固定案例、原始紀錄和一致判準,比較品質、重試、等待與人工整合時間,最後寫出有樣本數與限制的報告,而不是保證某個方法一定省錢。

  • 生活分享

    Claude Code|用量、成本與效率調整

    縮小任務、整理上下文與選擇模型。提升 Claude Code 效率,先減少不必要的工作,再考慮模型與設定。本篇用同一個待辦功能比較任務範圍、上下文與驗證方式,建立一份用量觀察表。你會分清楚訂閱額度、API 費用估計與實際帳務,不用單一數字判斷整個工作是否划算。

最新旅遊情報攻略

資料來源

生活分享