web-dev-qa-db-fra.com

Comment pouvez-vous baser les modifications de la branche actuelle par-dessus les modifications fusionnées?

D'accord. Si je suis sur une branche (disons working) et que je veux fusionner les modifications d'une autre branche (disons master), j'exécute la commande git-merge master alors que je suis sur la branche working et les modifications sont fusionnées sans refaire l'histoire du tout. Si j'exécute git-rebase master, les modifications apportées à master sont modifiées afin de pouvoir figurer au sommet de ma branche working. Mais que se passe-t-il si je souhaite fusionner les modifications de master mais redéfinir mes modifications dans working afin d’être au-dessus? Comment je fais ça? Cela peut-il être fait?

Je pourrais exécuter git-rebase working sur ma branche master pour mettre mes modifications en haut de la branche master, mais j'aimerais pouvoir le faire dans ma branche working, et je ne sais pas comment. Le plus proche que je puisse faire est de créer une nouvelle branche à partir de master et de rebaser les modifications de working par dessus, mais j'aurais alors une nouvelle branche au lieu de modifier la branche working.

129
Jonathan M Davis

Vous avez ce que rebase fait à l'envers. git rebase master fait ce que vous demandez - prend les modifications sur la branche actuelle (depuis sa divergence par rapport au maître) et les rejoue au-dessus de master, puis définit la tête de la branche actuelle sur tête de cette nouvelle histoire. Il ne le fait pas rejoue les modifications de master au-dessus de la branche en cours.

231
hobbs

Une autre façon de voir les choses est de considérer git rebase master comme:

Rebassez la branche actuelle au-dessus de master

Ici, 'master' est la branche en amont , ce qui explique pourquoi, lors d'une réfection, ours et theirs sont inversés .

60
VonC