6 votes

Comment rebaser sur une nouvelle version d'un parent choisi avec soin ?

Considérez les commits mis en évidence dans ce qui suit :

GITK

Pour la discussion actuelle, je ferai référence aux commits comme suit : Commit 1 : Lire les paramètres de langue dans les paramètres de l'utilisateur Commit 2 : [POC] Ne pas réviser

Nous utilisons Gerrit pour la révision du code. Le Commit 1 et le Commit 2 sont en cours de révision et n'ont pas été fusionnés. Je travaille sur le Commit 1 qui nécessite du code dans le Commit 2 et doit donc être basé sur celui-ci. Voici les commandes que j'ai utilisées :

  1. Cherry Pick Commit 2. J'utilise la commande cherry-pick qui vient de Gerrit pour ce changement : Cherry-pick Commit 2

  2. Faire les changements nécessaires à mon travail et pousser un changement qui est devenu Commit 1. Quand j'ai poussé Commit 1 pour la première fois, il était basé sur le patchset 8 de Commit 2.

Au fur et à mesure que je reçois des commentaires sur mon commit (Commit 1), je pousse de nouveaux ensembles de patchs pour celui-ci sur Gerrit. Cependant, lorsqu'il doit être fusionné, il doit être sur le dernier patchset de son parent (Commit 2). La façon dont je le fais maintenant est la suivante :

  1. git checkout working2
  2. git reset --hard remotes/origin/head
  3. Cherry-pick Commit 2 ---> Cela me donne la dernière version de Commit 2
  4. Cherry-pick Commit 1
  5. git push origin working2:refs/for/head

Existe-t-il un moyen d'obtenir le dernier patchset de Commit 2 sans faire tout ce qui précède ? Peut-être une sorte de "cherry pick" ou "rebase" interactif ?

8voto

thameera Points 1319

Vous pouvez simplement rebaser le Commit 1 dans le FETCH_HEAD. Pendant que vous êtes sur la branche working2,

$ git fetch ssh://user@gerrit.dev.xyz.net:29418/management-console refs/changes/26/11926/11 
$ git rebase -i FETCH_HEAD

Supprimez la ligne avec le message de commit de Commit 2 (première ligne habituellement). Maintenant, le Commit 1 sera au-dessus du dernier Commit 2. Si vous n'êtes pas familier avec le rebasement interactif, jetez un coup d'œil à ce qui suit aquí .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X