59 votes

Git : Appliquer une partie d'un commit à une autre branche

Comment puis-je postuler ? partie d'un commit d'une branche à l'autre ? Je comprends que je peux sélectionner un commit, mais j'ai besoin d'aller plus loin et de sélectionner certains des changements introduits par ce commit et de les appliquer à une autre branche (cible).

Existe-t-il un moyen propre de faire cela, ou dois-je simplement appliquer l'intégralité du commit, annuler manuellement quelques hunks, et me souvenir de créer plus de commits atomiques à l'avenir ?

85voto

dahlbyk Points 24897

git cherry-pick -n <SHA> mettra en scène les modifications mais ne les validera pas. Vous pouvez alors utiliser git reset -p pour déstabiliser les éléments dont vous ne voulez pas, ou git reset HEAD y git add -Ap pour ne mettre en scène que les modifications souhaitées.

16voto

Alex Points 248

Si les parties que vous souhaitez appliquer peuvent être spécifiées par un chemin (c'est-à-dire que vous ne souhaitez pas spécifier des ensembles dans un fichier), une autre solution est possible.

Une approche consiste à créer un correctif à partir du commit et à l'appliquer à votre branche.

Avec la branche que vous souhaitez modifier :

git show <SHA> -- <relevant paths> | git apply

Appliquera tout changement dans le commit SHA, dans les chemins d'accès relevant paths à votre copie de travail actuelle.

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