用途:删除远程跟踪分支已被删除的本地分支,并处理这些分支关联的 worktree。
主要能力:先执行 git fetch --prune 获取最新远程状态,再解析 git branch -vv 中标记为 : gone] 的分支,找出已失效的本地分支;删除前会列出待删分支并请求用户确认;确认后逐个检查并移除关联 worktree,再删除分支。
使用方式:运行发现脚本 bash scripts/clean-gone。若脚本输出 NONE,说明没有过期分支,直接报告并停止。否则向用户展示分支列表,例如 feature/old-thing、bugfix/resolved-issue、experiment/abandoned,并询问是否全部删除(y/n)。等待用户回答,可使用平台的问题工具(如 Claude Code 的 AskUserQuestion、Codex 的 request_user_input、Gemini 的 ask_user)。若没有此类工具,则展示列表并等待用户回复。这是针对整个列表的是/否决定,不提供多选或逐分支选择。用户确认后,对每个分支:用 git worktree list | grep "[$branch]" 检查是否有关联 worktree;若存在且不是主仓库根目录,先执行 git worktree remove --force "$worktree_path";再执行 git branch -D "$branch"。过程中报告结果,例如 Removed worktree: .worktrees/feature/old-thing、Deleted branch: feature/old-thing,最后汇总清理数量。若用户拒绝,则确认并停止,不删除任何内容。
适用场景:本地积累了大量远程已删除的分支,需要批量清理并同步 worktree 时。
限制:仅处理远程跟踪分支已消失的本地分支;删除操作具有破坏性,必须经用户确认;不提供逐分支选择;具体平台问题工具的支持情况取决于运行环境。