)
PageAgent 仓库 Git 清理实战批量删除 PR 审查残留的本地分支与远端git-cleanup Skill 全解析【免费下载链接】page-agentJavaScript in-page GUI agent. Control web interfaces with natural language.项目地址: https://gitcode.com/GitHub_Trending/pa/page-agent本指南围绕 .agents/skills/git-cleanup/SKILL.md 展开讲解在 PageAgent 这类以 PR 协作驱动的 monorepo 仓库中如何安全地清理因反复评审 PR 而累积的本地跟踪分支与非 origin 远端。读完你将掌握一套先盘点、再安检、后删除、终确认的可落地流程以及如何在代码评审现场用一条条精确命令保护main分支与当前工作分支不被误删。一、为什么要做 Git CleanupPR 审查模式下的仓库代谢废物PageAgent 是一个基于 npm workspaces 的 source-first monorepo协作入口是 GitHub PR见 CONTRIBUTING.md 与 .github/PULL_REQUEST_TEMPLATE.md。日常开发中你可能会从贡献者 fork 拉取远程分支进行评审仓库里于是堆满contributor-fork之类的非 origin 远端通过 .agents/skills/submit-pr-from-current-changes/SKILL.md 这类流程反复建分支、提交、push 后合并本地残留大量已合并的跟踪分支在多个功能分支仓库约定为fix/、feat/、docs/、refactor/、chore/前缀的 kebab-case 命名之间切换git branch -v越看越长。这类残留分支和远端不会影响运行但会让git branch、git remote的检索结果严重污染分支列表冗长、远端列表夹杂贡献者仓库、git push的目标容易选错。git-cleanup Skill 的目标非常明确——删除除main与当前分支以外的本地分支并移除除origin以外的所有远端。二、整体工作流盘点 → 安检 → 删除 → 确认Skill 定义了一个四步闭环流程每一步都对应可执行的 git 命令核心思想是先看清全局再动手最后复核。1. Survey并行盘点现状在删除任何东西之前先并行执行四条只读命令摸清家底git branch # 列出本地分支带 * 的是当前分支 git remote # 列出已配置的远端 git status --short # 工作区是否有未提交变更 git stash list # 是否有暂存堆栈这四条命令可以同时运行互不依赖输出合并后即可回答三个问题要删多少分支、要删哪些远端、工作区是否干净。然后向用户汇报将移除 N 个分支、M 个远端的清理摘要。实践建议可以叠加git branch -v显示每个分支最近一次提交的简短哈希与提交说明和git remote -v显示 URL帮助你和用户判断哪些分支是早已合并的 PR 残留、哪些远端是贡献者的 fork。2. Safety Checks动手前的强制安检这是整个流程最关键的一步。只要以下任一条件成立就必须停下来向用户确认禁止直接删除检查项危险信号原因当前分支当前分支不是main在当前工作分支上执行批量删除可能误伤正在使用的分支工作区状态git status --short有未提交变更或git stash list非空未提交/暂存的修改可能与待删分支相关删分支后难以找回分支领先程度任一分支领先于其上游git branch -vv可查看本地存在未被 push 的提交删除将永久丢失对于未合并的分支git branch --no-merged可以单独列出必须单独展示给用户由用户决定去留——绝不默认删除。这一安检思路与仓库的 PR 提交纪律一脉相承查看 .github/workflows/ci.yml 可以看到 CI 只在 PR 合并到main时运行而 .github/PULL_REQUEST_TEMPLATE.md 要求每个 PR 声明已亲自编写或充分审查了每一处变更。同理删除分支前亲自确认也是不可省略的人工环节。3. Delete Branches先安全删除强删必须审批安全检查通过后先执行安全删除-d它会在分支未完全合并时自动失败相当于第二道保险# 安全删除排除当前分支*与 main仅对已合并分支生效 git branch | grep -v ^\* | grep -v ^\s*main$ | xargs git branch -d 21命令拆解git branch输出的第一列中当前分支以*开头grep -v ^\*将其排除grep -v ^\s*main$排除main分支注意允许前导空白xargs git branch -d对剩余分支逐个执行安全删除21把失败信息合并到标准输出便于统一查看哪些分支因未合并而拒绝删除。如果确实存在需要强删的未合并分支只有在用户明确批准后才能使用-D并且一次只针对一个分支git branch -D branch-d与-D的区别是 Git 内建的保护机制-d会校验分支是否已并入其上游或 HEAD未合并时拒绝操作并报错-D跳过校验直接删除。因此-D是明示危险操作必须与人工确认绑定。4. Remove Remotes清理非 origin 远端PageAgent 的评审场景下远端通常来自贡献者的 fork。移除所有非origin远端git remote | grep -v ^origin$ | xargs -I{} git remote remove {}要点grep -v ^origin$精确匹配整行origin防止误伤如origin-backup之类包含 origin 的远端名xargs -I{}用占位符{}把远端名传给git remote remove只会删除本地对远端的引用与跟踪配置不会影响远端仓库本身的数据。5. Confirm删除后复核并汇报清理结束后再次运行只读命令核对结果git branch echo --- git remote输出应只剩下main以及当前工作分支和一个origin远端。最后向用户汇报本次清理删除了哪些分支与远端。三、三条硬性规则Key RulesSkill 明确列出三条不可逾越的底线本质是删除权限的最小化原则绝不删除main或当前检出的分支——main是全仓库的协作基线当前分支是你正在工作的现场绝不未经用户确认就强删未合并分支——-D意味着丢弃尚未并入主线的提交拿不准就问——信息不足时宁可多问一句也不要多删一个分支。这些规则与 PageAgent 仓库的工程文化一致AGENTS.md 中明确要求 Every change you make should not only implement the desired functionality but also improve the quality of the codebase以及 Do not try to hide errors or risks——对风险保持透明、把不可逆操作的决定权交给人而不是让脚本替人做决定。四、实战组合一次完整的 PR 评审后清理演示假设你刚评审完 3 个 PR当前在main分支工作区干净。完整流程如下# 1. 盘点并行 git branch git remote git status --short git stash list # 2. 确认安全当前在 main、工作区干净、无 stash进入下一步 # 3. 安全删除所有已合并的本地分支 git branch | grep -v ^\* | grep -v ^\s*main$ | xargs git branch -d 21 # 4. 查看是否还有未合并分支单独列出交由用户决定 git branch --no-merged # 5. 用户批准后强删指定分支 git branch -D feat/legacy-prototype # 6. 移除贡献者远端 git remote | grep -v ^origin$ | xargs -I{} git remote remove {} # 7. 复核 git branch echo --- git remote五、常见陷阱与排查xargs git branch -d报 not fully merged这是正常保护行为说明有未合并分支。用git branch --no-merged列出它们与用户逐条确认。误把带origin前缀的远端删掉grep -v ^origin$只匹配整行若你的远端叫origin2它不会被排除需要自行判断。建议先用git remote -v确认远端名再执行。当前分支不是main时不要跳过安检直接执行。先完成手头工作、切回main再清理或者至少让用户确认可以清理且保留当前分支。删完才发现远端 URL 丢失git remote remove只移除本地配置。如需恢复可用git remote add origin url重新添加这也说明删除远端本身风险较低但跟踪分支的清理仍然重要。六、适用前提与限制本流程以 PageAgent 仓库的协作模型为背景适用前提包括主干分支固定为mainCI 触发条件见 .github/workflows/ci.yml 的branches: [main]常规清理目标只涉及已合并的 PR 分支与贡献者 fork 远端不涉及需要归档的发布分支或标签删除是不可逆的尤其-D因此先问、后删、再确认是流程的内在组成部分任何自动化执行都应保留这一人工审批关口。对于 PageAgent 这类维护频率高、PR 进出频繁的仓库把 git-cleanup 流程固化为日常习惯或 AI 协作 Skill能让git branch/git remote始终保持在一眼可读的状态为后续基于仓库的提交、评审与发布如 docs/developer-guide.md 描述的开发工作流提供干净的环境。【免费下载链接】page-agentJavaScript in-page GUI agent. Control web interfaces with natural language.项目地址: https://gitcode.com/GitHub_Trending/pa/page-agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考