Birleşmenizi sonuçlandırmadınız (MERGE_HEAD var)


1036

'F' adında bir şube yaptım ve ustalaşmak için bir ödeme yaptım. git pullKomutu denediğimde şu mesajı aldım:

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

Denediğimde git statusbana şunları verdi:

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

Ne yapmalıyım?

Yanıtlar:


1917

TAMAM. Sorun, önceki çekmeniz otomatik olarak birleştirilemedi ve çakışma durumuna geçti. Ve çatışma bir sonraki çekmeden önce düzgün bir şekilde çözülmedi.

  1. Birleştirme işlemini geri alın ve tekrar çekin.

    Bir birleştirmeyi geri almak için:

    git merge --abort [Git 1.7.4 sürümünden beri]

    git reset --merge [önceki git sürümleri]

  2. Çatışmayı çözün.

  3. Birleştirme eklemeyi ve taahhüt etmeyi unutmayın.

  4. git pull şimdi iyi çalışmalı.


2
Denedim ve dosyalarda çakışma verdi (çekme sırasında) Otomatik birleştirme uygulaması / views / layouts / application.html.erb Otomatik birleştirme günlüğü / development.log CONFLICT (içerik): Günlükte birleştirme çakışması / development.log Otomatik birleştirme log / restclient.log CONFLICT (içerik): log / restclient.log dosyasında birleştirme çakışması Otomatik birleştirme başarısız oldu; anlaşmazlıkları düzeltin ve ardından sonucu kesin. Belirtilen yerel dosyaları düzelttim ve birleştirilmemiş dosyalarınız olduğu için 'git pull' komutunu denedim. Lütfen bunları çalışma ağacında düzeltin ve sonra çözünürlüğü işaretlemek için 'git add / rm <file>' kullanın veya 'git commit -a' kullanın.
Ankit Suri

1
@AnkitSuri, Çatışmaları düzelttikten sonra, onları sahneye koydun ve taahhüt ettin mi?
Karthik Bose

1
Denedim ve tekrar akışa girmeme yardımcı oldu. Geri döndükten sonra "git mergetool" denedim. Doğrudan birleştirme aracıyla ilişkilendirilir.
CoDe

4
[env]$ git merge --abort fatal: You have not concluded your merge (MERGE_HEAD exists). Please, commit your changes before you can merge.
Çalışmıyor

1
@KarthikBose, aslında işe yaradı. SSH üzerinde çalıştığımdan beri, yeni bir oturum başlatmak ve bir git status.
user1429980

97

Tüm birleştirme çakışmalarını zaten çözdüğünüzden eminseniz:

rm -rf .git/MERGE*

Ve hata kaybolacak.


2
MERGE_HEAD kaldırırsanız, sonuçta elde edilen işlemin yalnızca bir üst öğesi olmaz, böylece birleştirilmiş dalın geçmişine sahip olmazsınız?
Jason Goemaat

2
istediğim bu
raditya gumay

1
@JasonGoemaat benim durumumda geçici olarak henüz kabul edilmemiş birden fazla PR ile birleşiyorum. Bu birleşmeleri özellik dalında yapmayı planlamıyorum, sadece geliştirme sırasında onlara ihtiyacım var.
Andy

Çatışmalarımı zaten çözmüştüm ve hala bu hatayı alıyordum. Komut benim için çalıştı.
Sibgha

Bu beni kötü birleşme çatışması döngüsünden kurtardı.
Kızak

68

Sanırım mesajın You have not concluded your merge (MERGE_HEAD exists)meydana gelebileceği sayısız senaryo olduğunu belirtmek gerekir , çünkü birçok kişi muhtemelen bu mesajı aradıktan sonra bu sayfaya ulaşmıştır. Çözünürlük oraya nasıl geldiğinize bağlı olacaktır.

git status her zaman yararlı bir başlangıç ​​noktasıdır.

İçeriği zaten memnuniyetinize göre birleştirdiyseniz ve hala bu mesajı alıyorsanız, yapmak kadar basit olabilir

git add file
git commit

