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.
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é.
Utilisez la commande git show
pour afficher les parents de livraison, puis choisissez l’index des parents ou le SHA-1.
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).
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.