用途
该技能用于把当前检出的功能分支更新到上游默认分支的最新状态,做法是将当前分支的提交重放到默认分支的最新提交之上(rebase)。当用户要求“用 main 或 master 更新分支”“rebase 当前分支”等操作时适用。
主要能力
- 识别仓库实际的默认分支,不预设一定是 main 或 master
- 优先使用当前分支已配置的上游远程,否则使用 origin
- 只拉取所识别远程的默认分支,避免拉取无关引用
- 执行变基并处理中断,说明冲突文件,等待用户决定如何解决
- 可选地运行仓库文档中的校验步骤与已配置钩子并报告结果
使用方式
工作流程如下:
-
变更前先检查。运行
git status --porcelain=v1 --branch --untracked-files=all和git branch --show-current,确认当前分支不是默认分支并记录本地改动。若工作区有改动,停止并询问用户是提交、暂存(stash)还是其他处理方式,不会自动 stash。 -
识别上游与默认分支。通过
git remote -v和git remote show <remote>(或远程的 symbolic HEAD)判断仓库的默认分支。存在当前分支的上游配置时优先使用,否则使用 origin。无法明确识别默认分支时会询问用户。 -
拉取最新默认分支。只拉取所识别的远程与默认分支,例如:
git fetch <remote> <default-branch>
继续前先确认拉取到的远程跟踪引用存在。
- 变基当前分支。先告知用户哪个分支将变基到哪个远程跟踪分支,然后运行:
git rebase <remote>/<default-branch>
-
处理冲突且不丢弃工作。若变基暂停,说明冲突文件并告知变基处于暂停状态。只有在预期改动明确时才解决,否则询问用户。解决后暂存文件并运行
git rebase --continue;若要放弃则运行git rebase --abort。不会使用git reset --hard、丢弃用户改动或跳过提交来强行完成。 -
提供校验钩子。变基成功后,查看仓库文档中的校验步骤与已配置钩子(如 pre-commit 钩子、lint 与测试脚本),询问用户是否在继续前运行这些检查。若同意则运行适用的检查并报告结果,不会绕过或禁用钩子。
-
验证结果。变基完成后运行
git status --porcelain=v1 --branch --untracked-files=all,并总结结果,包括使用的基准分支、已运行的校验结果以及任何剩余的改动。除非用户另外要求,不会推送、强推或修改提交。
快速路径(工作区干净且默认分支已知时):
git fetch <remote> <default-branch>
git rebase <remote>/<default-branch>
将 <default-branch> 替换为识别到的分支名(main、master 或其他配置的默认分支),不要把占位符命令原样运行。
适用场景
- 功能分支落后于上游默认分支,需要同步最新进展
- 在提交合并请求或拉取请求前更新分支基线
- 需要保留线性提交历史而非合并提交的场景
限制与安全规则
- 保留用户当前分支与未提交的工作
- 不对默认分支本身执行变基
- 不假设本地 main 或 master 是最新的,须基于拉取到的远程跟踪分支变基
- 该工作流不包含推送或强推
- 若已有变基正在进行,先检查其状态并询问是继续还是中止,不会另起一次变基
- 冲突处理只在改动意图明确时自动进行,否则交由用户决定
- 推送、强推、amend 提交等操作需用户另行要求
其他信息
该技能的收费、价格与支持平台暂未提供。