Nie dokonałeś scalenia (istnieje MERGE_HEAD)

1036

Zrobiłem gałąź o nazwie „f” i zrobiłem kasę do opanowania. Kiedy wypróbowałem git pullpolecenie, otrzymałem ten komunikat:

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

Kiedy próbuję git status, dało mi to:

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

Co powinienem zrobić?

Ankit Suri
źródło

Odpowiedzi:

1917

OK. Problem polega na tym, że poprzednie pobieranie nie zostało scalone automatycznie i przeszło w stan konfliktu. I konflikt nie został poprawnie rozwiązany przed następnym pociągnięciem.

  1. Cofnij scalenie i pociągnij ponownie.

    Aby cofnąć scalenie:

    git merge --abort [Od wersji git 1.7.4]

    git reset --merge [wcześniejsze wersje git]

  2. Rozwiąż konflikt.

  3. Nie zapomnij dodać i zatwierdzić scalenia.

  4. git pull teraz powinno działać dobrze.

Karthik Bose
źródło
2
Próbowałem i dałem mi konflikt w plikach (po ściągnięciu) Automatyczne łączenie aplikacji / views / layouts / application.html.erb Automatyczne łączenie dziennika / development.log CONFLICT (treść): Scalanie konfliktu w dzienniku / development.log Automatyczne łączenie log / restclient.log CONFLICT (treść): Konflikt scalania w log / restclient.log Automatyczne scalanie nie powiodło się; naprawić konflikty, a następnie zatwierdzić wynik. Naprawiłem określone pliki lokalne, a następnie próbowałem „git pull” Pull nie jest możliwy, ponieważ masz nie scalone pliki. Napraw je w drzewie roboczym, a następnie użyj odpowiednio „git add / rm <plik>”, aby zaznaczyć rozdzielczość, lub użyj „git commit -a”.
Ankit Suri
1
@AnkitSuri, czy po naprawieniu konfliktów wystawiłeś je i zatwierdziłeś?
Karthik Bose
1
Spróbowałem i pomogło mi to znów zacząć płynąć. Po przywróceniu spróbowałem „git scaletool”. Bezpośrednio kojarzy się z narzędziem scalania.
CoDe,
4
Nie działa:[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, to naprawdę skończyło się. Ponieważ pracowałem nad SSH, musiałem rozpocząć nową sesję i zrobić git status.
user1429980
97

Jeśli masz pewność, że rozwiązałeś już wszystkie konflikty scalania:

rm -rf .git/MERGE*

Błąd zniknie.

knagode
źródło
2
jeśli usuniesz MERGE_HEAD, czy wynikowe zatwierdzenie nie będzie miało tylko jednego rodzica, więc nie będziesz mieć historii scalonego oddziału?
Jason Goemaat,
2
to, co chciałem
raditya gumay
1
@JasonGoemaat w moim przypadku tymczasowo łączę wiele PR, które nie zostały jeszcze zaakceptowane. Nie planuję zatwierdzać tych połączeń w gałęzi funkcji, potrzebuję ich tylko podczas programowania.
Andy,
Rozwiązałem już swoje konflikty i nadal otrzymywałem ten błąd. Więc polecenie zadziałało dla mnie.
Sibgha
To uratowało mnie przed nieprzyjemną pętlą konfliktu scalania.
Sanka
68

Myślę, że warto wspomnieć, że istnieje wiele scenariuszy, w których wiadomość You have not concluded your merge (MERGE_HEAD exists)może wystąpić, ponieważ wiele osób prawdopodobnie przybyło na tę stronę po wyszukaniu tej wiadomości. Rozdzielczość zależy od tego, jak się tam dostałeś.

git status jest zawsze przydatnym punktem wyjścia.

Jeśli treść została już scalona w sposób satysfakcjonujący i nadal otrzymujesz tę wiadomość, może to być tak proste, jak wykonanie

git add file
git commit

Ale znowu, to naprawdę zależy od sytuacji. Dobrze jest zrozumieć podstawy przed próbą czegokolwiek (ten sam link, który opublikował Terence): Git - Podstawowe konflikty scalania

fantastyczny
źródło
Dziękujemy za pytanie, dla tych z nas, którzy mają prostszy typ problemu. „Status Git” był tym, czego potrzebował początkujący, taki jak ja, aby przypomnieć, że ostatnim krokiem naprawienia konfliktu scalenia było proste polecenie „git commit”.
Dana,
17

Myślę, że to właściwy sposób:

git merge --abort

git fetch --all

Następnie masz dwie opcje:

git reset --hard origin/master

LUB Jeśli jesteś w innym oddziale:

git reset --hard origin/<branch_name>
Badr Bellaj
źródło
2
tylko git merge --abort zadziałał i & git pull wtedy
luky
8

Rozwiązałem konflikty, ale również popełniłem ten komunikat o błędzie git push

Wszystkie konflikty zostały rozwiązane, ale nadal się łączysz.
(użyj „git commit”, aby zakończyć scalanie)

Zrobiłem następujące kroki, aby rozwiązać błąd:

rm -rf .git/MERGE*
git pull origin branch_name 
git push origin branch_name
Taimoor Changaiz
źródło
Co osiąga pushkoniec?
Mark Storer,
6

Próbować

git reset --hard origin/trunk

„pień” to gałąź, do której próbuję dotrzeć.

Nie wiem jak i dlaczego to działa. Miało to coś wspólnego z dokonanym przeze mnie zatwierdzeniem, które zmuszało moje żądania ściągania do scalenia.

Franklin
źródło
5

Spróbuj zmienić dowolny plik tymczasowy. Jak po prostu usuń dowolne miejsce lub dodaj spację, a następnie zatwierdz i wypchnij ten plik.

git dodaj „plik_zmiany_czasowej”

git commit -m „rozwiązywanie problemów z git”

rozwijanie git push origin

A potem spróbuj git pull,

rozwijanie git pull

Mam nadzieję, że to może ci pomóc.

Kazim Noorani
źródło
4

Zablokować cytat

Jeśli próbujesz wyciągnąć z innej gałęzi do swojej gałęzi. Jeśli widzisz ten błąd.

Najpierw powinieneś spróbować wykonać git commit, a następnie wciągnąć inną gałąź do swojej.

  1. „git add”.
  2. git commit
  3. Następnie wykonaj polecenie git pull z wymaganej gałęzi.
Rohith
źródło
3

W moim przypadku miałem wiśniowy kilof, który wywołuje wiele konfliktów scalania, więc postanawiam nie dokończyć wiśniowego kilofu. Odrzuciłem wszystkie moje zmiany. W ten sposób wprowadzam mnie w stan, w którym wystąpił następujący błąd:

Nie dokonałeś scalenia (istnieje MERGE_HEAD

Aby rozwiązać problem, wykonałem następujące polecenie git, które rozwiązało problem.

git cherry-pick --abort
Cosmo Scrivanich
źródło
2

Najlepszym rozwiązaniem jest cofnięcie scalenia i ponowne wykonanie scalenia. Często zmienia się porządek rzeczy. Spróbuj naprawić konflikty i wpaść w bałagan.

Więc cofnij to i połącz ponownie.

Upewnij się, że masz odpowiednie ustawienia narzędzi różnicowych dla swojego środowiska. Jestem na komputerze Mac i używam DIFFMERGE. Myślę, że DIFFMERGE jest dostępny dla wszystkich środowisk. Instrukcje są tutaj: Zainstaluj DIFF Merge na MAC

Mam pomocne w rozwiązywaniu moich konfliktów: Git Basic-Merge-Conflicts

Terence
źródło
1

najpierw użyj, git pullaby scalić repozytorium, zapisz swoją zmianę git commit -m "your commit". następnie wpisz ponownie .

Jack Loner
źródło
0

Zatwierdzanie zmian scalania rozwiązało mój problem:

git commit -m "commit message"
Sai
źródło
-12

To działało dla mnie:

git log
`git reset --hard <089810b5be5e907ad9e3b01f>`
git pull
git status
Plus1
źródło
3
Przede wszystkim spowoduje to usunięcie wszystkich zmian katalogu roboczego. Również wersja na stałe nie jest pomocna, być może coś takiego jak HEAD ^ jest lepsze.
Entomo
@ Plus1 Właśnie tego potrzebuję - usuń moje błędne lokalne zatwierdzenia i zastosuj zmiany w odniesieniu do zmienionego kodu źródłowego. Dziękuję za Twoją odpowiedź!
amuliar
To spowodowało problem w moim przypadku
Shafiq