Ama yine de, gerçekten duruma bağlı. Herhangi bir şeyi denemeden önce temel bilgileri anlamak iyi bir fikirdir (Terence'ın yayınladığı aynı bağlantı): Git - Temel Birleştirme Çakışmaları


Bunu daha basit bir sorun türü olanlarımız için sorduğunuz için teşekkür ederiz. "Git durumu" benim gibi bir aceminin ihtiyaç duyduğu şeydi, çakışan birleştirmeyi düzeltmenin son adımının "git commit" basit komutuydu.
Dana

17

Bence bu doğru yol:

git merge --abort

git fetch --all

Sonra iki seçeneğiniz var:

git reset --hard origin/master

VEYA Başka bir şubedeyseniz:

git reset --hard origin/<branch_name>

2
sadece git merge --abort çalıştı && git pull then
luky

8

Çatışmaları çözdüm ve taahhüt ettim ancak yine de bu hata mesajını alıyorum git push

Tüm çakışmalar düzeltildi, ancak hala birleşiyorsunuz.
(birleştirmeyi sonuçlandırmak için "git commit" kullanın)

Hatayı gidermek için şu adımları gerçekleştirdim:

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

Ne gelmez pushsonunda başarmak?
Mark Storer

6

Deneyin

git reset --hard origin/trunk

'gövde' almaya çalıştığım dal.

Bunun nasıl veya neden çalıştığını bilmiyorum. Çektiğim istekleri birleştirme yapmaya zorlayan bazı taahhütlerle ilgili bir şey vardı.


5

Geçici bir dosyayı değiştirmeyi deneyin. Gibi herhangi bir boşluk kaldırmak veya boşluk eklemek ve sonra taahhüt ve bu dosyayı itmek.

git add 'temporary_change_file'

git commit -m "git sorunu çözülüyor"

git itme kökenli geliştirmek

Ve sonra git pull'u dene,

git çekme kökeni geliştirmek

Umarım bu size yardımcı olabilir.


4

blockquote

Başka bir şubeden şubenize çekmeye çalışıyorsanız. Bu hatayı görüyorsanız.

Öncelikle git taahhüdü yapmayı denemeli ve sonra başka bir dalı kendinize çekmelisiniz.

  1. "git add."
  2. git taahhüt
  3. Sonra git git gerekli daldan çekin.

3

Benim durumumda bir dizi Birleşme Çatışması üreten bir kiraz seçimim vardı, bu yüzden kiraz seçimini tamamlamamaya karar verdim. Tüm değişikliklerimi attım. Bunu yapmak beni aşağıdaki hatayı aldığım bir duruma soktu:

Birleşmenizi sonuçlandırmadınız (MERGE_HEAD var

Sorunu gidermek için sorunu gideren aşağıdaki git komutunu uyguladım.

git cherry-pick --abort

2

En iyi yaklaşım, birleştirmeyi geri almak ve birleştirmeyi yeniden yapmaktır. Çoğunlukla berbat şeylerin sırasını alırsınız. Çatışmaları düzeltmeye çalışın ve kendinizi bir karmaşaya sokun.

Bu yüzden geri al ve tekrar birleştir.

Ortamınız için uygun fark araçları kurulumuna sahip olduğunuzdan emin olun. Mac'liyim ve DIFFMERGE kullanıyorum. Bence FARKLI tüm ortamlar için kullanılabilir. Talimatlar burada: MAC'a DIFF Merge yükleyin

Çatışmalarımı çözmede yardımcı oldum: Git Basic-Merge-Conflicts


1

İlk olarak, git pulldepoyu birleştirmek için kullanın git commit -m "your commit".


0

Taahhüt birleştirme değişiklikleri sorunumu çözdü:

git commit -m "commit message"

-12

Bu benim için çalıştı:

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

3
Her şeyden önce, bu tüm çalışma dizini değişikliklerini silecektir. Ayrıca sabit kodlu sürüm yararlı değildir, belki HEAD ^ gibi bir şey daha iyidir.
Entomo

@ Plus1 Bu tam olarak ihtiyacım olan şey - yanlış yerel taahhütlerimi kaldırın ve değiştirilen kaynak koduna göre değişiklikler uygulayın. Cevabınız için teşekkür ederim!
amuliar

Benim durumumda bir soruna neden oldu
Shafiq
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.