Copier-coller des commits avec cherry-pick
Par Maxime Bréhin • Publié le 8 mai 2023 • 2 min

Le cherry-pick ça n’est pas quand ton amour a oublié de se raser (#BlagueÀ2Balle) mais la possibilité que nous offre Git d’effectuer du report de commit d’un endroit à un autre dans l’historique d’un même projet. Il s’agit donc de copier-coller un ou plusieurs commits.

Quand l’utiliser ?

Tout dépend des workflows en place sur tes projets. On trouve généralement deux grands cas de figure :

  • le report de correctif d’une branche à une autre ;
  • la reprise de fonctionnalité d’une branche à une autre.

Il est donc très rare qu’on vienne dupliquer un commit sur une même branche. On est plus souvent confrontés à une logique du « tiens, ce truc là, j’en ai besoin là aussi ! ».

Procédure

La procédure est simple et se fait en deux étapes :

  1. Comme pour une fusion, on se place sur la branche qui va évoluer / recevoir le commit : git swith <la-branche>
  2. On réplique le commit : git cherry-pick -x <commit-1>

On peut en repliquer plusieurs à la fois, auquel cas Git nous les appliquera à la chaîne, mais on préférera généralement une application unitaire.

# On peut passer plusieurs identifiants de commits
git cherry-pick -x <commit-1> <commit-2>
# Ou carrément un intervalle, ici les commit 1, 2, 3 et 4
git cherry-pick -x <commit-1>~1..<commit-4>

Chaque commit répliqué produira donc un nouveau commit avec une nouvelle identité.

L’option -x

Contrairement aux fusions, le cherry-picking n’offre pas la possibilité de visualiser dans l’historique la provenance du contenu intégré/reporté. Ça n’est pas franchement grave puisqu’on garde toutes le infos réellement utiles (contenu + méta-données, dont l’auteur du commit). On peut néanmoins demander l’intégration dans le message du commit de la référence au commit copié grâce à l’option -x. On obtiendra alors une ligne supplémentaire en fin de message de commit qui ressemblera à ceci :

(cherry picked from commit 72bb9f9cf4bbb6bbb11da9cda4499c55c44e87b9)

Visuellement, ça donne quoi ?

Si on devait visualiser l’opération dans notre historique, on verrait ça :

Application d'un commit en cherry-pick

Tu veux aller plus loin et maîtriser pleinement les fondamentaux de Git ou être accompagné pour garantir la qualité de tes projets grâce à une bonne mise en place de Git ? On peut t’aider ou te former, il suffit de nous décrire ton besoin !