git cherry-pick ne fonctionne pas

J'essaie de choisir un commit de master et de l'introduire dans la branche de production actuelle. Cependant, quand j'exécute git cherry-pick <SHA-hash>, je reçois juste ce message:

# On branch prod_20110801
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#   site/test-result/
 nothing added to commit but untracked files present (use "git add" to track)
 The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:

    git commit --allow-empty

Otherwise, please use 'git reset'

Note: j'ai essayé de faire une réinitialisation et une réinitialisation-hard HEAD^, et aucun ne semblait changer quoi que ce soit.

Je suis confus quant à la raison pour laquelle cela ne fonctionne pas pour moi.

Tout aperçu, conseil ou idée sur la façon de résoudre ce problème serait utile~!

77
demandé sur Jay Taylor 2011-08-16 03:33:21

4 réponses

Git résout le cherry-pick en tant que no-op - tous les changements introduits par ce commit ont été introduits par un commit sur votre branche actuelle. (Ou C'est ce que pense git, de toute façon.) Vérifiez que le commit que vous choisissez n'a pas déjà été fusionné d'une manière ou d'une autre, en tant que Fusion, rebase/cherry-pick ou patch fragmenté. (Utilisez git show <commit-id> pour voir le diff.)

99
répondu cdhowie 2011-08-15 23:36:05

Dans mon cas, cela me rendait fou, car il était tout à fait évident que le commit spécifique que je voulais choisir avait pas été fusionné dans ma branche actuelle.

Il s'avère que quelqu'un avait déjà choisi le commit une semaine auparavant. Les Changements , mais pas le SHA spécifique, étaient déjà dans ma branche actuelle, et je ne les avais pas remarqués.

Vérifiez le(S) fichier (s) que vous essayez de sélectionner cherry. S'ils ont déjà les modifications, une version du commit a déjà été sélectionné ou ajouté d'une autre manière. Il n'est donc pas nécessaire de le cueillir à nouveau.

8
répondu pkamb 2017-07-11 17:07:22

Notez Également que l'ajout d'un fichier vide (par exemple, .gitkeep) de l'arbre est considéré par cherry-pick comme un vide s'engager.

4
répondu Neamar 2016-05-09 12:38:14

Alors, voici encore une autre Situation confuse où cela peut survenir: j'ai eu ce qui suit:

capture d'écran du journal git

J'essayais de choisir 9a7b12e qui n'est apparemment rien-il a même essayé de me dire sur cette ligne dans la sortie du journal git que 4497428 était ce que je voulais vraiment. (Ce que j'ai fait était juste cherché le message de validation et a attrapé le premier hachage que j'ai vu qui l'avait). Quoi qu'il en soit, je veux juste faire savoir aux gens qu'il y a une autre façon que vous pouvez être trompé en essayant de cerise choisir un non op.

1
répondu msouth 2017-07-20 19:01:29