web-dev-qa-db-fra.com

Redéfinir la branche de fonctionnalité sur une autre branche de fonctionnalité

Je travaille sur deux branches (privées).

a -- b -- c                  <-- Master
     \     \
      \     d -- e           <-- Branch1
       \
        f -- g               <-- Branch2

Après avoir travaillé un peu sur ces branches, j'ai découvert que j'avais besoin des modifications de Branch2 dans Branch1. Je voudrais reformuler les modifications dans Branch2 sur Branch1. Je voudrais finir avec ce qui suit:

a -- b -- c                  <-- Master
           \
            d -- e -- f -- g <-- Branch1

Je suis presque sûr de devoir rebaser la deuxième branche sur la première, mais je ne suis pas tout à fait sûr de la syntaxe correcte ni de la branche que j'aurais dû vérifier.

Cette commande produira-t-elle le résultat souhaité?

(Branch1)$ git rebase --onto Branch1 Branch2
263
Arjen
  1. Passer à Branch2

    git checkout Branch2
    
  2. Appliquez les modifications actuelles (Branch2) en plus des modifications de Branch1, en restant dans Branch2:

    git rebase Branch1
    

Ce qui vous laisserait le résultat souhaité dans Branch2:

a -- b -- c                      <-- Master
           \
            d -- e               <-- Branch1
           \
            d -- e -- f' -- g'   <-- Branch2

Vous pouvez supprimer Branch1.

304
sasikt

Note: si vous étiez sur Branch1, vous pourrez avec Git 2.0 (T2 2014) taper:

git checkout Branch2
git rebase -

Voir commit 4f4074 par Brian Gesiak modocache :

rebase: autorise le raccourci "-" pour la branche précédente

Apprenez à rebase le même raccourci que checkout et merge pour nommer la branche à rebase la branche en cours; c'est-à-dire que "-" signifie "la branche sur laquelle nous étions auparavant".

49
VonC

Je sais que vous avez demandé à Rebase, mais je voudrais bien choisir les commits pour lesquels je voulais passer de Branch2 à Branch1. De cette façon, je n'aurais plus à me soucier de savoir quelle branche a été créée à partir de maître et j'aurais plus de contrôle sur la fusion.

a -- b -- c                  <-- Master
     \     \
      \     d -- e -- f -- g <-- Branch1 (Cherry-Pick f & g)
       \
        f -- g               <-- Branch2
1
Craigo