科技 · 實用指南
Git 顯示分支已在另一個 worktree 檢出?prune 或強制前先證明所有者
列出所有關聯 worktree,保存未提交或未推送工作,再區分真實所有者、已移動、離線或缺少路徑,選擇 remove、repair、prune、游離檢出或新分支。

Git 阻止同一分支同時在多個 worktree 檢出,因為兩個目錄都會移動同一分支引用。錯誤中的路徑是登記所有者證據,不是刪除許可。
先做 porcelain 清單並檢查指定目錄。prune 只處理工作目錄缺少的記錄;repair 用於移動後連結;remove 用於明確退役的 worktree。
1. 盤點已登記所有者
在任一健康 worktree 執行 git worktree list --porcelain,記錄路徑、HEAD、分支、鎖定理由與 prunable 標記。先解析錯誤精確路徑,不要直接改 .git/worktrees。
也記錄失敗命令並確認包裝工具是否已完成遠端動作。PR 可能已合併,只是本機清理被分支占用保護擋下。
2. 檢查指定路徑與工作
若目錄存在,執行 status 並檢查未包含於目標基線或遠端的提交。移除前保存補丁、未追蹤檔與提交 ID。
不要因名稱含 temp、agent 或 build 就判定安全。鎖定或舊目錄仍可能含未發布工作,或只是暫時離線。
3. 分類真實、移動、離線或缺少
真實所有者應繼續負責移動該分支。外部移動目錄要 repair;可攜或網路路徑可能刻意鎖定且暫時不可用。
只有證明目錄確實消失,而非未掛載、改名或命名空間不可見,才判為缺少。先以 git worktree prune --dry-run --verbose 預覽。
4. 只執行匹配處理
不再需要且乾淨的目錄使用 git worktree remove path;支援的搬移用 move,外部搬移後用 repair。
並行唯讀查看用 detached HEAD 或新分支,不覆蓋同一分支所有者。僅在證據說明會丟棄哪些髒或鎖定狀態後才 force。
5. 驗證唯一所有者與預期結果
重跑 porcelain 清單,確認分支只出現在預期所有者。只重試失敗的本機步驟,不重複已成功的遠端合併或推送。
最後檢查保留目錄的狀態與提交可達性。驗收記錄列出所有者路徑、分支引用、保存提交,以及變更屬於元資料、目錄或包裝工具。
