概述
该技能的核心原则是:验证测试 → 检测环境 → 呈现选项 → 执行选择 → 清理。开始使用时需要声明:“I'm using the finishing-a-development-branch skill to complete this work.”
第一步:验证测试
运行项目的完整测试套件(npm test / cargo test / pytest / go test ./...)。如果测试失败,报告失败并停止——只有在测试通过后才会出现选项菜单。
第二步:检测环境
通过 git rev-parse 获取 GIT_DIR、GIT_COMMON 与 WORKTREE_PATH,判断当前处于哪种状态:
- GIT_DIR == GIT_COMMON:普通仓库,显示标准 3 个选项,无工作树需清理。
- GIT_DIR != GIT_COMMON 且为命名分支:标准 3 个选项,按来源判断清理方式。
- GIT_DIR != GIT_COMMON 且为分离 HEAD:精简为 2 个选项(无合并),工作区由外部管理,保持原样。
第三步:确定基础分支
基础分支是该工作分叉出来的分支,通常写在计划、对话或分支的上游信息中。如果不确定,需要询问确认;合并到错误的基础分支代价很高。
第四步:呈现选项
普通仓库与命名分支工作树提供恰好 3 个选项:1. 本地合并回基础分支;2. 推送并创建 Pull Request;3. 保持分支原样(稍后自行处理)。分离 HEAD 提供恰好 2 个选项:1. 推送为新分支并创建 PR;2. 保持原样。菜单需按原文简洁呈现,等待用户回答,整合决策由用户做出。
第五步:执行选择
选项 1(本地合并):先切换到主仓库根目录,checkout 基础分支、pull、merge 功能分支,然后在合并结果上运行测试;若失败则停止并保留工作树与分支以便排查,成功后清理工作树并 git branch -d 删除分支。 选项 2(推送并创建 PR):git push 推送分支(分离 HEAD 时推送为新的远程分支),再按仓库 PR 模板与约定创建合并请求并报告 URL,保留工作树供后续根据反馈迭代。 选项 3(保持原样):报告保留的分支与工作树路径。 放弃工作仅在用户明确要求时执行,需先确认将永久删除的分支、提交列表与工作树路径,只有输入“discard”才执行,随后清理工作树并 git branch -D 强制删除分支。
第六步:清理工作区
仅选项 1 与确认放弃时执行清理,选项 2、3 始终保留工作树。普通仓库无需清理;若 WORKTREE_PATH 位于 .worktrees/ 或 worktrees/ 下,则使用 git worktree remove 与 git worktree prune;否则工作区归宿主环境所有,保持原样。
常见误区
文档还列出若干需要避免的合理化借口,例如“本次会话早些时候测试通过了”“他们显然想合并”“PR 已建所以工作树是杂物”,强调要在即将整合的树上重新跑测试、由用户决定整合方式、PR 反馈期间保留工作树、只清理自己创建的工作树、合并结果失败即停止、基础分支需确认、推送被拒时先排查而非强制推送。