git: départ sur la mauvaise branche

Le problème exposé dans ce sujet a été résolu.

Bonjour,

Posons la situation :

La branche de départ s’appelle develop.

Je travaille sur une première nouvelle fonctionnalité dans branche1:

git checkout develop
git checkout -b branche1
  ...
git commit -a -m modif1
git commit -a -m modif2
git commit -a -m modif3

Plus tard, je dois bosser sur une autre nouvelle fonctionnalité dans une autre branche:

git checkout develop
git checkout -b branche2
...
git commit -a -m modif4
git commit -a -m modif5
git commit -a -m modif6

Après avoir commit modif4, modif5 et modif6, je m’aperçois que j’ai oublié de checkout develop avant de passer sur branche2. De fait, introduisant une dépendance non désirée entre les deux pull request branche1 et branche2.

Du coup, sur branche2, je me retrouve avec:
develop > modif1 > modif2 > modif3 > modif4 > modif5 > modif6
Alors que j’aurais dû avoir:
develop > modif4 > modif5 > modif6

J’ai trouvé une solution avec cherry-pick, mais je dois reprendre les commit un par un dans l’ordre inverse, c’est fastidieus. Dans mon cas réel je n’ai pas que 3 commit, mais beaucoup plus.

JE suis sûr qu’il y a plus simple ! JE pense que ça doit être un cas d’utilisation pour rebase, mais je ne suis pas sûr de savoir l’utiliser correctement.

Comment faire ?

Merci pour votre aide.

+0 -0

Salut,

C’est effectivement le cas d’usage pour rebase, ici git rebase --onto develop branche1 branche2 si j’ai bien suivi.

Voir le paragraphe "More interesting rebase" sur cette page.

+0 -0

C’est effectivement le cas d’usage pour rebase, ici git rebase —onto develop branche1 branche2 si j’ai bien suivi.

Oui, c’est bien ça, parfait ! Avec le lien qui va bien vers le git book en bonus. Merci !

Par contre question bonus, qu’est-ce que fait réellement:
git rebase develop
?

C’est ce que j’avais initialement essayé avant de poster, et je n’ai pas compris… je n’ai pas l’impression que ça ait changé quoi que ce soit dans mon code. J’ai arrêté tout de suite quand j’ai vu un message de ce style:

Branch2 and develope have diverged, and have 27 and 38 commits respectively
+0 -0

git rebase develop

Juste ça, c’est pareil que git rebase --onto develop develop HEAD. Donc ça prend les commits depuis l’ancêtre commun à develop et HEAD, et ça les déplace sur le bout de develop. Si tu n’as rien commité sur develop depuis que branche1 et branche2 ont été créées, ça ne va effectivement rien faire.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte