SuperAPI AI 工具集

rebase-current-branch

编程与开发

查看项目

更新于 10-16 12:04

技能介绍

用途

该技能用于把当前检出的功能分支更新到上游默认分支的最新状态,做法是将当前分支的提交重放到默认分支的最新提交之上(rebase)。当用户要求“用 main 或 master 更新分支”“rebase 当前分支”等操作时适用。

主要能力

  • 识别仓库实际的默认分支,不预设一定是 main 或 master
  • 优先使用当前分支已配置的上游远程,否则使用 origin
  • 只拉取所识别远程的默认分支,避免拉取无关引用
  • 执行变基并处理中断,说明冲突文件,等待用户决定如何解决
  • 可选地运行仓库文档中的校验步骤与已配置钩子并报告结果

使用方式

工作流程如下:

  1. 变更前先检查。运行 git status --porcelain=v1 --branch --untracked-files=all 和 git branch --show-current,确认当前分支不是默认分支并记录本地改动。若工作区有改动,停止并询问用户是提交、暂存(stash)还是其他处理方式,不会自动 stash。

  2. 识别上游与默认分支。通过 git remote -v 和 git remote show <remote>(或远程的 symbolic HEAD)判断仓库的默认分支。存在当前分支的上游配置时优先使用,否则使用 origin。无法明确识别默认分支时会询问用户。

  3. 拉取最新默认分支。只拉取所识别的远程与默认分支,例如:

git fetch <remote> <default-branch>

继续前先确认拉取到的远程跟踪引用存在。

  1. 变基当前分支。先告知用户哪个分支将变基到哪个远程跟踪分支,然后运行:
git rebase <remote>/<default-branch>
  1. 处理冲突且不丢弃工作。若变基暂停,说明冲突文件并告知变基处于暂停状态。只有在预期改动明确时才解决,否则询问用户。解决后暂存文件并运行 git rebase --continue;若要放弃则运行 git rebase --abort。不会使用 git reset --hard、丢弃用户改动或跳过提交来强行完成。

  2. 提供校验钩子。变基成功后,查看仓库文档中的校验步骤与已配置钩子(如 pre-commit 钩子、lint 与测试脚本),询问用户是否在继续前运行这些检查。若同意则运行适用的检查并报告结果,不会绕过或禁用钩子。

  3. 验证结果。变基完成后运行 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 提交等操作需用户另行要求

其他信息

该技能的收费、价格与支持平台暂未提供。