关于 clean-branches
clean-branches 是用于安全清理已合并本地 Git 分支的 Skill。它核实合并证据、保护正在使用的分支,并保留状态不明确或尚未完成的工作。
主要功能
- 01同步远程状态并检查 worktree
- 02依据 Git 证据识别已合并分支
- 03检查已合并的 GitHub 与 GitLab 请求
- 04删除前确认候选分支
- 05报告已删除和保留的分支
适用场景
- 01清理已合并拉取请求对应的分支
- 02凭已核实证据移除 squash 合并分支
- 03检查本地分支并避免误删未完成工作
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ tartinerlabs/ skills --skill clean-branches安装后在 Claude Code 中输入/clean-branches确认已加载。
详细介绍
删除工作已经合并的本地分支,其他内容一律不动。
工作流
- 同步远程状态:
git fetch --prune。记录当前分支以及在工作树中检出的任何分支(git worktree list)——绝不删除这些分支 - 原生处理(git 2.56+):使用
git branch --dry-run --delete-merged <remote>预览,然后去掉--dry-run再运行。它会删除其分支顶端可从仍然存在的上游分支到达的分支,并遵循branch.<name>.deleteMerged=false的排除设置。对于较旧版本的 git,跳至第 3 步 - 补充检查:
--delete-merged会有意跳过上游分支已不存在的分支和没有上游的分支——托管平台删除头部分支后,大多数已合并 PR 分支都会落在这两类中。从git branch -vv构建候选列表(上游标记为: gone]的分支和没有上游的分支),然后仅在以下任一条件确认其已合并时保留该候选:git branch --merged <default-branch>列出该分支(快进或合并提交)- 其 PR/MR 已合并——GitHub:
gh pr list --state merged --head <branch>;GitLab:glab mr list --merged --source-branch <branch>。这可以涵盖 squash 合并和 rebase 合并,因为这些提交无法从默认分支到达
- 展示合并后的列表及每个分支的证据(例如
#93 merged、merged into main),并在删除前确认。使用git branch -d删除;经过 squash 合并的分支需要使用-D,只有第 3 步已证明其 PR 合并时才可以安全使用 - 报告已删除和保留的分支,并说明每个保留分支的原因——PR 已关闭但未合并、没有 PR、上游领先、已检出
保留,不要猜测
PR 已关闭但未合并或完全没有 PR 的分支可能包含尚未完成的工作。将其列为保留,并让用户决定;绝不能仅凭分支年龄或名称删除。远程分支不在处理范围内——此技能只操作本地引用。
评论
支持 Markdown