用途
该技能用于将一个分支或引用上的指定 Git 提交安全地应用到另一个分支,常见场景包括:挑选某项修复、将工单变更回迁到其他分支、把选定的少量提交移动到目标分支。它只应用被请求的提交,不合并无关改动,且不绑定特定仓库或托管服务商。
主要能力
- 推断用户意图:区分显式指定提交、从源到目标的工单提交、回迁/修复目标,以及“把源分支合并进目标”的情形(后者不走 cherry-pick,转交给常规 MR/PR 流程)。
- 检查上下文:通过 git status、git log、git branch 等命令了解当前状态与分支情况,并在比较前先获取命名引用。
- 展示执行计划:在修改前给出模式、源引用、目标分支、提交及数量、涉及文件、新工作分支和授权状态。
- 选择提交并创建工作分支:比较源与目标,筛选与工单/问题引用相关的提交并核实其文件与父提交,仅在必要时纳入前置提交;工作分支从目标分支创建,而非源分支。
- 执行 cherry-pick:按从旧到新的顺序使用
git cherry-pick -x应用提交;遇到合并提交时先检查其父提交,不猜测主线,优先使用原始非合并提交。 - 冲突处理:冲突时停止并报告冲突文件,检查双方与目标上下文,仅在预期行为明确时解决,运行聚焦检查后用
git cherry-pick --continue继续或git cherry-pick --abort中止。空 cherry-pick 时先核实变更是否已存在于目标分支。 - 验证与发布:推送前确认变更范围,检查差异、空白错误和提交列表,运行仓库要求的检查与最相关的测试;若发现密钥、环境文件、无关改动、意外依赖变化或与计划不符的文件/提交集合则停止。发布时推送工作分支,并使用仓库托管平台专用技能创建 MR/PR,明确源分支与目标分支,避免重复创建。
使用方式
用户提出 cherry-pick 请求后,技能先推断意图并展示一份推断出的计划,仅在歧义会影响结果时提问,不要求用户填写表单。确认后依次执行:比较源与目标、筛选提交、从目标分支创建工作分支、按顺序 cherry-pick、处理冲突、验证范围、推送并创建或更新 MR/PR。创建后重新读取 MR/PR,核对源与目标、状态、显示的 SHA、文件数量和检查结果是否与已验证范围一致。
安全边界
- 不假设分支名、工单前缀、站点、环境或托管服务商。
- 保留无关的本地改动,必要时使用临时工作树。
- 不修改环境文件、密钥、证书、私钥或生成的本地备份。
- 不强制推送、不改写已发布历史,未经明确许可不直接合并到受保护分支。
- 该技能默认只准备并发布一个聚焦分支,不执行完整分支合并或最终合并。
- 不自动关闭或删除其他请求,除非用户授权替代。
适用场景与限制
适用于需要精确挑选少量提交、回迁工单修复、在分支间移动选定改动的日常工作。限制包括:不负责完整合并;推送成功不等于 CI 通过或合并完成;若托管服务显示过期状态,需重新获取或轮询一次后再报告成功;对于合并提交不猜测主线。