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
Passer à Branch2
git checkout Branch2
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.
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édenteApprenez à rebase le même raccourci que
checkout
etmerge
pour nommer la branche àrebase
la branche en cours; c'est-à-dire que "-
" signifie "la branche sur laquelle nous étions auparavant".
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