Git 🌙
Français â–Ÿ Topics â–Ÿ Latest version â–Ÿ git-cherry-pick last updated in 2.45.0

NOM

git-cherry-pick - Applique les modifications introduites par certains commits existants

SYNOPSIS

git cherry-pick [--edit] [-n] [-m <numéro-de-parent>] [-s] [-x] [--ff]
		  [-S[<id-clĂ©>]] <commit>…​
git cherry-pick (--continue | --skip | --abort | --quit)

DESCRIPTION

Étant donnĂ© un ou plusieurs commits existants, appliquer la modification que chacun d’eux introduit, en enregistrant un nouveau commit pour chacun. Cela nĂ©cessite que votre arbre de travail soit propre (pas de modification depuis le commit HEAD).

Lorsqu’il n’est pas Ă©vident de savoir comment appliquer une modification, il se produit ce qui suit :

  1. La branche actuelle et le pointeur HEAD restent au dernier commit effectué avec succÚs.

  2. La référence CHERRY_PICK_HEAD est définie pour pointer vers le commit qui a introduit la modification difficile à appliquer.

  3. Les chemins dans lesquels la modification s’est appliquĂ©e proprement sont mis Ă  jour Ă  la fois dans le fichier d’index et dans votre arbre de travail.

  4. Pour les chemins conflictuels, le fichier d’index enregistre jusqu’Ă  trois versions, comme dĂ©crit dans la section "VRAIE FUSION" de git-merge[1]. Les fichiers de l’arbre de travail incluront une description du conflit encadrĂ©e par les marqueurs de conflit habituels <<<<<<< et >>>>>>>.

  5. Aucune autre modification n’est apportĂ©e.

Voir git-merge[1] pour quelques conseils sur la résolution de tels conflits.

OPTIONS

<commit>…​

Les commits Ă  picorer. Pour une liste plus complĂšte des façons d’Ă©peler les commits, voir gitrevisions[7]. Des ensembles de commits peuvent ĂȘtre passĂ©s mais aucune traversĂ©e n’est faite par dĂ©faut, comme si l’option --no-walk Ă©tait spĂ©cifiĂ©e, voir git-rev-list[1]. Notez que la spĂ©cification d’une plage alimentera tous les arguments <commit>…​ Ă  un seul parcours de rĂ©vision (voir un exemple plus bas qui utilise maint master…​next).

-e
--edit

Avec cette option, git cherry-pick vous permettra de modifier le message de validation avant de valider.

--cleanup=<mode>

Cette option dĂ©termine comment le message de valiation sera nettoyĂ© avant d’ĂȘtre transmis Ă  la machine de commit. Voir git-commit[1] pour plus de dĂ©tails. En particulier, si la valeur de <mode> est scissors, les ciseaux seront ajoutĂ©s Ă  MERGE_MSG avant d’ĂȘtre transmis dans le cas d’un conflit.

-x

Lors de l’enregistrement du commit, ajouter une ligne qui ajoute "(cherry pick from commit …​)" au message de commit original afin d’indiquer de quel commit ce changement a Ă©tĂ© picorĂ©. Ceci est fait uniquement pour les picorages sans conflits. N’utilisez pas cette option si vous faites du picorage depuis votre branche privĂ©e car l’information est inutile pour le destinataire. En revanche, si vous faites du picorage entre deux branches visibles publiquement (par exemple, le rĂ©troportage d’un correctif dans une branche de maintenance d’une ancienne version Ă  partir d’une branche de dĂ©veloppement), l’ajout de cette information peut ĂȘtre utile.

-r

Avant, la commande faisait par défaut -x comme décrit ci-dessus, et -r permettait de la désactiver. Maintenant, le défaut est de ne pas faire -x, donc cette option est un no-op.

-m <numéro-de-parent>
--mainline <numéro-de-parent>

Habituellement, vous ne pouvez pas picorer une fusion parce que vous ne savez pas quel cĂŽtĂ© de la fusion doit ĂȘtre considĂ©rĂ© comme la ligne principale. Cette option spĂ©cifie le numĂ©ro du parent (Ă  partir de 1) de la ligne principale et permet Ă  cherry-pick de rejouer la modification par rapport au parent spĂ©cifiĂ©.

