Ich versuche, ein Commit vom Master auszuwählen und es in den aktuellen Produktionszweig zu bringen. Wenn ich jedoch ausführe git cherry-pick <SHA-hash>
, erhalte ich nur die folgende Meldung:
# 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'
Hinweis: Ich habe versucht, einen Reset und einen Reset durchzuführen - hard HEAD ^, und keiner schien etwas zu ändern.
Ich bin verwirrt, warum das bei mir nicht funktioniert.
Alle Einsichten, Ratschläge oder Ideen zur Lösung dieses Problems wären hilfreich ~!
git
branching-and-merging
cherry-pick
Jay Taylor
quelle
quelle
Antworten:
Git löst den Cherry-Pick als No-Op auf - alle durch dieses Commit eingeführten Änderungen wurden durch ein Commit in Ihrem aktuellen Zweig eingeführt. (Oder Git denkt das jedenfalls.) Stellen Sie sicher, dass das Commit, das Sie auswählen, noch nicht irgendwie zusammengeführt wurde, entweder als ordnungsgemäßes Zusammenführen, Rebase / Cherry-Pick oder als Stückchen-Patch. (Verwenden Sie
git show <commit-id>
, um den Unterschied zu sehen.)quelle
In meinem Fall hat mich das verrückt gemacht, da es ziemlich offensichtlich war, dass das spezifische Commit, das ich auswählen wollte, nicht in meinem aktuellen Zweig zusammengeführt wurde.
Es stellte sich heraus, dass jemand bereits eine Woche zuvor das Commit ausgewählt hatte. Die Änderungen , aber nicht die spezifische SHA, befanden sich bereits in meiner aktuellen Niederlassung, und ich hatte sie nicht bemerkt.
Überprüfen Sie die Datei (en), die Sie auswählen möchten. Wenn die Änderungen bereits vorhanden sind, wurde bereits eine Version des Commits ausgewählt oder auf andere Weise hinzugefügt. Es besteht also keine Notwendigkeit, es erneut zu pflücken.
quelle
git log --graph --pretty --decorate --oneline
zu sehen, ob sich ein bestimmter SHA in meiner Niederlassung befindet oder nicht. In meiner Antwort unten erfahren Sie, wie Sie auch durcheinander geraten können, wenn Sie glauben, dass die Commit-Nachricht auf die Änderung hinweist. Es gibt eine Situation, in der dies nicht der Fall ist, und das hat mich ursprünglich zu dieser Frage geführt. Das Gehirn neigt dazu, diese Abkürzungen zu machen, und sie können gelegentlich zurückkommen, um dich zu beißen.Beachten Sie auch, dass das Hinzufügen einer leeren Datei (z. B.
.gitkeep
) zum Baum von Cherry-Pick als leeres Commit betrachtet wird.quelle
Also, hier ist noch eine andere verwirrende Situation, in der dies auftreten kann: Ich hatte Folgendes:
Ich habe versucht, 9a7b12e auszuwählen, was anscheinend nichts ist - es hat sogar versucht, mir in dieser Zeile in der Git-Protokollausgabe zu sagen, dass 4497428 das war, was ich wirklich wollte. (Was ich getan habe, war nur nach der Commit-Nachricht zu suchen und den ersten Hash zu greifen, den ich gesehen habe). Wie auch immer, ich möchte nur die Leute wissen lassen, dass es einen anderen Weg gibt, wie man dazu verleitet werden kann, einen No-Op zu wählen.
quelle