Update Base Branch 用于把当前 Git 工作树移动到它预期的基础分支或集成分支,并在不丢弃工作、不跨歧义分支/远程/工作树猜测的前提下更新该分支。
用途 该技能解决的是“把当前工作树切回基础分支并更新到上游”这一操作。它明确不用于把基础分支合并或变基(merge/rebase)到功能分支。
主要能力与安全约束
- 保护当前工作树:检查分支、状态和工作树。如果工作树是脏的,只对目标和上游做只读评估,然后报告歧义,并请求用户决定是提交还是 stash 本地工作。只有在确认工作树干净后才执行 fetch 或切换;绝不自动 stash。
- 解析目标分支:检查本地和远程分支以及上游配置。优先使用用户指定的分支;否则在仓库证据明确无歧义时,选择当前工作树既定的基础分支或集成分支。可用的 dev 分支被视为通常的默认候选,但这并不等于可以忽略冲突证据。当目标仍不明确时,向用户询问使用哪个分支,并列出可能的候选及其上游。
- 保持操作在当前工作树内:如果所需分支已在另一个工作树中检出,则要求用户提供另一个针对该工作树的基础分支,或告知用户在拥有该分支的工作树中运行操作。不会隐式更新另一个工作树。
- 解析上游:解析所选本地分支已配置的上游,不假设远程名为 origin。如果该分支没有上游,或同名分支存在于多个远程且没有明确选择,则询问哪个远程分支应作为权威。绝不通过 reset、强制切换、删除或重写提交来达到远程顶端。
- 更新分支:只有在目标分支和权威远程都解析完成后才 fetch。切换前,验证所选本地分支是已获取上游的祖先。如果它包含上游没有的提交(无论 ahead 还是 diverged),则停止并报告双方状态,而不是自行选择协调策略。将当前工作树切换到所选本地分支;如果用户选择的是仅远程分支,则创建其本地跟踪分支,且不覆盖已有 ref。将本地分支快进到已获取的上游,要求仅快进更新。
- 验证:确认当前工作树位于所选分支;其上游是已解析的远程分支;本地 HEAD 等于已获取的上游顶端;工作树保持干净。报告分支、上游和结果提交。如果任何断言失败,报告确切状态,不声称完成。
使用方式 该技能以脚本形式提供,具体安装命令、调用参数与运行示例在所提供的资料中暂未提供。
适用场景 适用于需要把当前工作树切回基础/集成分支并安全快进到上游的 Git 工作流,尤其适合存在多个工作树、多个远程或分支关系不明确、需要避免误操作和自动 stash 的场景。
限制 不用于合并或变基基础分支到功能分支;不自动 stash;不执行 reset、强制切换、删除或重写提交;在目标分支或上游不明确时必须询问用户;仅支持快进更新。