git rebase到另一个分支

时间:2017-07-06 19:24:51

标签: git rebase

我有以下情况:

Master ---X---X---X
               \
   Alpha branch A1---A2---A3---A4---A5---A6
                      \              \
                       \  beta branch B1---B2
                        \
              My Branch M1---M2---M3

我想将我的分支移动到“B2”,结尾如下:

Master ---X---X---X
               \
   Alpha branch A1---A2---A3---A4---A5---A6
                                     \
                          beta branch B1---B2
                                            \                             
                                  My Branch M1---M2---M3

要做到这一点,我应该在我的分支中制作一个git rebase beta,还是应该将选项 - 添加到,如下所示:git rebase --onto beta alpha My?我已经阅读了文档,但我仍然没有弄清楚它们之间的区别......

2 个答案:

答案 0 :(得分:2)

以下四种方法:

  •   

    git rebase< branch>

    将已签出的分支重置为< branch>,应用差异(介于两者之间) 以前的HEAD和共同的祖先)并且提交。

    git checkout my
    git rebase beta
    
  •   

    git rebase< branch1> < BRANCH2>

    重置< branch2>到< branch1>,应用差异(在之前的< branch2>和共同的祖先之间)并提交。

    git rebase beta my
    
  •   

    git rebase --onto< branch1> < BRANCH2>

    将签出分支重置为< branch1>,应用差异(在之前的HEAD和< branch2>之间)并提交。

    git checkout my
    git rebase --onto beta A2
    
  •   

    git rebase --onto< branch1> < BRANCH2> <店3>

    重置< branch2>到< branch1>,应用差异(在之前的HEAD和< branch2>之间)和提交。

    git rebase --onto beta A2 my
    

答案 1 :(得分:1)

如果您位于分支机构之上,只需说出git rebase betagit rebase B2即可。不同的是,通过使用--onto你可以控制更棘手的情况......就像相反:想要在我的分支上移动beta分支。如果您处于测试阶段且运行git rebase my-branch,那么最终将使用M1 - M2 - M3 - A3' - A4' - A5' - B1' --B2' (因为从分支分歧的点(A2)修订A3到A5(包括两者)也必须包含在一个简单的rebase中。在这种情况下你必须运行:git rebase --onto my-branch alpha-branch beta-branch。希望清除它达

相关问题