Git par l'exemple - Cherie, ça va cherry-picker !
Tags: git
Published: 2023-10-31 07:45:42

---
title: Git par l'exemple - Cherie, ça va cherry-picker !
published: true
description: Git est une technologie complexe, venez apprendre quelques commandes et fonctionnalité par l'exemple
serie: Git par l'exemple
tags: Git
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8v4q6wpwylxxpnyfocoh.png
---

![Git par l'exemple - cherry pick](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/szsepz7g7llxbgonahtu.jpg)

![Git par l'exemple - cherry pick](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oglwp58k6x6q9oqxx166.png)

Je penses que cette situation nous est tous arrivé ...

Je suis sur une branche Git, ma branche de travail. Je fais mes modifications, je commit, je push sur ma branche, impec.

A un moment, en montrant quelque chose a un collegue, je change de branche.

Plus tard, je reviens sur mon travail, je fais mes modifications de fichier, je commit et là ... je m'apperçois que je ne suis plus sur MA branche, mais sur la branche master/main qui est protégée en ecriture par exemple.

Que faire dans ce cas là ?

C'est là que le pouvoir du Git cherry-pick entre en jeu !

## Git Cherry Pick

Le [Git Cherry Pick](https://git-scm.com/docs/git-cherry-pick) permet de copier un commit d'une branche à une autre et c'est ce qui va nous aider, voir nous sauver, dans cette situation ! :-)

### Les logs

En premier, nous allons regarder les logs dans la mauvaise branche, afin de récupérer l'ID du commit que nous voulons copier.

```bash
$ git log --oneline --decorate

db6f662 (HEAD -> mauvaise-branche, origin/mauvaise-branche) commit sur mauvaise branche
7643233 (origin/ma-branche, ma-branche) premier commit good
17217a7 (origin/main, origin/HEAD, main) Initial commit
...

```

On voit bien notre commit, il s'agit du `db6f662`.

Astuce :

Vous pouvez ajouter en alias cette ligne de commande à rallonge :


```bash
alias glo='git log --oneline --decorate'
```

## Placez-vous dans votre branche de travail (la bonne !)

A présent, on se place dans la bonne branche de travail :

```bash
$ git switch ma-branche
Switched to branch 'ma-branche'
```

Comme vous pouvez voir, votre commit n'apparait pas encore :


```bash
$ glo

7643233 (HEAD -> ma-branche, origin/ma-branche) premier commit good
17217a7 (origin/main, origin/HEAD, main) Initial commit
(END)
``` 

### Cherry-pick du commit

Maintenant, nous allons utiliser la commande `git cherry-pick` pour copier le commit dans notre branche :


```bash
$ git cherry-pick db6f662
[ma-branche 46f048d] commit sur mauvaise branche
 Date: Mon Oct 30 18:13:05 2023 +0100
 1 file changed, 1 insertion(+)
```

Regardons l'historique Git/les logs de votre branche Git afin de vérifier que le commit a été ajouté :


```bash
$ glo

46f048d (HEAD -> ma-branche) commit sur mauvaise branche
7643233 (origin/ma-branche) premier commit good
17217a7 (origin/main, origin/HEAD, main) Initial commit
(END)
```

Super, le commit apparait bien maintenant dans la bonne branche !

Parfait :-)

![Git cherry pick](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qq768b2w91o5xg2zfnsp.jpg)

A noter que l'on peut "cherry-picker" plusieurs commits à la fois :


```bash
$ git cherry-pick <COMMIT_ID1> <COMMIT_ID2> <COMMIT_ID3>
```

## Conclusion

Git est un gestionnaire de version (SCM) utilisé en masse, mais comme de nombreux outils que l'on utilise au quotidien, il regorge de nombreuses fonctionnalités super pratique mais pas super simple à comprendre.

J'espère que cet exemple vous sera utile.