用途:把 seed-change-plan 确定的 targetBranch、targetRef、prBase 作为唯一契约,将当前 feature 分支安全地 rebase 到 origin/dev、origin/minor 或 origin/major 之一,并完成提交、push 与 GitHub PR 创建或更新。基准分支只读,仅改动当前 feature 分支。
主要能力与流程:
- 提交前固定状态:记录当前分支、工作树、feature HEAD 与 upstream;若当前分支是 dev、minor、major 则中止;拉取三个基准分支;结合 upstream、reflog、fork point 与提交图确定原基准分支及分叉 SHA,不因 merge base 最近或 SHA 相同而合并分支名;用 --base-ref 重跑 seed-change-plan,并沿用最初确定的 --lane 与 --bump 或 --no-release,任一为 unknown 或互相不一致则不 rebase。
- 提交与 rebase:不使用自动 stash 或 --autostash;展示待纳入/排除文件与提交信息,经用户确认后仅 stage 已批准文件,提交信息用英文 Conventional Commits。rebase 前展示 oldBase..HEAD 提交列表,确认 target ref 的 SHA 未移动;feature 含 merge commit 时中止。使用 git rebase --onto <targetRef> <oldBase>,不用简单 git rebase <targetRef>;不切换或修改本地 dev、minor、major。冲突仅在当前工作范围内可确证时解决,否则 git rebase --abort 恢复。
- 重新验证:确认 targetRef 是新 HEAD 的 ancestor,对照迁移前后提交;以 --base-ref 换成 targetRef 重跑 change-plan,保持原选项,按计划执行生成、聚焦测试、build 与手动验证,失败或新 unknown 不得报成功。
- push:push 前需用户确认;无远程分支用普通 push;有远程分支且 SHA 变化时,读取远程 SHA 后使用 git push --force-with-lease=refs/heads/<feature>:<expected-remote-sha> origin HEAD:refs/heads/<feature>,不使用 --force 或无预期 SHA 的 lease。
- PR base:创建或改 base 前需用户确认;新 PR 用 gh pr create --base <prBase> --head <feature>;已有 PR base 不同时先完成 rebase 与验证,再用 gh pr edit --base <prBase> 修改;PR 标题用英文 Conventional Commits。完成后复查 baseRefName、headRefName 与 head SHA,并报告前后 feature SHA、基准分支名与 SHA、验证结果及实际 PR base。
适用场景:SEED 仓库中需要将 feature 分支对齐到指定发布 lane 并提交 PR 的流程。限制:基准分支只读;不自动 stash;不处理 merge commit;冲突证据不足即中止;push 与 PR 变更均需用户确认。