用途:该技能用于在开发分支的实现工作完成、测试全部通过后,协助决定如何把这份工作整合回代码库。核心流程是:验证测试 → 检测环境 → 展示选项 → 执行选择 → 清理工作区。
主要能力与执行步骤:
-
验证测试:运行项目完整测试套件(如 npm test、cargo test、pytest、go test ./...)。若测试失败,报告失败信息并停止,必须先修复才能继续;测试通过则进入下一步。
-
检测环境:通过 git rev-parse --git-dir、--git-common-dir 和 --show-toplevel 判断所处状态。普通仓库(GIT_DIR 等于 GIT_COMMON)走标准 3 个选项,无工作树需清理;命名分支工作树同样走标准 3 个选项,但清理方式依据来源判断;分离 HEAD 则只提供 2 个选项(不含合并),且视为外部管理,保持原样。
-
确定基分支:基分支是这份工作分叉出来的分支,通常写在计划、对话或分支上游中;若不明确需向用户确认,避免合错基分支。
-
展示选项:普通仓库与命名分支工作树提供三个选项:本地合并回基分支、推送并创建 Pull Request、原样保留(稍后自行处理)。分离 HEAD 提供两个选项:推送为新分支并创建 Pull Request、原样保留。菜单按原文给出,等待用户回答;整合决定权归用户。
-
执行选择:
- 选项 1 本地合并:先切到主仓库根目录,git checkout 基分支、git pull、git merge 特性分支,再运行测试。若合并结果测试失败,停止并保留工作树与分支以待调查;合并结果为绿后再清理工作树并 git branch -d 删除分支。
- 选项 2 推送并创建 PR:git push -u origin 特性分支;若为分离 HEAD 则用 git push origin HEAD:refs/heads/<new-branch>。随后按仓库约定创建 PR、遵循模板,并报告 URL。此时保留工作树,便于根据 PR 反馈迭代。
- 选项 3 原样保留:报告保留分支及工作树位置。
- 丢弃工作:仅在用户明确要求时执行,且需先确认,要求输入 discard 确认;确认后切到主仓库根目录,清理工作树并 git branch -D 强制删除分支。
-
清理工作区:选项 1 和已确认的丢弃会触发清理,选项 2、3 始终保留工作树。清理须在主仓库根目录(工作树之外)执行,并使用第 2 步捕获的 GIT_DIR、GIT_COMMON、WORKTREE_PATH 值。若为普通仓库则无工作树;若 WORKTREE_PATH 位于 .worktrees/ 或 worktrees/ 下,则执行 git worktree remove 与 git worktree prune;否则视为宿主环境所有,保留原位。
适用场景:开发分支实现完成、测试通过后,需要决定如何合并、创建 PR 或保留工作成果时。限制:依赖 Git 与项目测试命令;仅清理自身创建于 .worktrees/ 或 worktrees/ 下的工作树;丢弃操作需要明确确认;合并结果测试失败时必须停止且不推送。该技能为 MIT 许可的 Superpowers 6.2.0 内容。