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 annexer au HEAD de travail actuel. Cherry picking est l’acte de choisir un commit d’une branche et de l’appliquer à une autre. git cherry-pick peut être utile pour annuler des changements. Par exemple, disons qu’un commit est accidentellement fait sur la mauvaise branche. Vous pouvez passer à la branche correcte et prendre le commit à l’endroit auquel il devrait appartenir.

Quand utiliser git cherry pick

git cherry-pick est un outil utile mais pas toujours une meilleure pratique. Cherry picking peut causer des commits dupliqués et de nombreux scénarios où cherry picking fonctionnerait, les fusions traditionnelles sont préférées à la place. Cela dit, git cherry-pick est un outil pratique pour quelques scénarios…

Collaboration d’équipe.

Souvent, une équipe trouvera des membres individuels travaillant dans ou autour du même code. Peut-être qu’une nouvelle fonctionnalité de produit a un composant backend et frontend. Il peut y avoir du code partagé entre les deux secteurs du produit. Le développeur backend peut créer une structure de données que le frontend devra également utiliser. Le développeur frontal pourrait utiliser git cherry-pick pour choisir le commit dans lequel cette structure de données hypothétique a été créée. Ce choix permettrait au développeur frontal de continuer à progresser de son côté du projet.

Corrections de bogues

Lorsqu’un bogue est découvert, il est important de livrer une correction aux utilisateurs finaux aussi rapidement que possible. Pour un exemple de scénario, disons qu’un développeur a commencé à travailler sur une nouvelle fonctionnalité. Pendant le développement de cette nouvelle fonctionnalité, il identifie un bogue préexistant. Le développeur crée un commit explicite pour corriger ce bug. Ce nouveau commit de correctif peut être cherry-pické directement dans la branche master pour corriger le bug avant qu’il n’affecte plus d’utilisateurs.

Annuler les changements et restaurer les commits perdus

Parfois, une branche feature peut devenir périmée et ne pas être fusionnée dans master. Parfois, une demande de pull peut être fermée sans être fusionnée. Git ne perd jamais ces commits et grâce à des commandes comme git log et git reflog, ils peuvent être retrouvés et ramenés à la vie.

Comment utiliser git cherry pick

Pour démontrer comment utiliser git cherry-pick supposons que nous avons un dépôt avec l’état de branche suivant:

 a - b - c - d Master
\
e - f - g Feature

git cherry-pick l’utilisation est simple et peut être exécutée comme:

git cherry-pick commitSha

Dans cet exemple commitSha est une référence de commit. Vous pouvez trouver une référence de commit en utilisant git log. Dans cet exemple, nous avons construit disons que nous voulions utiliser le commit `f` dans master. D’abord nous nous assurons que nous travaillons sur la branche master.

git checkout master

Puis nous exécutons le cherry-pick avec la commande suivante:

git cherry-pick f

Une fois exécuté notre historique Git ressemblera à :

 a - b - c - d - f Master
\
e - f - g Feature

Le commit f a été ramassé avec succès dans la branche master

Exemples de git cherry pick

git cherry pick peut également se voir passer certaines options d’exécution.

-edit

Passer l’option -edit fera que git demandera un message de commit avant d’appliquer l’opération de cherry pick

--no-commit

L’option --no-commit exécutera le cherry pick mais au lieu de faire un nouveau commit, elle déplacera le contenu du commit cible dans le répertoire de travail de la branche courante.

--signoff

L’option --signoff ajoutera une ligne de signature ‘signoff’ à la fin du message de commit cherry-pick

En plus de ces options utiles, git cherry-pick accepte également une variété d’options de stratégie de fusion. Apprenez-en plus sur ces options dans la documentation sur les stratégies de fusion git.

En outre, git cherry-pick accepte également les entrées d’options pour la résolution des conflits de fusion, cela inclut les options : --abort --continue et --quitces options sont couvertes plus en profondeur en ce qui concerne git merge et git rebase.

Résumé

Le cherry picking est une commande puissante et pratique qui est incroyablement utile dans quelques scénarios. Cherry picking ne doit pas être utilisé à tort à la place de git merge ou git rebase. La commande git log est nécessaire pour aider à trouver les commits à cherry picking.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.