Gestern habe ich mir zwei Commits in meinem Hauptzweig ausgesucht, eines davon verursachte Konflikte bei der Zusammenführung, und ich löste sie auf, verpflichtete sie und drängte sie zu Origin. Heute versuche ich, vom Server zu ziehen, wenn folgende Fehlermeldung angezeigt wird:
$ git pull
fatal: You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).
Please, commit your changes before you can merge.
$
Git Status liest:
$ git status
# On branch main
# Your branch is behind 'Origin/main' by 2 commits, and can be fast-forwarded.
#
$
Ich habe folgendes erfolglos versucht:
$ git cherry-pick --continue
usage: git cherry-pick [options] <commit-ish>
$
Irgendeine Idee, wie ich das lösen könnte? Danke im Voraus!
Gelöst mit dem folgenden: rm .git/CHERRY_PICK_HEAD
Ich weiß, dass dies gefährlich ist, da dies keine interne Konsistenz innerhalb von git garantiert, aber bisher keine Probleme für mich ...
Nächstes Mal versuchen Sie git cherry-pick --abort
, sonst sollte das, was Sie getan haben, mehr oder weniger funktionieren.
Wenn git cherry-pick --continue
nicht funktioniert, bedeutet das, dass git zu alt ist: Diese Option wurde für git 1.7.8 (Dezember 2011) in commit 5a5d80f eingeführt.
Es löscht die erste Anweisung von .git/sequencer/toto und führt die restlichen dort aufgelisteten Kirschpicks mit Optionen (denken Sie an "
-s
" und "-X
") aus dem in ".git/sequencer/opts
" aufgeführten Startbefehl aus.
In diesen Tagen (2014) würde dies der Befehl sein, wenn Sie "You have not concluded your cherry-pick
" sehen.
Seit meinem vorherige Antwort von 2014 ist der korrekte Befehl heutzutage (2018) git cherry-pick --quit
.
Und vor Git 2.19 (Q3 2018) konnte "git cherry-pick --quit
" CHERRY_PICK_HEAD
nicht entfernen, obwohl wir nach der Rückkehr nicht mehr in einer Kirschpick-Session sind, was korrigiert wurde.
Siehe Festschreiben 3e7dd99 (16. August 2018) von Nguyễn Thái Ngọc Duy (pclouds
) .
(Zusammengeführt von Junio C Hamano - gitster
- in Festschreiben 39e415c , 20 Aug 2018)
cherry-pick: fix --quit CHERRY_PICK_HEAD nicht löschen
--quit
soll--abort
sein, ohne jedochHEAD
wiederherzustellen.
Wenn SieCHERRY_PICK_HEAD
zurücklassen, könnte dies zu Fehlern führen, dasscherry-pick
noch ausgeführt wird (beispielsweise "git commit --amend
" lehnt die Arbeit ab). Reinige es auch.Bei
--abort
ist dieser Job zum Löschen vonCHERRY_PICK_HEAD
auf "git reset
", sodass wir nichts weiter tun müssen. Fügen wir jedoch zusätzliche Prüfungen in--abort
-Tests hinzu, um dies zu bestätigen.
Eine weitere Option: Mit Git 2.23 (Q3 2019) wird ein _git cherry-pick --continue
_ tatsächlich funktionieren!
Wenn ein Schritt im mehrstufigen Cherry-Pick oder Revert zurückgesetzt oder festgeschrieben wird, konnte das Befehlszeilenskript den aktuellen Status nicht feststellen, der verbessert wurde.
Siehe commit e981bf7 (01. Juli 2019) von Phillip Wood (phillipwood
) .
(Zusammengeführt von Junio C Hamano - gitster
- in Festschreiben 8a4acc5 , 19. Juli 2019)
_
git-Prompt
_: Verbesserung der _cherry-pick
_/revert
ErkennungWenn der Benutzer eine Konfliktlösung mitten in einer Sequenz von Cherry-Picks festlegt oder zurücksetzt, wird _
CHERRY_PICK_HEAD
_/_REVERT_HEAD
_ entfernt, und wenn diese Dateien nicht vorhanden sind, müssen wir überprüfen.git/sequencer/todo
um zu sehen, ob gerade ein Cherry-Pick oder ein Revert durchgeführt wird.Sehen Sie nach, ob ein _
cherry-pick
_ oderrevert
in Bearbeitung ist, wenn der Benutzer eine Konfliktlösung mit '_git commit
_' in der Mitte einer Folge von Auswahl- oder Rückkehrvorgängen festgelegt hat, dann _CHERRY_PICK_HEAD
_/_REVERT_HEAD
_ existiert nicht, daher müssen wir die Dateitodo
lesen.