Comment reformuler les changements de la branche actuelle en plus des changements fusionnés?

OK. Si je suis sur une branche (dites working ), et que je veux fusionner dans les changements d'une autre branche (dites master ), alors j'exécute la commande git-merge master alors que sur la branche working , et les changements sont fusionnés sans rebaser l'histoire du tout. Si j'exécute git-rebase master , alors les changements dans master sont rebasés pour être mis sur le dessus de ma branche working . Mais que faire si je veux fusionner dans les modifications de master mais rebase mes modifications dans working pour être au top? Comment dois-je faire? Peut-il être fait?

je pourrais lancer git-rebase working sur ma branche master pour mettre mes modifications en haut dans la branche master , mais j'aimerais pouvoir le faire dans ma branche working , et je n'ai aucune idée de comment. Le plus proche que je peux penser à faire est de créer une nouvelle branche à partir de master et puis rebaser working changements sur le dessus de cela, mais alors j'aurais une nouvelle branche au lieu de modifier la branche working .

103
demandé sur Jonathan M Davis 2011-09-04 08:14:57

3 réponses

vous avez ce que rebase fait à l'envers. git rebase master fait ce que vous demandez - prend les changements sur la branche actuelle (depuis sa divergence par rapport au maître) et les rejoue sur master , puis place le chef de la branche actuelle à la tête de cette nouvelle histoire. n'est pas replay les changements de master sur le dessus de la branche courante.

198
répondu hobbs 2011-09-04 04:18:29

une autre façon de le considérer est de considérer git rebase master comme:

Rebase la branche courante par-dessus master

ici, " master " est la branche en amont , et qui explique pourquoi, lors d'un rebase, ours et theirs sont inversés .

48
répondu VonC 2017-05-23 12:03:08

je viens de faire ceci il y a quelques instants de la manière suivante:

  1. sauvegarder votre travail en cours en cours git checkout -b work-in-progress
  2. récupération des dernières modifications git fetch origin/master
  3. écarter tout changement local git reset --hard origin/master
  4. replay dernières modifications de master git rebase origin/master
  5. relire votre travail en cours git rebase origin/work-in-progress
  6. synchroniser votre travail en cours avec la dernière master git rebase origin/master
4
répondu Andrei Marcut 2017-05-03 04:35:22