用途:Epicenter 仓库中多个 harness(warp、codex、opencode、conductor)会不断创建 Git worktree,但没有机制回收,导致堆积。该技能提供安全回收流程,可一次性或周期性清理已合并的分支及其工作树。
主要能力:定义回收信号为“分支完全包含于 origin/main”且“工作树干净或仅有可丢弃的脏文件”。使用 git merge-base --is-ancestor <branch> origin/main 判断包含关系,用 git cherry origin/main <branch> 查看未合并提交。提供审计脚本,遍历 git worktree list --porcelain 并分类每个工作树为 MERGED 或未合并。
使用方式:先 fetch 更新 origin/main,再运行审计脚本分类。对每个 MERGED 工作树用 git -C <path> status --porcelain 检查是否干净。按决策表处理:已合并且干净则 git worktree remove <path> 并 git branch -d/-D <branch>;仅有可丢弃脏文件则加 --force;分离头且已合并干净则只移除工作树;存在真实未提交工作则保留,先提交或建分支;分离头且有真实未提交则先 git -C <path> switch -c holding/<name> 锚定;未合并提交则不动。
限制与注意:回收是破坏性操作,需审批,批量清理前应列出精确命令清单。git branch -d 要求分支已合并到当前 HEAD,若本地 main 落后于 origin/main 可能拒绝,此时可依据 merge-base 证明使用 -D。git worktree remove 可能因忽略文件残留报 Directory not empty,需 git worktree prune 后 rm -rf。仓库中 git stash 跨工作树共享,应避免使用。每个工作树和分支只有一个所有者,不应回收或提交非自己拥有的工作树,除非确认已废弃。harness 会持续创建和修改工作树,回收应作为持续纪律,结束时重新审计并确认路径已消失。