mcpField
C
clean-branches

clean-branches

github.com/tartinerlabs开发858 次安装1 天前更新
代码仓库

关于 clean-branches

clean-branches 是用于安全清理已合并本地 Git 分支的 Skill。它核实合并证据、保护正在使用的分支,并保留状态不明确或尚未完成的工作。

主要功能

  1. 01同步远程状态并检查 worktree
  2. 02依据 Git 证据识别已合并分支
  3. 03检查已合并的 GitHub 与 GitLab 请求
  4. 04删除前确认候选分支
  5. 05报告已删除和保留的分支

适用场景

  1. 01清理已合并拉取请求对应的分支
  2. 02凭已核实证据移除 squash 合并分支
  3. 03检查本地分支并避免误删未完成工作

安装

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

$npx skills add https://github.com/tartinerlabs/skills --skill clean-branches

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

详细介绍

删除工作已经合并的本地分支,其他内容一律不动。

工作流

  1. 同步远程状态:git fetch --prune。记录当前分支以及在工作树中检出的任何分支(git worktree list)——绝不删除这些分支
  2. 原生处理(git 2.56+):使用 git branch --dry-run --delete-merged <remote> 预览,然后去掉 --dry-run 再运行。它会删除其分支顶端可从仍然存在的上游分支到达的分支,并遵循 branch.<name>.deleteMerged=false 的排除设置。对于较旧版本的 git,跳至第 3 步
  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 合并,因为这些提交无法从默认分支到达
  4. 展示合并后的列表及每个分支的证据(例如 #93 merged、merged into main),并在删除前确认。使用 git branch -d 删除;经过 squash 合并的分支需要使用 -D,只有第 3 步已证明其 PR 合并时才可以安全使用
  5. 报告已删除和保留的分支,并说明每个保留分支的原因——PR 已关闭但未合并、没有 PR、上游领先、已检出

保留,不要猜测

PR 已关闭但未合并或完全没有 PR 的分支可能包含尚未完成的工作。将其列为保留,并让用户决定;绝不能仅凭分支年龄或名称删除。远程分支不在处理范围内——此技能只操作本地引用。

评论

支持 Markdown