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

如何用更少命令无需临时分支将Git分支移至另一分支顶端?

实现需求的简化命令方案

你的需求本质是将branch1中从共同祖先B之后的所有提交(F、G、H)复制到branch2的末端E,再让branch2指向复制后的新提交H'。确实可以用rebase --onto来简化操作,无需临时分支tmp。

单条组合命令实现

git rebase --onto branch2 B branch1 && git branch -f branch2 branch1

命令解释

  1. git rebase --onto branch2 B branch1:

    • --onto branch2:指定要把提交复制到的目标位置(即branch2当前指向的E)
    • B:指定上游边界,意思是只处理branch1中在B之后的提交(也就是F、G、H)
    • 执行后,branch1会指向新复制的H',原branch1的F、G、H仍保留在原位置
  2. git branch -f branch2 branch1:

    • 强制将branch2移动到branch1当前指向的H',完成分支结构的更新

不改动branch1的替代方案

如果不想修改branch1的指向,可以用临时变基的方式直接生成新提交并更新branch2:

git branch -f branch2 $(git rebase --onto branch2 B branch1 --no-update-head)

这里--no-update-head参数会让rebase只完成提交复制,不改动branch1的位置,而是返回新提交H'的哈希值,再通过git branch -f让branch2指向该哈希。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 14:22:15