关于 cleanup-merged-branches
用于清理已合并拉取请求对应的远程分支,并检查仍未关闭的关联问题。先生成试运行计划,必须获得明确确认才会删除。
主要功能
- 01试运行生成分支计划
- 02检查已合并及未关闭 PR
- 03保护默认分支和 staging
- 04删除前要求明确确认
- 05检查仍未关闭的关联问题
适用场景
- 01查看可清理的远程分支
- 02确认计划后删除分支
- 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() 内扩展受保护分支集合,不要在其他地方修改。
步骤
- 试运行。 运行
bash scripts/plan.sh(如果远程名称不是origin,则将其作为$1传入)。它会以<branch> #<pr> <title>的格式打印可删除分支,不会删除任何内容。列出分支后即完成。输出为空 → 报告“无需清理”并停止。 - 展示并确认。 向用户展示完整列表并征求明确同意。不要根据含糊的答复执行删除 — 只有明确答复“是”才可以删除。每次运行都必须经过此确认环节。
- 删除。 对每个已确认的分支运行:
git push origin --delete <branch>。不得删除计划列表之外的任何内容。 - 报告。 列出已删除的分支;注明任何推送失败的情况。
另外:长期未关闭的问题
Closes #N 只有在 PR 合并到默认分支时才会自动关闭问题 — PR 合并到集成分支(例如 rebuild/v1)时,#N 会一直处于未关闭状态。对于在此处清理的每个已合并 PR,检查其关联的问题:如果相关工作已进入默认分支,但问题仍处于未关闭状态,则手动关闭(gh issue close #N --reason completed --comment "merged via #<pr>")。同样的遗漏也会导致已完成的问题显示为未关闭 — 这里正是发现它们的地方。
评论
支持 Markdown