Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.45.1 → 2.47.0 no changes
- 2.45.0 04/29/24
- 2.39.4 → 2.44.2 no changes
- 2.39.3 04/17/23
- 2.38.1 → 2.39.2 no changes
- 2.38.0 10/02/22
- 2.35.1 → 2.37.7 no changes
- 2.35.0 01/24/22
- 2.30.1 → 2.34.8 no changes
- 2.30.0 12/27/20
- 2.27.1 → 2.29.3 no changes
- 2.27.0 06/01/20
- 2.23.1 → 2.26.3 no changes
- 2.23.0 08/16/19
- 2.22.1 → 2.22.5 no changes
- 2.22.0 06/07/19
- 2.21.1 → 2.21.4 no changes
- 2.21.0 02/24/19
- 2.10.5 → 2.20.5 no changes
- 2.9.5 07/30/17
- 2.8.6 no changes
- 2.7.6 07/30/17
- 2.6.7 05/05/17
- 2.4.12 → 2.5.6 no changes
- 2.3.10 09/28/15
- 2.1.4 → 2.2.3 no changes
- 2.0.5 12/17/14
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 :
-
La branche actuelle et le pointeur
HEAD
restent au dernier commit effectué avec succÚs. -
La référence
CHERRY_PICK_HEAD
est définie pour pointer vers le commit qui a introduit la modification difficile à appliquer. -
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.
-
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>>>>>>>
. -
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 configurationcommit.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.
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 quererere
a fait et de dĂ©tecter des erreurs de fusion potentielles, avant de valider le rĂ©sultat dans l’index avec ungit add
séparé.
SOUS-COMMANDES DU SĂQUENCEUR
Warning
|
Missing 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 entremaster
etnext
âŻ; spĂ©cifiquement,maint
ne sera pas utilisĂ© s’il est inclus dansmaster
. -
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)
-
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. -
résume les modifications à réconcilier
-
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.
-
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.
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 .