Git “Sie haben Ihre Zusammenführung noch nicht abgeschlossen” und nichts zu begehen?

Lesezeit: 3 Minuten

Immer wenn ich versuche, Git einzufügen, bekomme ich Folgendes:

You have not concluded your merge (MERGE_HEAD exists).
Please, commit your changes before you can merge.

Betrieb git status Ich bekomme:

# On branch master
nothing to commit (working directory clean)

Oder laufen git ls-files -u Ich bekomme nichts.

Betrieb git add .und ein erneuter Versuch macht keinen Unterschied.

Was ist los?

Okay, ich habe endlich eine Antwort gefunden: git commit -m "Test" anscheinend behoben. Das Ergebnis war ein leerer Commit ohne jegliche Änderungen. Sogar Github zeigt ein leeres Commit, aber es funktioniert.

  • Für mich wurde dies als der Commit angezeigt, der den Zusammenführungspunkt markiert, daher wäre eine Nachricht wie “Merging dev into master” angemessener als “Test”.

    – Jeremy Herrmann

    23. Oktober 2012 um 14:56 Uhr

  • Wow. Kann sich jetzt jemand erklären warum das aber funktioniert git commit nicht?

    – Benutzer1205577

    9. Dezember 2014 um 3:09 Uhr

Benutzer-Avatar
dahlbyk

Hatten Sie am Ende ein leeres Merge-Commit (zwei Eltern) oder nur ein leeres Commit? Im letzteren Fall hätten Sie löschen können .git/MERGE_HEAD.

Aktualisieren: Anstatt zu löschen MERGE_HEAD von Hand könnte man auch verwenden git merge --abort (ab git 1.7.4) oder git reset --merge (ab git 1.6.2).

Es ist auch erwähnenswert, dass Sie mindestens ab Git 1.8.3 (vielleicht früher?) a sehen sollten status Nachricht wie diese, wenn eine tatsächliche Zusammenführung im Gange ist und festgeschrieben werden muss (falls Sie angegeben haben --no-commitzum Beispiel):

# On branch master
# All conflicts fixed but you are still merging.
#   (use "git commit" to conclude merge)
#
nothing to commit, working directory clean

Wenn Sie dies nicht sehen und trotzdem erhalten MERGE_HEAD Achtung, da ist etwas durcheinander geraten und das sollten Sie wohl einfach tun --abort um wieder in einen sauberen Zustand zu kommen.

Zusätzliche Details aus Kommentaren

Während einer Zusammenführung erstellt Git eine MERGE_HEAD-Datei im Stammverzeichnis des .git-Ordners (neben HEAD, ORIG_HEAD, wahrscheinlich FETCH_HEAD usw.), um Informationen über die laufende Zusammenführung zu verfolgen (insbesondere die SHA(s) des/der Commit(s). ) mit dem aktuellen HEAD zusammengeführt). Wenn Sie das löschen, wird Git nicht länger davon ausgehen, dass eine Zusammenführung im Gange ist. Wenn wirklich eine Zusammenführung im Gange ist, möchten Sie diese Datei natürlich nicht löschen.

  • Diese Lösung scheint mir bequemer zu sein, als leere Zusammenführungen zu begehen, da dies bei Git so oft vorkommt.

    – CM

    2. Januar 2013 um 17:55 Uhr

  • Danke dafür. Ich wünschte, ich hätte es wirklich verstanden. Wenn ich Zeit habe, schaue ich mir die Unterlagen an.

    – Taylor

    4. September 2013 um 4:30 Uhr

  • Während einer Zusammenführung erstellt git eine MERGE_HEAD Datei im Stammverzeichnis der .git Ordner (neben HEAD, ORIG_HEADwahrscheinlich FETCH_HEADusw.), um Informationen über die laufende Zusammenführung zu verfolgen (insbesondere die SHA(s) der Commits, die mit der aktuellen zusammengeführt werden HEAD). Wenn Sie das löschen, wird Git nicht länger davon ausgehen, dass eine Zusammenführung im Gange ist. Offensichtlich, wenn a merge Ja wirklich ist in Bearbeitung, dann würden Sie diese Datei nicht löschen wollen.

    – dahlbyk

    5. September 2013 um 3:25 Uhr

Benutzer-Avatar
Andrej Konstantinow

Verwenden git reset Befehl, ohne Parameter.
Dokumente

1312450cookie-checkGit “Sie haben Ihre Zusammenführung noch nicht abgeschlossen” und nichts zu begehen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy