Close

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.

Bases de données
Ressource connexe

Comment déplacer un dépôt Git complet

Logo Bitbucket
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.

Des personnes qui collaborent à l'aide d'un mur rempli d'outils

Le blog Bitbucket

Illustration DevOps

Parcours de formation DevOps

Démos Des démos avec des partenaires d'Atlassian

Fonctionnement de Bitbucket Cloud avec Atlassian Open DevOps

Inscrivez-vous à notre newsletter DevOps

Thank you for signing up