Sie haben Ihre Zusammenführung noch nicht abgeschlossen (MERGE_HEAD existiert)


1036

Ich habe einen Zweig namens 'f' erstellt und eine Kasse gemacht, um ihn zu meistern. Als ich den git pullBefehl versuchte, bekam ich folgende Nachricht:

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

Als ich das probierte git status, gab es mir folgendes:

On branch master
# Your branch and 'origin/master' have diverged,
# and have 1 and 13 different commit(s) each, respectively.
#
# Changes to be committed:
#
#   modified:   app/assets/images/backward.png
#   modified:   app/assets/images/forward.png
#   new file:   app/assets/images/index_background.jpg
#   new file:   app/assets/images/loading.gif
#   modified:   app/assets/images/pause.png
#   modified:   app/assets/images/play.png
#   new file:   app/assets/javascripts/jquery-ui-bootstrap.js
#   new file:   app/assets/stylesheets/jquery-ui-bootstrap.css
#   modified:   app/controllers/friends_controller.rb
#   modified:   app/controllers/plays_controller.rb
#   modified:   app/mailers/invite_friends_mailer.rb
#   modified:   app/mailers/send_plays_mailer.rb
#   modified:   app/mailers/shot_chart_mailer.rb
#   modified:   app/views/friends/show_plays.html.erb
#   modified:   app/views/layouts/application.html.erb
#   modified:   app/views/plays/_inbox_table.html.erb
#   modified:   app/views/plays/show.html.erb
#   modified:   app/views/welcome/contact_form.html.erb
#   modified:   app/views/welcome/index.html.erb
#   modified:   log/development.log
#   modified:   log/restclient.log
#   new file:   tmp/cache/assets/C1A/C00/sprockets%2Fb7901e0813446f810e560158a1a97066
#   modified:   tmp/cache/assets/C64/930/sprockets%2F65aa1510292214f4fd1342280d521e4c
#   new file:   tmp/cache/assets/C73/C40/sprockets%2F96912377b93498914dd04bc69fa98585
#   new file:   tmp/cache/assets/CA9/090/sprockets%2Fa71992733a432421e67e03ff1bd441d8
#   new file:   tmp/cache/assets/CCD/7E0/sprockets%2F47125c2ebd0e8b29b6511b7b961152a1
#   modified:   tmp/cache/assets/CD5/DD0/sprockets%2F59d317902de6e0f68689899259caff26
#   modified:   tmp/cache/assets/CE3/080/sprockets%2F5c3b516e854760f14eda2395c4ff2581
#   new file:   tmp/cache/assets/CED/B20/sprockets%2F423772fde44ab6f6f861639ee71444c4
#   new file:   tmp/cache/assets/D0C/E10/sprockets%2F8d1f4b30c6be13017565fe1b697156ce
#   new file:   tmp/cache/assets/D12/290/sprockets%2F93ae21f3cdd5e24444ae4651913fd875
#   new file:   tmp/cache/assets/D13/FC0/sprockets%2F57aad34b9d3c9e225205237dac9b1999
#   new file:   tmp/cache/assets/D1D/DE0/sprockets%2F5840ff4283f6545f472be8e10ce67bb8
#   new file:   tmp/cache/assets/D23/BD0/sprockets%2F439d5dedcc8c54560881edb9f0456819
#   new file:   tmp/cache/assets/D24/570/sprockets%2Fb449db428fc674796e18b7a419924afe
#   new file:   tmp/cache/assets/D28/480/sprockets%2F9aeec798a04544e478806ffe57e66a51
#   new file:   tmp/cache/assets/D3A/ED0/sprockets%2Fcd959cbf710b366c145747eb3c062bb4
#   new file:   tmp/cache/assets/D3C/060/sprockets%2F363ac7c9208d3bb5d7047f11c159d7ce
#   new file:   tmp/cache/assets/D48/D00/sprockets%2Fe23c97b8996e7b5567a3080c285aaccb
#   new file:   tmp/cache/assets/D6A/900/sprockets%2Fa5cece9476b21aa4d5f46911ca96c450
#   new file:   tmp/cache/assets/D6C/510/sprockets%2Fb086a020de3c258cb1c67dfc9c67d546
#   new file:   tmp/cache/assets/D70/F30/sprockets%2Facf9a6348722adf1ee7abbb695603078
#   new file:   tmp/cache/assets/DA3/4A0/sprockets%2F69c26d0a9ca8ce383e20897cefe05aa4
#   new file:   tmp/cache/assets/DA7/2F0/sprockets%2F61da396fb86c5ecd844a2d83ac759b4b
#   new file:   tmp/cache/assets/DB9/C80/sprockets%2F876fbfb9685b2b8ea476fa3c67ae498b
#   new file:   tmp/cache/assets/DBD/7A0/sprockets%2F3640ea84a1dfaf6f91a01d1d6fbe223d
#   new file:   tmp/cache/assets/DC1/8D0/sprockets%2Fe5ee1f1cfba2144ec00b1dcd6773e691
#   new file:   tmp/cache/assets/DCC/E60/sprockets%2Fd6a95f601456c93ff9a1bb70dea3dfc0
#   new file:   tmp/cache/assets/DF1/130/sprockets%2Fcda4825bb42c91e2d1f1ea7b2b958bda
#   new file:   tmp/cache/assets/E23/DE0/sprockets%2Fb1acc25c28cd1fabafbec99d169163d3
#   new file:   tmp/cache/assets/E23/FD0/sprockets%2Fea3dbcd1f341008ef8be67b1ccc5a9c5
#   modified:   tmp/cache/assets/E4E/AD0/sprockets%2Fb930f45cfe7c6a8d0efcada3013cc4bc
#   new file:   tmp/cache/assets/E63/7D0/sprockets%2F77de495a665c3ebcb47befecd07baae6
#   modified:   tmp/pids/server.pid
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   Coachbase/
#   log/development.log.orig
#   log/restclient.log.orig

