mcpField
C
cleanup-merged-branches

cleanup-merged-branches

github.com/timschoch开发068 次安装1 周前更新
代码仓库

关于 cleanup-merged-branches

用于清理已合并拉取请求对应的远程分支,并检查仍未关闭的关联问题。先生成试运行计划,必须获得明确确认才会删除。

主要功能

  1. 01试运行生成分支计划
  2. 02检查已合并及未关闭 PR
  3. 03保护默认分支和 staging
  4. 04删除前要求明确确认
  5. 05检查仍未关闭的关联问题

适用场景

  1. 01查看可清理的远程分支
  2. 02确认计划后删除分支
  3. 03关闭因集成分支合并而遗留的问题

安装

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

$npx skills add https://github.com/timschoch/mattpocock-skills --skill cleanup-merged-branches

安装后在 Claude Code 中输入/cleanup-merged-branches确认已加载。

附带文件agents/openai.yamlscripts/plan.sh

详细介绍

删除属于已合并 PR 的远程分支。此操作具有破坏性,因此会先以试运行模式运行,未经明确确认绝不删除。

删除规则

仅当以下条件全部满足时,才可删除分支 — 规则由 scripts/plan.sh 编码,它是唯一事实来源:

  • 该分支仍存在于远程仓库,
  • 该分支有已合并的 PR,
  • 该分支没有未关闭的 PR,
  • 该分支未受保护。

受保护 = 默认分支 + staging。即使有已合并的 PR 指向这些分支,也绝不删除。没有 PR,或只有已关闭但未合并的 PR 的分支,不可删除(它从未“属于已合并的 PR”)。只能在 scripts/plan.sh 中的 is_protected() 内扩展受保护分支集合,不要在其他地方修改。

步骤

  1. 试运行。 运行 bash scripts/plan.sh(如果远程名称不是 origin,则将其作为 $1 传入)。它会以 <branch> #<pr> <title> 的格式打印可删除分支,不会删除任何内容。列出分支后即完成。输出为空 → 报告“无需清理”并停止。
  2. 展示并确认。 向用户展示完整列表并征求明确同意。不要根据含糊的答复执行删除 — 只有明确答复“是”才可以删除。每次运行都必须经过此确认环节。
  3. 删除。 对每个已确认的分支运行:git push origin --delete <branch>。不得删除计划列表之外的任何内容。
  4. 报告。 列出已删除的分支;注明任何推送失败的情况。

另外:长期未关闭的问题

Closes #N 只有在 PR 合并到默认分支时才会自动关闭问题 — PR 合并到集成分支(例如 rebuild/v1)时,#N 会一直处于未关闭状态。对于在此处清理的每个已合并 PR,检查其关联的问题:如果相关工作已进入默认分支,但问题仍处于未关闭状态,则手动关闭(gh issue close #N --reason completed --comment "merged via #<pr>")。同样的遗漏也会导致已完成的问题显示为未关闭 — 这里正是发现它们的地方。

评论

支持 Markdown