190 votes

Comment faire un "cherry-pick" à partir d'une branche distante ?

J'ai des difficultés à effectuer un cherry-pick. Sur ma machine locale, je suis actuellement sur ma branche "master". Je veux faire un cherry-pick dans un commit d'une autre branche, nommée "zebra". La branche " zebra " est une branche distante.

Donc statut git :

# On branch master
nothing to commit (working directory clean)

Ok, maintenant j'essaye de sélectionner le commit que je veux :

git cherry-pick xyz
fatal: bad object xyz

où "xyz" est la signature du commit qui m'intéresse, qui a eu lieu sur la branche "zebra".

La première question évidente est donc : pourquoi git ne trouve-t-il pas le commit auquel je fais référence ? Pour être honnête, je ne comprends pas vraiment comment cela fonctionne en premier lieu. Est-ce que git stocke quelque chose comme une base de données de commits localement dans mon répertoire de travail, pour toutes les autres branches ? Lors de l'exécution de la commande cherry-pick, est-ce qu'il va chercher dans cette base de données locale pour trouver le commit auquel je fais référence ?

Comme "zebra" est une branche distante, je me suis dit que je n'avais pas ses données en local. J'ai donc changé de branche :

git checkout zebra
Switched to branch 'zebra'

Donc maintenant, ici sur ma machine locale, je peux voir que les fichiers dans le répertoire reflètent correctement l'état de zebra. Je retourne sur master, j'essaie à nouveau de faire du cherry-pick (en espérant que les données de commit soient disponibles maintenant), mais j'obtiens le même problème.

Je ne comprends pas du tout ce qui se passe ici, toute aide serait la bienvenue.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X