用途:清理指定仓库中已完成的本地和远程分支。请求默认授权同时处理本地与远程范围,用户可缩小范围;仅要求检查时只做检查。需要 Git 和仓库访问权限,GitHub 证据需已认证的 gh。
主要能力:先确定仓库、fetch/push 目标、默认分支与长期集成分支,区分项目仓库与上游、复刻,避免默认假设 origin 或 main。检查本地分支、上游、工作树和工作区状态,只对分支引用做 fetch 和 prune,不影响标签。对 GitHub 用 gh 获取完整 PR 历史、开放 PR 的头与基分支、分支保护与规则集证据,并处理分页;其他托管平台用等价 API。
判定已完成:保留当前分支、任何工作树中检出的分支、默认与受保护分支、dev 或 release 等长期分支、有意备份以及作为开放 PR 头或基的分支。分支满足保留检查且其确切 tip 是刚验证过的持久集成分支 tip 的祖先,或已合并 PR 且其合并提交可从持久集成 tip 到达、当前分支无额外提交时,才可删除。仅凭时间、缺少上游、已关闭未合并 PR、名称相同或 git branch -d 成功都不算完成。证据不可得时保留并说明。
删除与验证:删除前记录 ref、仓库/远程、完整 tip OID 和集成证据;变更前重新检查 tip、工作树占用和相关 PR/保护状态。本地用 git update-ref -d "refs/heads/$branch" "$oid" 删除确切 tip,该命令不检查工作树占用。远程使用 git push --force-with-lease="refs/heads/$branch:$oid" "$remote" ":refs/heads/$branch"。租约被拒说明证据已变,应刷新重判,不可绕过保护。删除后验证本地与远程 ref 确实不存在,仅修剪过时的分支跟踪 ref,确认当前分支和工作文件未变。
限制:不切换分支、不移除工作树、不 stash/reset/丢弃工作文件;文件脏不必然阻止无关已完成分支删除。一次孤立失败后继续其他独立删除,不因本地跟踪 ref 消失就声称远程分支已删除;只有观察到的后续检查才能声明已确认不存在。其他细节资料未提供。