科技 · 实用指南
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 清单,确认分支只出现在预期所有者。只重试失败的本地步骤,不重复已成功的远端合并或推送。
最后在保留目录检查状态与提交可达性。验收记录应列出所有者路径、分支引用、保存提交,以及改了元数据、目录还是包装工具状态。
