finishing-a-development-branch

Featured

当实现完成、所有测试通过、需要决定如何集成这份工作时使用

AI & Automation 8,062 stars 752 forks Updated yesterday MIT

Install

View on GitHub

Quality Score: 98/100

Stars 20%
100
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
50
License 10%
100
Description 5%
100

Skill Content

# 收尾一个开发分支 ## 概述 **核心原则:** 验证测试 → 检测环境 → 展示选项 → 执行选择 → 清理。 **开始时宣告:** "我正在使用 finishing-a-development-branch 技能来收尾这份工作。" ## 步骤 1:验证测试 运行项目的完整测试套件(`npm test` / `cargo test` / `pytest` / `go test ./...`)。 **如果测试失败**,报告失败并停下——菜单是在测试全绿之后才出现的: ``` 测试失败(<N> 个)。完成之前必须先修: [展示失败详情] ``` **如果测试通过:** 继续步骤 2。 ## 步骤 2:检测环境 ```bash GIT_DIR=$(cd "$(git rev-parse --git-dir)" 2>/dev/null && pwd -P) GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" 2>/dev/null && pwd -P) # 现在就捕获 —— 此刻还在工作区里面。步骤 5 会切换目录, # 而清理(步骤 6)需要这个值 WORKTREE_PATH=$(git rev-parse --show-toplevel) ``` 这决定了展示哪种菜单、以及清理方式: | 状态 | 菜单 | 清理 | |------|------|------| | `GIT_DIR == GIT_COMMON`(普通仓库) | 标准 3 个选项 | 无 worktree 可清理 | | `GIT_DIR != GIT_COMMON`,命���分支 | 标准 3 个选项 | 按来源判断(见步骤 6) | | `GIT_DIR != GIT_COMMON`��分离 HEAD | 收敛为 2 个选项(不含合并) | 由外部管理——原地别动 | ## 步骤 3:确定基础分支 基础分支就是这份工作从哪儿分出来的那个——通常在计划里、对话里,或者分支的 upstream 里已经写明了。如果还不知道,就问:"这个分支是从 <你的最佳猜测> 分出来的,对吗?"**合并之前先确认:合并到错误的基础分支,代价很高。** ## 步骤 4:展示选项 **普通仓库和命名分支 worktree——精确展示这 3 个选项:** ``` 实现已完成。你想怎么做? 1. 本地合并回 <base-branch> 2. 推送并创建 Pull Request 3. 保留分支不动(我稍后自己处理) 选哪个? ``` **分离 HEAD——精确展示这 2 个选项:** ``` 实现已完成。你当前处于分离 HEAD(由外部管理的工作区)。 1. 作为新分支推送并创建 Pull Request 2. 保持原样(我稍后自己处理) 选哪个? ``` **照原文展示菜单**——简洁,每个选项都来自上面的列表。**丢弃工作只在你的人类伙伴明确提出时才发生**(见下方"如果你的人类伙伴要求丢弃这份工作")。等他们回答;集成与否是他们的决定。 ## 步骤 5:执行选择 ### 选项 1:本地合并 ```bash # 切到主仓库根目录,保证 CWD 安全 MAIN_ROOT=$(git -C "$(git rev-parse --git-common-dir)/.." rev-parse --show-toplevel) cd "$MAIN_ROOT" # 先合并 —— 在删除任何东西之前先验证...

Details

Author
jnMetaCode
Repository
jnMetaCode/superpowers-zh
Created
5 months ago
Last Updated
yesterday
Language
JavaScript
License
MIT

Integrates with

Bundled in these plugins

Similar Skills

Semantically similar based on skill content — not just same category