Wie können Sie die Zusammenführung einer Datei abschließen?

102

Nachdem ich eine Datei in Git zusammengeführt hatte, habe ich versucht, das Repository abzurufen, aber es ist ein Fehler aufgetreten:

Sie haben Ihre Fusion nicht abgeschlossen. (MERGE_HEAD existiert)

Wie schließt man eine Fusion ab?

Muaz Al-Jarhi
quelle

Antworten:

94

Überprüfen Sie den Status ( git status) Ihres Repositorys. Jede nicht zusammengeführte Datei (nachdem Sie Konflikte selbst gelöst haben) sollte hinzugefügt werden ( git add), und wenn es keine nicht zusammengeführte Datei gibt, sollten Sie dies tungit commit

MBO
quelle
11
Aber was ist, wenn alles festgeschrieben ist ( git statuszeigt ein sauberes Arbeitsverzeichnis) und der obige Fehler immer noch auftritt?
Marius Soutier
1
@Marius Stellen Sie sicher, dass Sie Standard git statusund keinen Alias ​​ausführen, der Nachrichten herausfiltert. In der aktuellen Version wird beim Ausführen des Git-Status die Meldung angezeigt, was Sie tun müssen, um die Zusammenführung abzuschließen. Und wenn Sie absolut sicher sind, dass alles zusammengeführt wurde und Sie nichts verlieren, können Sie einfach Dateien in .git / MERGE * entfernen, in denen gespeichert wird, was Sie zusammenführen wollten, und die Standard-Commit-Nachricht für diese Zusammenführung
MBO
1
Danke, das habe ich schließlich getan, aber irgendwie scheint das fehlerhaft zu sein. Wie kann ein MERGE_HEAD existieren, wenn Sie alles zusammengeführt und festgeschrieben haben?
Marius Soutier
2
Ja, ich hatte gerade das gleiche Problem wie Marius, hatte eine Fusion durchgeführt, die Konflikte gelöst, aber jetzt (irgendwie) nichts zu begehen. Musste die MERGE * -Dateien wie vorgeschlagen manuell löschen.
Simon East
@ Johndpope Power ("tnx", 100)
Knagode
31

Hinweis und Aktualisierung:

Seit Git1.7.4 (Januar 2011) haben Sie git merge --abortauch " git reset --merge", wenn eine Zusammenführung durchgeführt wird.

Aber wenn Sie die Zusammenführung abschließen möchten, während irgendwie nichts mehr hinzugefügt werden muss, kann ein Rohöl rm -rf .git/MERGE*ausreichen, damit Git die aktuelle Zusammenführung vergisst.

VonC
quelle
Wenn Sie MERGE_HEAD entfernen, hat das resultierende Commit dann nicht nur ein übergeordnetes Element, sodass Sie nicht den Verlauf des zusammengeführten Zweigs haben?
Jason Goemaat
@JasonGoemaat Wenn man bedenkt, dass wir versuchen, die Zusammenführung abzubrechen , würde es sowieso kein "resultierendes Commit" geben.
VonC
20

Die einfachste Lösung, die ich dafür gefunden habe:

git commit -m "fixing merge conflicts"
git push
user3127648
quelle
Eigentlich hat -m nicht funktioniert, es hat ohne -m funktioniert.
Aleksandar Pavić
@ Muaz-Al-Jarhi Sie sollten sich die Antwort von
user3127648
Könnten Sie bitte erklären, was dies tut?
Billal Begueradj
-m ist nur die Flagge zum
Einfügen
1

Wenn dieser Fehler in SourceTree auftritt, gehen Sie zu Aktionen> Konflikte lösen> Zusammenführung neu starten.

Die verwendete SourceTree-Version ist 1.6.14.0

Cebu CM-Lösungen
quelle
0

Ich hatte den gleichen Fehler und habe den Artikel auf Google befolgt, der mein Problem löst. Sie haben Ihre Fusion nicht abgeschlossen

Nirju
quelle
Ein Link zu einer Lösung ist immer willkommen. Bitte fügen Sie Ihrer Antwort die wesentlichen Informationen hinzu, da der Link möglicherweise veraltet ist.
Slfan