Was sollte ich tun?

Antworten:


1917

OK. Das Problem ist, dass Ihr vorheriger Pull nicht automatisch zusammengeführt werden konnte und in den Konfliktzustand überging. Und der Konflikt wurde vor dem nächsten Zug nicht richtig gelöst.

  1. Machen Sie die Zusammenführung rückgängig und ziehen Sie erneut.

    So machen Sie eine Zusammenführung rückgängig:

    git merge --abort [Seit Git Version 1.7.4]

    git reset --merge [frühere Git-Versionen]

  2. Lösen Sie den Konflikt.

  3. Vergessen Sie nicht, die Zusammenführung hinzuzufügen und festzuschreiben.

  4. git pull jetzt sollte gut funktionieren.


2
Ich habe versucht und mir einen Konflikt in Dateien (beim Ziehen) gegeben. Automatisches Zusammenführen von app / views / layouts / application.html.erb Automatisches Zusammenführen von log / development.log KONFLIKT (Inhalt): Konflikt in log / development.log zusammenführen Automatisches Zusammenführen log / restclient.log KONFLIKT (Inhalt): Zusammenführungskonflikt in log / restclient.log Automatische Zusammenführung fehlgeschlagen; Beheben Sie Konflikte und schreiben Sie das Ergebnis fest. Ich habe die angegebenen lokalen Dateien repariert und dann versucht, "Git Pull" zu ziehen. Pull ist nicht möglich, da Sie nicht zusammengeführte Dateien haben. Bitte korrigieren Sie sie im Arbeitsbaum und verwenden Sie dann 'git add / rm <Datei>', um die Auflösung zu markieren, oder verwenden Sie 'git commit -a'.
Ankit Suri

1
@AnkitSuri, Nachdem Sie die Konflikte behoben haben, haben Sie sie inszeniert und festgeschrieben?
Karthik Bose

1
Ich habe es versucht und es hilft mir, wieder in Fluss zu kommen. Nach dem Zurückkehren habe ich "git mergetool" ausprobiert. Es wird direkt mit dem Zusammenführungswerkzeug verknüpft.
CoDe

4
Funktioniert nicht:[env]$ git merge --abort fatal: You have not concluded your merge (MERGE_HEAD exists). Please, commit your changes before you can merge.
user1429980

1
@KarthikBose, es hat tatsächlich funktioniert. Da ich über SSH arbeitete, musste ich eine neue Sitzung beginnen und eine durchführen git status.
user1429980

97

Wenn Sie sicher sind, dass Sie bereits alle Zusammenführungskonflikte gelöst haben:

rm -rf .git/MERGE*

Und der Fehler wird verschwinden.


2
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

2
das was ich wollte
raditya gumay

1
@JasonGoemaat In meinem Fall füge ich vorübergehend mehrere PRs zusammen, die noch nicht akzeptiert wurden. Ich habe nicht vor, diese Zusammenführungen für den Feature-Zweig zu übernehmen, ich brauche sie nur während der Entwicklung.
Andy

Ich hatte meine Konflikte bereits gelöst und bekam immer noch diesen Fehler. Also hat der Befehl für mich funktioniert.
Sibgha

Dies rettete mich vor einer bösen Zusammenführungskonfliktschleife.
Schlitten

68

Ich denke, es ist erwähnenswert, dass es zahlreiche Szenarien gibt, in denen die Nachricht You have not concluded your merge (MERGE_HEAD exists)auftreten könnte, da wahrscheinlich viele Personen auf dieser Seite angekommen sind, nachdem sie nach dieser Nachricht gesucht haben. Die Auflösung hängt davon ab, wie Sie dorthin gekommen sind.

git status ist immer ein nützlicher Ausgangspunkt.

Wenn Sie den Inhalt bereits zu Ihrer Zufriedenheit zusammengeführt haben und diese Nachricht weiterhin erhalten, kann dies so einfach wie möglich sein

git add file
git commit

