🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

分支清理器 ramwin/dsh-branch-cleaner

DeepSeek Harness
ramwin11 天前有提交已提供中文文档扫描:未发现敏感能力

找出已合并或已废弃的 git 分支并安全删除

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/21 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add ramwin/dsh-branch-cleaner
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · dev
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 11 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
展开完整介绍(162 字)↓

冗余分支清理插件 (Branch cleaner for DeepSeek Harness): 找出已合并/已 squash 合并/已 rebase 落地/上游已删/PR 已合并的 git 分支, 默认只报告, 删除前自动备份. Detect and delete stale merged branches in DSH.

README

由 DeepSeek 最新模型翻译生成
dsh-branch-cleaner 清理 已经落地到主线 的 git 分支:默认只报告,删前自动备份。 一个 DeepSeek Harness 插件,找出那些工作成果已经落地到主线的分支——merge、squash merge、补丁等价(rebase/cherry-pick)、上游已删除、PR 已合并——然后安全地删掉它们。 为什么需要它 git branch --merged 只认祖先合并。用 squash merge 或者 rebase 落地的分支,它永远认不出来,于是本地几十个、远程上百个分支越积越多。这个插件把几种「其实已经落地」的情况都判出来: | 落地方式 | --merged 认得出吗 | 插件用的判定 | | merge / fast-forward | 认 | git merge-base --is-ancestor | | squash merge | 不认 | git merge-tree --write-tree:把分支合回主线,主线内容一点不变 → 已落地 | | rebase / cherry-pick | 不认 | git cherry:没有 + 开头的行 → 补丁全在主线 | | PR 已合并 | 看落地方式 | gh pr list --head <branch> --state merged(可选) |
展开完整文档(README 剩余 1 节)
dsh-branch-cleaner

清理 已经落地到主线 的 git 分支:默认只报告,删前自动备份。
一个 DeepSeek Harness 插件,找出那些工作成果已经落地到主线的分支——merge、squash merge、补丁等价(rebase/cherry-pick)、上游已删除、PR 已合并——然后安全地删掉它们。

为什么需要它

git branch --merged 只认祖先合并。用 squash merge 或者 rebase 落地的分支,它永远认不出来,于是本地几十个、远程上百个分支越积越多。这个插件把几种「其实已经落地」的情况都判出来:

| 落地方式 | --merged 认得出吗 | 插件用的判定 |
| merge / fast-forward | 认 | git merge-base --is-ancestor |
| squash merge | 不认 | git merge-tree --write-tree:把分支合回主线,主线内容一点不变 → 已落地 |
| rebase / cherry-pick | 不认 | git cherry:没有 + 开头的行 → 补丁全在主线 |
| PR 已合并 | 看落地方式 | gh pr list --head <branch> --state merged(可选) |
| 上游分支已删 | 不认 | %(upstream:track) 里的 [gone] |

安装

npm
dsh plugin --profile web add dsh-branch-cleaner

或从 GitHub 装(跟随 main,永远最新)
dsh plugin --profile web add github:ramwin/dsh-branch-cleaner

本地开发
dsh plugin --profile web add /path/to/dsh-branch-cleaner

装完重开 dsh web(或刷新页面),模型就多了 git_clean_branches 工具。

用法

直接在对话里说:

看看这个仓有哪些分支已经合过了,能删的列出来

把已经合并的分支删掉,保留 develop 和 release/*

模型会先 mode=report 列一遍,你确认后才用 mode=delete。也可以明确要求一步到位。

工具参数

| 参数 | 类型 | 说明 |
| mode | report / delete | 默认 report,只列出不删除;只有 delete 才真删 |
| repo | string | 仓库路径,默认当前会话工作目录,相对路径按它解析 |
| base | string | 对比基线,默认 origin/HEAD → main/master → 当前分支 |
| squash | boolean | 识别 squash 合并 |
| patches | boolean | 识别 rebase / cherry-pick 落地 |
| gone | boolean | 识别上游已删除的分支 |
| pr | boolean | 用 gh 识别已合并的 PR |
| all | boolean | = squash + patches + gone + prune(不含 remote) |
| remote | boolean | 连 origin 上的已合并远程分支一起清(要单独加,all 不含它) |
| prune | boolean | 先 git fetch --prune 刷新 [gone] |
| age | integer | 只处理 tip 提交早于 N 天的分支 |
| keep | string[] | 额外保护的 glob,如 wip/(默认已保护 main/master/develop/release/ 等) |
| recurseSubmodules | boolean | 对每个已初始化子模块各跑一遍(只做本地清理,不带 prune/remote) |
| timeoutMs | integer | 协作式超时,默认 180000 |

安全性

- 默认只报告:mode=report 一个分支都不动,连 git checkout 都不执行。
- 绝不 rebase、绝不切分支、绝不碰工作区:只跑只读的判定命令 + git branch -d/-D。
- 永不动的分支:基线本身、当前检出的、任何 worktree 里检出的、命中保留规则(main master develop trunk release/* hotfix/* gh-pages backup/* dependabot/)的。
- 删前备份:每个被删分支的 SHA 记到 refs/backup/branch-cleaner/<时间戳>/<分支名>,恢复:

git for-each-ref refs/backup/branch-cleaner/ # 看备份
git branch feat/x $(git rev-parse refs/backup/branch-cleaner/20260101-120000/feat/x)

- squash 判定不会误杀:它问的是「把这个分支合回去,主线会不会变」——会变就不删。

输出

branches / remoteBranches 里每行都带 repo 字段(. 表示顶层仓库,其余是相对路径), deleted / failed 是整棵子模块树的合计。递归时只列可删分支,未合并的会折成一句「其余 N 个已略过」。

和脚本的关系

插件的 assets/delete_redundant_branch.sh 是 linux-reference 里同一份脚本的副本(唯一事实来源在那边,判定逻辑、回归测试都在那儿)。插件只负责:把参数翻译成 argv → 在会话工作目录跑脚本 → 解析 JSON → 渲染给模型。

同步:

scripts/sync-from-linux-reference.sh

开发

node --test test/ # 10 个用例:参数翻译 / JSON 解析 / 真实仓库 report 与 delete
node scripts/mount-check.mjs # 挂进真 ToolRuntime, 跑一次 report + delete

mount-check 依赖上层目录里已安装的 @deepseek-ai/(也就是本机装了 dsh 才行)。

License

MIT © Xiang Wang
预览分享卡片长什么样 ↓ramwin/dsh-branch-cleaner
分享 · DeepSeek Harness Hub
ramwin/dsh-branch-cleaner

找出已合并或已废弃的 git 分支并安全删除

回到顶部