Cherry Pick en français

Qu'est-ce que le cherry-pick ?

La commande cherry-pick dans Git permet de sélectionner des commits spécifiques d'une branche pour les appliquer à une autre. Cette méthode est particulièrement utile pour extraire des modifications précises sans avoir à fusionner l'ensemble des changements d'une branche.

Syntaxe de la commande

La syntaxe pour utiliser cherry-pick est la suivante :

git cherry-pick 

Ici, <commit> représente le hash du commit, que l'on peut trouver en exécutant la commande git log. Il existe également plusieurs options que vous pouvez utiliser avec cherry-pick : - --edit : permet de modifier le message du commit avant de valider les modifications. - --signoff : ajoute une ligne de signature au message de commit.

Exemple d'utilisation

Prenons un exemple pour illustrer l'utilisation de la commande cherry-pick. Supposons qu'un développeur veuille transférer un commit spécifique, identifié par le SHA e1a75b2, depuis une branche nommée fonctionnalités vers une autre appelée ajout-images.

Le développeur commence par changer de branche :

# Passer à la branche `ajout-images`
git checkout ajout-images

Ensuite, il effectue le cherry-pick du commit :

# Cherry-pick le commit `e1a75b2`
git cherry-pick e1a75b2

Enfin, pour terminer la procédure, le développeur pousse les modifications avec un message de commit approprié :

# Pousser les changements avec un message
git commit -m "Ajout d'images de produits"

Inconvénients du cherry-pick

L'un des inconvénients majeurs de l'utilisation de la commande cherry-pick est qu'elle peut introduire des commits en double dans la branche cible. Dans notre exemple, le commit du développeur aura une entrée distincte dans l'historique, ce qui complique la lecture et la compréhension des modifications par d'autres développeurs. Voici à quoi l'historique des commits pourrait ressembler après l'opération :

commit 896cde0
Author: Jean Dupont 
Date:   Lun Oct 9 10:30:00 2023 +0200

    Ajout d'images de produits

commit e1a75b2
Author: Alice Martin 
Date:   Lun Oct 9 10:25:00 2023 +0200

    Ajout d'images de produits

Stratégies de prévention

Pour éviter la création de commits en double lors de l'utilisation de cherry-pick, on peut utiliser l'option --no-commit. Cette démarche appliquera les changements dans l'espace de travail sans créer immédiatement un nouveau commit, permettant au développeur d'examiner les modifications avant la validation finale. Voici un exemple :

# Passer à la branche `ajout-images`
git checkout ajout-images
# Cherry-pick le commit `e1a75b2` sans effectuer de commit

# Inspecter les changements effectués par le cherry-pick
git cherry-pick --no-commit e1a75b2

# Vérifier les différences
 git diff HEAD

# Committer les changements avec un message personnel
git commit -m "Ajout d'images de produits"

Après cette opération, seul un commit apparaîtra dans l'historique, à savoir celui créé par le développeur.