mcpField
C
ce-clean-gone-branches

ce-clean-gone-branches

github.com/everyinc开发25.8k1.7k 次安装今天更新
代码仓库

关于 ce-clean-gone-branches

ce-clean-gone-branches 是用于清理远程跟踪分支已删除的本地 Git 分支及相关 worktree 的 Agent 技能。它会先列出待处理项,并在删除前征求确认。

主要功能

  1. 01获取并清理远程状态
  2. 02查找标记为 gone 的分支
  3. 03批量删除前征求确认
  4. 04移除关联的 worktree

适用场景

  1. 01清理远程已删除的分支
  2. 02移除过期的本地 worktree
  3. 03检查待清理的分支

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/everyinc/compound-engineering-plugin --skill ce-clean-gone-branches

安装后在 Claude Code 中输入/ce-clean-gone-branches确认已加载。

附带文件scripts/clean-gone

详细介绍

清理已失效的分支

删除远程跟踪分支已被删除的本地分支,包括所有关联的工作树。

工作流

步骤 1:查找已失效的分支

运行查找脚本以获取最新远程状态并识别已失效的分支:

bash scripts/clean-gone

scripts/clean-gone

脚本会先运行 git fetch --prune,然后解析 git branch -vv,查找标记为 : gone] 的分支。

如果脚本输出 __NONE__,则报告未找到过期分支并停止。

步骤 2:列出分支并征求确认

向用户显示将要删除的分支列表。使用简单列表格式:

These local branches have been deleted from the remote:

  - feature/old-thing
  - bugfix/resolved-issue
  - experiment/abandoned

Delete all of them? (y/n)

使用平台的阻塞式提问工具等待用户回答:Claude Code 中使用 AskUserQuestion(如果尚未加载其架构,先调用 ToolSearch 并传入 select:AskUserQuestion);Codex 中使用 request_user_input;Gemini 中使用 ask_user;Pi 中使用 ask_user(需要 pi-ask-user 扩展)。仅当运行环境中不存在阻塞式工具或调用出错时(例如 Codex 编辑模式),才回退为仅在聊天中列出分支——不能仅因需要加载架构而跳过提问。切勿不经询问就跳过此步骤。

这是针对整个列表的是或否决定——不要提供多选或逐个分支选择。

步骤 3:删除已确认的分支

如果用户确认,则删除每个分支。对每个分支:

  1. 检查是否有关联的工作树(git worktree list | grep "\\[$branch\\]")
  2. 如果存在工作树且不是主仓库根目录,先将其移除:git worktree remove --force "$worktree_path"
  3. 删除分支:git branch -D "$branch"

在操作过程中报告结果:

Removed worktree: .worktrees/feature/old-thing
Deleted branch: feature/old-thing
Deleted branch: bugfix/resolved-issue
Deleted branch: experiment/abandoned

Cleaned up 3 branches.

如果用户拒绝,请予以确认并停止,不要删除任何内容。

评论

支持 Markdown