SuperAPI AI 工具集

smart-rebase

编程与开发

查看项目

更新于 10-16 04:36

技能介绍

Smart Rebase 是一个面向 squash-merge 仓库的智能部分变基技能,用于解决特性分支基于已被 squash 合并的分支时,如何只保留独有提交的问题。

【用途】 在 squash-merge 仓库中,当特性分支基于另一个已被 squash 合并进目标分支的分支时,历史会出现重复:被 squash 的提交已进入目标分支,但特性分支上仍保留着这些原始提交。Smart Rebase 分析分支历史,识别已被 squash 合并的提交,生成精确的 git rebase --onto 命令,只保留当前分支独有的提交。

【主要能力】

  • 分析分支历史,检测哪些提交应保留、哪些应丢弃。
  • 自动检测模式使用 git cherry 查找已被 cherry-pick 到目标的提交;squash 合并无法由 git cherry 检测,需进入下一步推断。
  • 支持用户提供 base 分支或提交作为切点,也支持通过比对目标分支 squash 合并提交信息与当前分支提交信息来推断切点。
  • 输出变基计划(当前分支、目标、切点、保留提交数、丢弃提交数及具体提交列表),等待用户确认后输出 rebase 命令。

【使用方式】 工作流分为六步:分析(运行脚本检测提交)、识别(确定保留/丢弃边界即切点)、展示(输出变基计划)、确认(用户审阅)、输出(打印 rebase 命令供开发者执行)、验证(确认历史正确)。 分析脚本调用示例:bash skills/smart-rebase/scripts/smart-rebase-analyze.sh --target=<quoted target>;指定切点示例:--base=<quoted branch-or-commit>。

【前置条件】

  • 不在受保护分支上(main、master、develop、release/*)。
  • 工作区干净(git status --porcelain 为空)。
  • 非 detached HEAD。

【限制与注意事项】

  • 该技能不执行 git rebase,rebase 属于破坏性操作,需由开发者自行运行;技能仅输出命令。
  • 不适用于简单的无 squash-merge 复杂度的 rebase、合并冲突解决(使用 /merge-prep)、分支管理或切换、以及 cherry-pick 特定提交(使用 git cherry-pick)。
  • 命令中的 ref 名称需进行 shell 引用,并使用 -- 或 --end-of-options 分隔符防止选项解析问题;在存在分支名与标签名歧义时,输出的 rebase 命令不宜直接原样运行,需先确认操作数无歧义。
  • 关于收费、价格、平台等信息暂未提供。