Git 工作樹
工作樹(Worktree)令不同任務在互相隔離的 Git 環境中執行。當你需要喺同一個項目裡平行處理多個任務——好似一邊開發新功能、一邊修復緊急 Bug——又唔想兩邊改動互相踩到時,工作樹係理想選擇。
每個工作樹係一個獨立目錄,擁有專屬嘅檔案、分支同代碼變更。你嘅主工作目錄保持整潔唔受干擾,任務結束後再將成果合併返嚟。
名詞解釋
| 名詞 | 描述 |
|---|---|
| 工作樹 | Git 嘅原生機制,容許一個 repo 同時擁有多個獨立嘅工作目錄,每個目錄 checkout 唔同分支 |
| 工作樹分支 | 某個工作樹目前 checkout 嘅分支,命名好似 lanmate/task-8c295571 |
| 工作樹目錄 | 工作樹對應嘅本機資料夾。LanMate 統一擺喺 ~/.lanmate/worktrees/<項目>/ 受管根下 |
| 基礎分支 | 工作樹建立時基於嘅分支,任務變更最終合併返呢條分支 |
工作樹唔會起喺你嘅項目 repo 入面(git status 唔會多咗目錄),而係集中擺喺 LanMate 自己嘅目錄下,按項目歸類、統一管理。
適用範圍與前置條件
- 項目係 Git repo(本機編碼任務)
- 本機已安裝 Git
非 Git 項目或唔涉及代碼變更嘅辦公任務,直接喺項目目前目錄執行就得,唔使工作樹。
四類工作樹來源
| 來源 | 幾時建立 | 命名 |
|---|---|---|
| 任務 | 輸入框揀「新工作樹」之後發任務 | task-<會話8位> |
| 分叉 | 會話分叉時揀「喺新工作樹中繼續」 | fork-<會話8位> |
| 子代理 | 編碼任務嘅子代理需要隔離環境時 | subagent-<代理8位> |
| 看板 | 看板任務派俾 Agent 執行時 | taskboard-<任務> |
四類工作樹都喺設定 → Git → 工作樹統一睇到、可以清理,並按來源標註。
為新任務建立工作樹
- 喺 Git 項目嘅對話輸入框下面,搵 Git 工作區選擇器
- 預設係「本地」(用項目目前工作樹),切換做「新工作樹」
- 可選:撳分支揀基準分支(預設目前分支)
- 發出任務,LanMate 自動建立專屬工作樹
任務啟動之後,會話頂部嘅置頂摘要會顯示目前工作樹分支,確認變更隔離生效。
喺新工作樹中繼續
對話去到某度想試另一條路,又唔污染原本工作區:
- 懸停目標訊息,撳「分叉」
- Git 項目會彈二選一:新聊天(同目錄繼續)或 喺新工作樹中繼續
- 揀新工作樹之後,分叉會帶埋源頭未提交嘅現場(連未追蹤檔案),進行中嘅變更唔會唔見咗
詳見會話管理。
AI 合併
任務完成、變更驗證無誤之後,將工作樹成果合併返基礎分支:
- 打開會話頂部置頂摘要,展開 Git 狀態
- 工作樹嗰行撳「AI 合併」
- Agent 會先審查工作樹嘅變更,跟項目提交規範補齊提交,再合併返基礎分支;有衝突就跟 repo 慣例解決
合併係 Agent 執行嘅完整 Git 流程,過程透明可追溯;對合併策略有特別要求,都可以直接喺對話講。
查看磁碟佔用
工作樹係完整 checkout 目錄,會佔磁碟空間。隨時可以查:
- 前往設定 → Git → 工作樹
- 「工作樹磁碟佔用」區域列出全部工作樹嘅佔用大小、分支、上次使用時間,按來源分類
當項目工作樹總佔用到達你喺設定配置嘅門檻時,輸入框上面會出現提醒條,可以一鍵去清理。
清理工作樹
清理會刪除工作樹目錄釋放磁碟,對話歷史同代碼變更紀錄會保留。清理時可以剔「保留分支」——淨係刪目錄,分支留低,之後仲可以從分支搵返啲改動。
入口:設定 → Git → 工作樹 → 剔目標工作樹 → 清理所選。
子代理工作樹有快照保護:清理之前會先將未提交變更存去 lanmate/subagent-* 快照分支,目錄刪咗產出都仲可以從分支搵返。
相關設定
| 設定 | 位置 | 說明 |
|---|---|---|
| 清理時預設保留分支 | 設定 → Git → 工作樹 | 開啟後清理確認彈窗預設剔「保留分支」 |
| 磁碟佔用提醒(GB) | 設定 → Git → 工作樹 | 工作樹總佔用到達門檻時喺輸入框提醒;設做 0 閉咗佢 |