web-dev-qa-db-fra.com

Cherry pick indique qu'aucune option n'a été donnée à l'option -m

J'ai deux branches master et développement

Je dois obtenir un identifiant de validation auprès de la branche de développement dans la branche principale, je le fais donc par choix sélectif, mais cela indique une erreur.

$> git cherry-pick cf0d52b

error: Commit cf0d52b900f990300c3aa17936ddbae1476d461a is a merge but no -m option was given.
fatal: cherry-pick failed

Je ne reçois pas cette erreur, pourquoi cette erreur vient et comment vais-je m'en débarrasser.

9
Akash Jain

Vous essayez de cherry-pick une fusion. Une fusion se forme chez plusieurs parents. Vous devez fournir l'ID parent à la fusion.

Vous devez fournir l'un des éléments suivants:

-m parent-number/--mainline parent-number

Habituellement, vous ne pouvez pas choisir une fusion car vous ne savez pas de quel côté de la fusion doit être considéré comme la ligne principale.

Cette option spécifie le numéro du parent (à partir de 1) de la ligne principale et permet à cherry-pick de rejouer la modification par rapport au parent spécifié.


Comment savoir quels sont les parents engagés?

Utilisez la commande git show pour afficher les parents de livraison, puis choisissez l’index des parents ou le SHA-1.

 enter image description here

10
CodeWizard

Cette option spécifie le numéro parent (à partir de 1)

Jusqu'à Git 2.13 (T2 2017), ce nombre pourrait être 0! (ce qui est incorrect)

Voir commit b16a991 (15 mars 2017) de Jeff King (peff) .
(Fusion par Junio ​​C Hamano - gitster - in commit 9c96637 , 17 mars 2017)

cherry-pick: détecte les faux arguments pour --mainline

Les commandes de sélection et de récupération utilisent OPT_INTEGER() pour analyser --mainline. L'analyseur d'actions est assez intelligent pour rejeter les absurdités non numériques, mais il ne sait pas que le comptage des parents commence à 1.

Pire, la valeur "0" ne peut pas être distinguée de la casse non définie, donc un utilisateur qui suppose que le comptage est basé sur 0 recevra un message déroutant:

$ git cherry-pick -m 0 $merge
  error: commit ... is a merge but no -m option was given.

Le diagnostic correct est que "-m 0" ne fait pas référence au premier parent ("-m 1" le fait).

2
VonC

Tout comme le suggère l'erreur. Vous essayez de choisir un commit de fusion, vous devez donc indiquer à git contre quel parent il doit produire le diff qui est ensuite appliqué à la cible.

1
Vampire