You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用git rebase --onto将分支变基到squash合并后的main分支?

解答

git rebase --onto的标准参数规则为:

git rebase --onto <新目标基底> <需剔除的提交链末端> [待变基分支]
  • 新目标基底:你要把提交链接到的位置,你的场景里就是origin/main(对应提交I),这个参数你已经填写正确。
  • 需剔除的提交链末端:也就是你不想带到新分支上的那段提交的最后一个节点,你的场景里要剔除D、E、H三个提交,它们的末端就是提交H。
    • 如果你本地还保留branch-A分支(该分支的指针正好指向提交H),这里直接填branch-A即可。
    • 如果branch-A已经被删除,可以先执行git log --oneline branch-B查看提交历史,找到J提交的父提交(也就是H)的哈希值填入即可。
  • 待变基分支:可选参数,如果你已经提前git checkout branch-B切到了工作分支,这个参数可以省略,Git会默认取当前HEAD指向的branch-B最新提交作为范围终点。

操作提示:执行变基前可以先运行git branch branch-B-backup创建备份分支,若变基结果不符合预期,切回备份分支即可恢复原始状态,无操作风险。

对应你的场景,切到branch-B后直接执行以下命令即可得到预期的提交结构:

# 本地保留branch-A的情况
git rebase --onto origin/main branch-A

# branch-A已删除,替换为H的实际提交哈希即可,示例哈希为a1b2c3d
git rebase --onto origin/main a1b2c3d

执行完成后可以用git log --oneline --graph origin/main branch-B验证提交结构,确认J、K两个提交已经正确挂在提交I之后,D/E/H三个提交被剔除即可。

内容的提问来源于stack exchange,提问作者Nainpo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 05:27:31