Git cherry-pick
git cherry-pick
est une commande puissante qui permet de choisir des commits Git arbitraires par référence et de les ajouter au HEAD actuel. Elle correspond au fait de sélectionner un commit d'une branche et de l'appliquer à une autre. La commande git cherry-pick
peut être utile pour annuler des changements. Par exemple, supposons qu'un commit soit accidentellement intégré à la mauvaise branche. Vous pouvez passer à la bonne branche, sélectionner le commit et l'insérer à l'endroit où il devrait se trouver.
Quand utiliser git cherry-pick ?
git cherry-pick
est un outil utile, mais pas toujours une bonne pratique. La sélection de commits peut entraîner des doublons, et les merges traditionnels lui sont souvent préférés. Ceci dit, la commande git cherry-pick
est pratique dans certains cas…
Collaboration entre les équipes
Il arrive souvent que les membres individuels d'une équipe travaillent dans le même code ou autour de celui-ci. Il se peut qu'une nouvelle fonctionnalité du produit comporte un composant back-end et un composant front-end. Il est possible que du code soit partagé entre deux secteurs de produits. Le développeur du back-end peut créer une structure de données que le front-end devra également utiliser. Le développeur du front-end pourrait utiliser la commande git cherry-pick
pour sélectionner le commit dans lequel cette hypothétique structure de données serait créée. De la sorte, le développeur du front-end pourrait continuer à avancer dans sa partie du projet.
Ressource connexe
Comment déplacer un dépôt Git complet
DÉCOUVRIR LA SOLUTION
Découvrir Git avec Bitbucket Cloud
Hotfix de bug
Lorsqu'un bug est découvert, il est important de fournir une correction aux utilisateurs finaux aussi rapidement que possible. Par exemple, un développeur a commencé à travailler sur une nouvelle fonctionnalité. Au cours du développement de cette nouvelle fonctionnalité, il identifie un bug préexistant. Il crée un commit explicite pour le corriger. Le commit de ce nouveau patch peut être directement sélectionné dans la branche principale (Main
) pour corriger le bug avant qu'il ne touche plus d'utilisateurs.
Annulation de changements et restauration de commits perdus
Parfois, une branche de fonctionnalité (Feature
) peut devenir obsolète et ne pas être mergée dans la branche principale (Main
). Parfois, une pull request peut être fermée sans être mergée. Git ne perd jamais ces commits, et il reste possible de les rechercher et de les ramener à la vie grâce à des commandes comme git log et git reflog.
Comment utiliser git cherry-pick ?
Pour illustrer l'utilisation de la commande git cherry-pick
, imaginons que nous disposons d'un dépôt avec l'état de branche suivant :
a - b - c - d Main
\
e - f - g Feature
La commande git cherry-pick
est utilisable directement et peut être exécutée comme suit :
git cherry-pick commitSha
Dans cet exemple de commit
, Sha est une référence de commit. Vous pouvez trouver ces références grâce à la commande git log
. Dans notre exemple, imaginons que nous souhaitions utiliser le commit `f` dans Main
. D'abord, nous vérifions que nous travaillons sur la branche principale (Main
).
git checkout main
Ensuite, nous exécutons la commande cherry-pick comme suit :
git cherry-pick f
Une fois la commande exécutée, notre historique Git ressemblera à ceci :
a - b - c - d - f Main
\
e - f - g Feature
Le commit f a été sélectionné dans la branche principale (Main).
Exemples d'utilisations de git cherry-pick
La commande git cherry-pick
peut également être transmise à certaines options d'exécution.
-edit
Lors de la transmission de l'option -edit
, Git appelle un message de commit avant d'appliquer l'opération cherry-pick.
--no-commit
L'option --no-commit
exécutera la commande cherry-pick, mais au lieu de créer un commit, elle déplacera les contenus du commit cible dans le répertoire de travail de la branche actuelle.
--signoff
L'option --signoff
ajoute une ligne de signature « de validation » à la fin du message de commit cherry-pick.
Outre ces options utiles, la commande git cherry-pick
accepte également de nombreuses options de stratégie de merge. Découvrez-en plus sur ces options dans la documentation relative aux stratégies de merge Git.
En outre, la commande git cherry-pick accepte également la saisie d'options pour la résolution des conflits de merge, ce qui inclut : --abort, --continue
et --quit
. Ces options sont couvertes de manière plus approfondie en ce qui concerne git merge et git rebase.
Résumé
La commande cherry-pick est efficace, pratique et incroyablement utile dans quelques scénarios. Elle ne doit pas être utilisée à la place de git merge ou de git rebase. La commande git log est requise pour trouver des commits à sélectionner.
Partager cet article
Thème suivant
Lectures recommandées
Ajoutez ces ressources à vos favoris pour en savoir plus sur les types d'équipes DevOps, ou pour les mises à jour continues de DevOps chez Atlassian.