Git 工作樹
工作樹(Worktree)讓不同任務在相互隔離的 Git 環境中執行。當你需要在同一個專案裡並行處理多個任務——比如一邊開發新功能、一邊修復緊急 Bug——又不希望兩邊改動互相踩踏時,工作樹是理想選擇。
每個工作樹是一個獨立目錄,擁有專屬的檔案、分支和程式碼變更。你的主工作目錄保持整潔不受干擾,任務結束後再把成果合併回來。
名詞解釋
| 名詞 | 描述 |
|---|---|
| 工作樹 | Git 的原生機制,允許一個儲存庫同時擁有多個獨立的工作目錄,每個目錄檢出不同分支 |
| 工作樹分支 | 某個工作樹目前檢出的分支,命名形如 lanmate/task-8c295571 |
| 工作樹目錄 | 工作樹對應的本機資料夾。LanMate 統一放在 ~/.lanmate/worktrees/<專案>/ 受管根下 |
| 基礎分支 | 工作樹建立時基於的分支,任務變更最終合併回這條分支 |
工作樹不會建在你的專案儲存庫裡(git status 裡不會多出目錄),而是集中在 LanMate 自己的目錄下,按專案歸類、統一管理。
適用範圍與前置條件
- 專案是 Git 儲存庫(本機編碼任務)
- 本機已安裝 Git
非 Git 專案或不涉及程式碼變更的辦公任務,直接在專案目前目錄執行即可,無需工作樹。
四類工作樹來源
| 來源 | 何時建立 | 命名 |
|---|---|---|
| 任務 | 輸入框選擇「新工作樹」後發出任務 | task-<會話8位> |
| 分叉 | 會話分叉時選擇「在新工作樹中繼續」 | fork-<會話8位> |
| 子代理 | 編碼任務的子代理需要隔離環境時 | subagent-<代理8位> |
| 看板 | 看板任務派發給 Agent 執行時 | taskboard-<任務> |
四類工作樹都在設定 → Git → 工作樹中統一可見、可清理,並按來源標註。
為新任務建立工作樹
- 在 Git 專案的對話輸入框下方,找到 Git 工作區選擇器
- 預設是「本地」(使用專案目前工作樹),切換為「新工作樹」
- 可選:點選分支選擇基準分支(預設目前分支)
- 發出任務,LanMate 自動建立專屬工作樹
任務啟動後,會話頂部的置頂摘要會顯示目前工作樹分支,確認變更隔離生效。
在新工作樹中繼續
對話進行到某處想換一條路,又不污染原工作區:
- 懸停目標訊息,點選「分叉」
- Git 專案會彈出二選一:新聊天(同目錄繼續)或 在新工作樹中繼續
- 選擇新工作樹後,分叉攜帶源檢出的未提交現場(含未追蹤檔案),在途變更不會遺失
詳見會話管理。
AI 合併
任務完成、變更驗證無誤後,把工作樹成果合併回基礎分支:
- 開啟會話頂部置頂摘要,展開 Git 狀態
- 工作樹行點選「AI 合併」
- Agent 會先審查工作樹的變更,按專案提交規範補齊提交,再合併回基礎分支;出現衝突時按儲存庫慣例解決
合併是 Agent 執行的完整 Git 流程,過程透明可追溯;對合併策略有特殊要求時,也可以直接在對話裡說明。
查看磁碟占用
工作樹是完整檢出目錄,會占磁碟空間。隨時可查:
- 前往設定 → Git → 工作樹
- 「工作樹磁碟占用」區域列出全部工作樹的占用大小、分支、上次使用時間,按來源分類
當專案工作樹總占用達到你在設定中配置的閾值時,輸入框上方會出現提醒條,可一鍵前往清理。
清理工作樹
清理會刪除工作樹目錄釋放磁碟,對話歷史與程式碼變更紀錄保留。清理時可勾選「保留分支」——只刪目錄,分支留下,之後仍可從分支找回變更。
入口:設定 → Git → 工作樹 → 勾選目標工作樹 → 清理所選。
子代理工作樹有快照保護:清理前會先把未提交變更存到 lanmate/subagent-* 快照分支,目錄刪了產出也能從分支找回。
相關設定
| 設定 | 位置 | 說明 |
|---|---|---|
| 清理時預設保留分支 | 設定 → Git → 工作樹 | 開啟後清理確認彈窗預設勾選「保留分支」 |
| 磁碟占用提醒(GB) | 設定 → Git → 工作樹 | 工作樹總占用達到閾值時在輸入框提醒;設為 0 關閉 |