-n
--no-commit

Habituellement, la commande crĂ©e automatiquement une sĂ©quence de commits. Cette option applique les changements nĂ©cessaires pour sĂ©lectionner chaque commit nommĂ© Ă  votre arbre de travail et Ă  l’index, sans faire aucun commit. De plus, lorsque cette option est utilisĂ©e, votre index ne doit pas nĂ©cessairement correspondre au commit HEAD. Le picorage est fait par rapport Ă  l’Ă©tat initial de votre index.

Ceci est utile pour picorer l’effet de plusieurs commits sur votre index Ă  la suite.

-s
--signoff

Ajouter une ligne terminale Signed-off-by au message de commit. RĂ©fĂ©rez-vous Ă  l’option de contre-signature dans git-commit[1] pour plus d’information.

-S[<idclé>]
--gpg-sign[=<idclé>]
--no-gpg-sign

Signer les commits avec GPG. L’argument idclĂ© est optionnel avec par dĂ©faut l’identitĂ© du validateur ; si spĂ©cifiĂ©e, elle doit ĂȘtre collĂ©e Ă  l’option sans aucun espace. --no-gpg-sign est utile pour annuler l’effet de la variable de configuration commit.gpgSign ainsi que tout --gpg-sign prĂ©cĂ©dent.

--ff

Si le HEAD actuel est le mĂȘme que le parent du commit picorĂ©, alors une avance rapide sur ce commit sera effectuĂ©e.

--allow-empty

Par dĂ©faut, le picorage d’un commit vide Ă©chouera, indiquant qu’une invocation explicite de git commit --allow-empty est nĂ©cessaire. Cette option surcharge ce comportement, permettant aux commits vides d’ĂȘtre prĂ©servĂ©s automatiquement dans un picorage. Notez que lorsque "--ff" est en vigueur, les commits vides qui rĂ©pondent Ă  l’exigence d'"avance rapide" seront conservĂ©s mĂȘme sans cette option. Notez Ă©galement que l’utilisation de cette option ne conserve que les commits qui Ă©taient initialement vides (c’est-Ă -dire que le commit a enregistrĂ© le mĂȘme arbre que son parent). Les commits qui sont rendus vides Ă  cause d’un commit prĂ©cĂ©dent feront Ă©chouer le picorage. Pour forcer l’inclusion de ces commits, utilisez --empty=keep.

--allow-empty-message

Par dĂ©faut, le picorage d’un commit avec un message vide Ă©chouera. Cette option annule ce comportement, permettant aux commits avec des messages vides d’ĂȘtre picorĂ©s.

--empty=(drop|keep|stop)

Comment manipuler les commits picorĂ©s qui sont redondants avec les modifications dĂ©jĂ  dans l’historique actuel.

drop

Le commit sera abandonné.

keep

Le commit sera gardé. Implique --allow-empty.

stop

La picorage s’arrĂȘtera lorsque le commit sera appliquĂ©, vous permettant d’examiner le commit. C’est le comportement par dĂ©faut.

Notez que --empty=drop et --empty=stop spĂ©cifient seulement comment manipuler un commit qui n’Ă©tait pas initialement vide, mais est devenu vide en raison d’un commit prĂ©cĂ©dent. Les commits qui Ă©taient initialement vides causeront encore l’Ă©chec du picorage Ă  moins que --empty=keep ou --allow-empty ne soient spĂ©cifiĂ©s.

--keep-redundant-commits

Synonyme obsolĂšte pour --empty=keep.

--strategy=<strategie>

Utilise la stratĂ©gie de fusion donnĂ©e. Ne devrait ĂȘtre utilisĂ©e qu’une seule fois. Voir la section STRATÉGIES DE FUSION dans git-merge[1] pour plus de dĂ©tails.

-X<option>
--strategy-option=<option>

Passer l’option spĂ©cifique de stratĂ©gie de fusion Ă  la stratĂ©gie de fusion. Voir git-merge[1] pour plus de dĂ©tails.

--rerere-autoupdate
--no-rerere-autoupdate

