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

如何在任意提交点将一个功能分支拆分为两个独立功能分支?

拆分Git分支:将指定提交迁移到新分支

方法一:cherry-pick + reset 组合操作

    1. 切换到foo分支,确认提交序列:
    git checkout foo
    git log --oneline
    

    此时能看到提交链 C -> E -> F -> G -> H,可以记下G、H的提交哈希,或者用相对引用(foo~1对应G,foo对应H)。

    1. 基于提交C创建新分支bar:
    git checkout -b bar C
    

    如果C是master分支的最新提交,也可以直接用master替代C。

    1. 将G、H提交复制到bar分支:
    git cherry-pick <G的提交哈希> <H的提交哈希>
    # 用相对引用简化命令:
    git cherry-pick foo~1 foo
    

    若出现冲突,解决冲突后执行git cherry-pick --continue即可。

    1. 把foo分支回退到仅保留E、F提交的状态:
    git checkout foo
    git reset --hard <F的提交哈希>
    # 用相对引用简化:
    git reset --hard foo~2
    

    注意--hard会丢弃工作区未提交的修改,执行前确认没有未保存内容。

方法二:rebase --onto 高效迁移

    1. 先创建bar分支,暂时指向foo的最新提交H:
    git checkout -b bar foo
    
    1. 将foo分支回退到F提交:
    git checkout foo
    git reset --hard <F的提交哈希>
    # 相对引用简化:git reset --hard foo~2
    
    1. 把bar分支上的G、H提交迁移到C提交之上:
    git checkout bar
    git rebase --onto C <F的提交哈希>
    # 相对引用简化:git rebase --onto master foo
    

    这里--onto C指定新基准是C,<F的提交哈希>表示只迁移F之后的提交(即G、H)。遇冲突解决后执行git rebase --continue。

完成操作后,分支结构将变为:

Master ---A---B---C
                  |\
             Foo  | E---F
                  |
             Bar  G---H

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 21:55:10