Aber auch hier kommt es wirklich auf die Situation an. Es ist eine gute Idee, die Grundlagen zu verstehen, bevor Sie etwas versuchen (derselbe Link, den Terence gepostet hat): Git - Basic Merge Conflicts


Vielen Dank, dass Sie dies für diejenigen von uns mit der einfacheren Art von Problem gestellt haben. "Git-Status" war das, was ein Neuling wie ich brauchte, um daran erinnert zu werden, dass der letzte Schritt zum Beheben einer Konfliktzusammenführung der einfache Befehl "git commit" war.
Dana

17

Ich denke das ist der richtige Weg:

git merge --abort

git fetch --all

Dann haben Sie zwei Möglichkeiten:

git reset --hard origin/master

ODER Wenn Sie sich in einem anderen Zweig befinden:

git reset --hard origin/<branch_name>

2
nur git merge - abort hat sich selbst gearbeitet && git pull then
luky

8

Ich habe Konflikte gelöst und auch begangen, aber immer noch diese Fehlermeldung erhalten git push

Alle Konflikte wurden behoben, aber Sie werden immer noch zusammengeführt.
(Verwenden Sie "git commit", um die Zusammenführung abzuschließen.)

Ich habe die folgenden Schritte ausgeführt, um den Fehler zu beheben:

rm -rf .git/MERGE*
git pull origin branch_name 
git push origin branch_name

Was leistet das pusham Ende?
Mark Storer

6

Versuchen

git reset --hard origin/trunk

'Kofferraum' ist der Zweig, zu dem ich zu gelangen versuche.

Ich weiß nicht wie oder warum das funktioniert. Es hatte etwas mit einem Commit zu tun, das meine Pull-Anfragen zu einer Zusammenführung zwang.


5

Versuchen Sie, eine temporäre Datei zu ändern. Entfernen Sie einfach einen beliebigen Speicherplatz oder fügen Sie Speicherplatz hinzu, und schreiben Sie diese Datei fest und übertragen Sie sie.

git add 'temporal_change_file'

git commit -m "Git-Problem wird behoben"

Git Push Ursprung entwickeln

Und dann versuchen Sie es mit Git Pull,

Git Pull Ursprung entwickeln

Hoffe das könnte dir helfen.


4

Blockquote

Wenn Sie versuchen, von einem anderen Zweig in Ihren Zweig zu ziehen. Wenn Sie diesen Fehler sehen.

Zuerst sollten Sie versuchen, Git Commit auszuführen, und dann einen anderen Zweig in Ihren ziehen.

  1. "git add."
  2. Git Commit
  3. Ziehen Sie dann git aus dem gewünschten Zweig.

3

In meinem Fall hatte ich einen Kirschpflücker, der eine Reihe von Zusammenführungskonflikten hervorrief, daher entscheide ich mich, den Kirschpflücker nicht zu vervollständigen. Ich habe alle meine Änderungen verworfen. Dadurch wurde ich in einen Zustand versetzt, in dem ich den folgenden Fehler erhalten habe:

Sie haben Ihre Zusammenführung nicht abgeschlossen (MERGE_HEAD existiert

Um das Problem zu beheben, habe ich den folgenden git-Befehl ausgeführt, mit dem das Problem behoben wurde.

git cherry-pick --abort

2

Der beste Ansatz besteht darin, die Zusammenführung rückgängig zu machen und die Zusammenführung erneut durchzuführen. Oft wird die Reihenfolge der Dinge durcheinander gebracht. Versuchen Sie, die Konflikte zu beheben und sich selbst in Unordnung zu bringen.

Machen Sie es also rückgängig und führen Sie es erneut zusammen.

Stellen Sie sicher, dass Sie die entsprechenden Diff-Tools für Ihre Umgebung eingerichtet haben. Ich bin auf einem Mac und benutze DIFFMERGE. Ich denke, DIFFMERGE ist für alle Umgebungen verfügbar. Anweisungen finden Sie hier: Installieren Sie DIFF Merge auf einem MAC

Ich habe diese hilfreiche Lösung für meine Konflikte: Git Basic-Merge-Conflicts


1

Verwenden Sie git pullzum Zusammenführen des Repositorys zunächst Ihre Änderung. Geben Sie sie dann erneut ein git commit -m "your commit".


0

Änderungen am Commit Merge haben mein Problem gelöst:

git commit -m "commit message"

-12

Das hat bei mir funktioniert:

git log
`git reset --hard <089810b5be5e907ad9e3b01f>`
git pull
git status

3
Dadurch werden zunächst alle Änderungen am Arbeitsverzeichnis gelöscht. Auch die fest codierte Version ist nicht hilfreich, vielleicht ist so etwas wie HEAD ^ besser.
Entomo

@ Plus1 Dies ist genau das, was ich brauche - entfernen Sie meine falschen lokalen Commits und übernehmen Sie Änderungen in Bezug auf den geänderten Quellcode. Vielen Dank für Ihre Antwort!
eigenartig

Es verursachte ein Problem in meinem Fall
Shafiq
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.