webentwicklung-frage-antwort-db.com.de

Cherry Pick zeigt an, dass keine -m-Option als Fehler gemeldet wurde

Ich habe zwei Zweigmeister und Entwicklung

Ich muss eine Commit-ID vom Entwicklungszweig im Hauptzweig abrufen, damit ich es mit cherry-pick mache, aber es zeigt mir einen Fehler

$> git cherry-pick cf0d52b

error: Commit cf0d52b900f990300c3aa17936ddbae1476d461a is a merge but no -m option was given.
fatal: cherry-pick failed

Ich erhalte diesen Fehler nicht. Warum kommt dieser Fehler und wie werde ich ihn beseitigen?.

9
Akash Jain

Sie versuchen, eine Zusammenführung cherry-pick. Eine Zusammenführung wird bei mehreren Eltern aufgebaut. Sie müssen die übergeordnete ID für die Zusammenführung angeben.

Sie müssen eine der folgenden Angaben machen:

-m parent-number--mainline parent-number

Normalerweise können Sie keine Zusammenführung auswählen, weil Sie nicht wissen, auf welcher Seite der Zusammenführung die Hauptlinie sein soll.

Diese Option gibt die übergeordnete Nummer (beginnend mit 1) der Hauptlinie an und ermöglicht Cherry-Pick, die Änderung relativ zu dem angegebenen übergeordneten Element zu wiederholen.


Wie finde ich heraus, was die engagierten Eltern sind?

Verwenden Sie den Befehl git show, um die übergeordneten Commits anzuzeigen, und wählen Sie dann den übergeordneten Index oder den SHA-1 aus

 enter image description here

10
CodeWizard

Diese Option gibt die übergeordnete Nummer an (ab 1)

Bis Git 2.13 (Q2 2017) konnte diese Zahl 0 sein! (was falsch ist)

Siehe Festschreiben von b16a991 (15. März 2017) von Jeff King (peff) .
(Zusammengeführt von Junio ​​C Hamano - gitster - in Commit 9c96637 , 17. März 2017)

cherry-pick: falsche Argumente für --mainline erkennen

Die Befehle cherry-pick und revert verwenden OPT_INTEGER(), um --mainline zu analysieren. Der Aktien-Parser ist intelligent genug, um nicht-numerischen Unsinn abzulehnen, aber er weiß nicht, dass die Elternzählung bei 1 beginnt.

Schlimmer noch, der Wert "0" ist nicht von dem nicht gesetzten Fall zu unterscheiden, sodass ein Benutzer, der davon ausgeht, dass die Zählung auf 0 basiert, eine verwirrende Meldung erhält:

$ git cherry-pick -m 0 $merge
  error: commit ... is a merge but no -m option was given.

Die richtige Diagnose lautet, dass "-m 0" nicht auf das erste übergeordnete Element verweist ("-m 1").

2
VonC

Genau wie der Fehler vermuten lässt. Sie versuchen, ein Merge-Commit auszuwählen, damit Sie sagen können, für welches übergeordnete Objekt das Diff erzeugt werden soll, das dann auf das Ziel angewendet wird.

1
Vampire