用途:审计当前项目所有 git worktree,报告各工作树的脏状态与合并状态,回答“哪些分支已合并”“哪些有未提交改动”“哪些可以清理”等问题。适用于批量清理 worktree 前核对,避免丢失未提交工作。
主要能力与步骤:
- 状态检查前必须拉取最新 main:cd "$(git rev-parse --show-toplevel)" && git pull origin main。不执行会导致合并判断过期。
- 遍历 git worktree list --porcelain 收集信息,输出每个 worktree 的名称、分支、是否干净(clean/DIRTY)以及是否已合并进 origin/main;若 DIRTY 则列出 git status --short 内容。
- 检测 squash 合并:该项目仅使用 squash 合并,git merge-base --is-ancestor 无法识别 squash 合并的分支,需对显示“not merged”的分支做内容差异核对——先取 merge-base,列出该分支改动的文件,再逐个与 main 比较;全部一致即为已 squash 合并。注意不要使用 git diff origin/main <branch> 直接比较两个顶端,否则会产生假差异。
- 可选检查关联 tmux 会话(如 tmux ls | grep -E 'codex-worker|<other-pattern>'),仅在 tmux 可用且相关时执行。
- 结果必须以 Markdown 表格呈现,每行一个 worktree,包含 Worktree、Branch、Dirty、Merged、Can clean? 等列;Dirty 用 ✅ clean 或 ⚠️ N files,Merged 用 ✅ merged / ✅ squash-merged / ❌ not merged / n/a,仅当已合并(含 squash 合并)且干净时 Can clean? 为 ✅。
- 清理仅在用户明确批准后进行,对每个 worktree 执行 git worktree remove "/path/to/$NAME",并视需要 git branch -D "<branch>"。
限制:不执行未经用户批准的清理;未提供具体平台、收费或价格信息。