git rebase a una twig diferente

Tengo la siguiente situación:

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

Quiero mover mi twig a "B2", terminando así:

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

Para hacer eso, ¿debería hacer, en mi sucursal, una git rebase beta o debería agregar la opción –onto así: git rebase --onto beta alpha My ? Había leído la documentation, pero todavía no me di count de la diferencia …

Aquí hay cuatro forms de hacerlo:

  • git rebase <twig>

    Restablecer ramificación comprobada en <twig>, aplicar diferencias (entre HEAD anterior y el antecesor común) y confirmar.

     git checkout my git rebase beta 
  • git rebase <branch1> <branch2>

    Restablezca <branch2> a <branch1>, aplique las diferencias (entre el <branch2> anterior y el antecesor común) y confirme.

     git rebase beta my 
  • git rebase –onto <branch1> <branch2>

    Restablecer ramificación comprobada en <twig1>, aplicar diferencias (entre HEAD anterior y <twig2>) y confirmar.

     git checkout my git rebase --onto beta A2 
  • git rebase –onto <branch1> <branch2> <branch3>

    Restablezca <branch2> a <branch1>, aplique las diferencias (entre HEAD anterior y <branch2>) y confirme.

     git rebase --onto beta A2 my 

Si estás en la cima de tu sucursal, solo git rebase beta o git rebase B2 . La diferencia es que al usar –onto puedes controlar situaciones más difíciles … al revés: quieres mover la twig beta en la parte superior de mi twig. Si estás en la parte superior de beta y ejecutaste git rebase my-branch , terminarías con M1 – M2 – M3 – A3 '- A4' – A5 '- B1' – B2 '(porque de la punto donde las twigs divergieron (A2) las revisiones A3 a A5 (ambas inclusive) también tendrían que includese en una database simple. En ese caso, tendrías que ejecutar: git rebase --onto my-branch alpha-branch beta-branch . Espero que eso lo aclare