J'essaye de choisir un commit de master et de l'introduire dans la branche de production actuelle. Cependant, lorsque 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'
Remarque: j'ai essayé de faire une réinitialisation et une réinitialisation --hard HEAD ^, et aucun des deux n'a semblé changer quoi que ce soit.
Je ne comprends pas pourquoi 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 ~!
git
branching-and-merging
cherry-pick
Jay Taylor
la source
la source
Réponses:
Git résout le cherry-pick comme un 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 sélectionnez à la cerise n'a pas déjà été fusionné d'une manière ou d'une autre, en tant que correctif approprié de fusion, de rebase / sélection de cerise ou de patch au coup par coup. (Utilisez
git show <commit-id>
pour voir le diff.)la source
Dans mon cas, cela me rendait fou, car il était tout à fait évident que le commit spécifique que je voulais sélectionner n'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. S'ils ont déjà les modifications, une version du commit a déjà été choisie ou ajoutée d'une autre manière. Il n'est donc pas nécessaire de le cueillir à nouveau.
la source
git log --graph --pretty --decorate --oneline
pour voir si un SHA donné est dans ma branche ou non. Voir ma réponse ci-dessous sur la façon dont vous pouvez également vous mêler en pensant que le message de validation est indicatif du changement - il y a une situation où ce n'est pas le cas, et c'est ce qui m'a amené à cette question à l'origine. Le cerveau a tendance à faire ces raccourcis et il peut parfois revenir vous mordre.Notez également que l'ajout d'un fichier vide (par exemple
.gitkeep
) à l'arborescence est considéré par cherry-pick comme un commit vide.la source
Alors, voici encore une autre situation déroutante où cela peut survenir: j'ai eu ce qui suit:
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, c'est juste chercher le message de validation et attraper le premier hachage que j'ai vu qui l'avait). Quoi qu'il en soit, je veux juste faire savoir aux gens qu'il existe un autre moyen de se faire tromper en essayant de choisir un no op.
la source