AprĂšs que le mĂ©canisme rerere rĂ©utilise une rĂ©solution enregistrĂ©e sur le conflit actuel pour mettre Ă  jour les fichiers dans l’arbre de travail, lui permettre de mettre Ă©galement Ă  jour l’index avec le rĂ©sultat de la rĂ©solution. --no-rerere-autoupdate est un bon moyen de revĂ©rifier ce que rerere a fait et de dĂ©tecter des erreurs de fusion potentielles, avant de valider le rĂ©sultat dans l’index avec un git add sĂ©parĂ©.

SOUS-COMMANDES DU SÉQUENCEUR

Warning

Missing fr/sequencer.txt

See original version for this content.

EXEMPLES

git cherry-pick master

Applique la modification introduite par le commit au sommet de la branche master et créer un nouveau commit avec cette modification.

git cherry-pick ..master
git cherry-pick ^HEAD master

Applique les modifications introduites par tous les commits qui sont des ancĂȘtres de master mais pas de HEAD pour produire de nouveaux commits.

git cherry-pick maint next ^master
git cherry-pick maint master..next

Applique les modifications introduites par tous les commits qui sont des ancĂȘtres de maint ou next, mais pas master ni aucun de ses ancĂȘtres. Notez que ce dernier ne signifie pas maint et tout ce qui se trouve entre master et next ; spĂ©cifiquement, maint ne sera pas utilisĂ© s’il est inclus dans master.

git cherry-pick master~4 master~2

Applique les modifications introduites par les cinquiÚme et troisiÚme derniers commits pointés par master et crée 2 nouveaux commits avec ces modifications.

git cherry-pick -n master~1 next

Applique Ă  l’arbre de travail et Ă  l’index les modifications introduites par l’avant-dernier commit pointĂ© par master et par le dernier commit pointĂ© par next, mais ne crĂ©e aucun commit avec ces modifications.

git cherry-pick --ff ..next

Si l’historique est linĂ©aire et que HEAD est un ancĂȘtre de next, met Ă  jour l’arbre de travail et avance le pointeur HEAD pour qu’il corresponde Ă  next. Sinon, applique les modifications introduites par les commits qui sont dans next mais pas HEAD Ă  la branche courante, en crĂ©ant un nouveau commit pour chaque nouvelle modification.

git rev-list --reverse master -- README | git cherry-pick -n --stdin

Applique les modifications introduites par tous les commits de la branche master qui ont touchĂ© README, Ă  l’arbre de travail et Ă  l’index, afin que le rĂ©sultat puisse ĂȘtre inspectĂ© et transformĂ© en un seul nouveau commit si cela convient.

La sĂ©quence suivante tente de rĂ©tro-porter une rustine, Ă©choue parce que le code auquel la rustine s’applique a trop changĂ©, puis rĂ©essaie, cette fois en faisant plus attention Ă  la correspondance des lignes de contexte.

$ git cherry-pick topic^             (1)
$ git diff                           (2)
$ git cherry-pick --abort            (3)
$ git cherry-pick -Xpatience topic^  (4)
  1. applique la modification qui serait montrĂ©e par git show topic^. Dans cet exemple, la rustine ne s’applique pas proprement, donc l’information sur le conflit est Ă©crite dans l’index et l’arbre de travail et aucun nouveau commit n’en rĂ©sulte.

  2. résume les modifications à réconcilier

  3. annule le picorage. En d’autres termes, retourne Ă  l’Ă©tat antĂ©rieur Ă  l’extraction, en prĂ©servant toutes les modifications locales prĂ©cĂ©dentes dans l’arbre de travail.

  4. essaie d’appliquer Ă  nouveau la modification introduite par topic^, en passant du temps supplĂ©mentaire pour Ă©viter les erreurs basĂ©es sur des lignes de contexte dĂ©terminĂ©es incorrectement.

VOIR AUSSI

GIT

Fait partie de la suite git[1]

TRADUCTION

Cette page de manuel a été traduite par Jean-Noël Avila <jn.avila AT free DOT fr> et les membres du projet git-manpages-l10n. Veuillez signaler toute erreur de traduction par un rapport de bogue sur le site https://github.com/jnavila/git-manpages-l10n .

scroll-to-top