Anda belum menyimpulkan gabungan Anda (MERGE_HEAD ada)

1036

Saya membuat cabang bernama 'f' dan melakukan checkout untuk menguasai. Ketika saya mencoba git pullperintah saya mendapat pesan ini:

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

Ketika saya mencoba git status, itu memberi saya yang berikut:

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

Apa yang harus saya lakukan?

Ankit Suri
sumber

Jawaban:

1920

BAIK. Masalahnya adalah tarikan Anda sebelumnya gagal bergabung secara otomatis dan masuk ke status konflik. Dan konflik tidak diselesaikan dengan baik sebelum tarikan berikutnya.

  1. Batalkan penggabungan dan tarik lagi.

    Untuk membatalkan penggabungan:

    git merge --abort [Sejak git versi 1.7.4]

    git reset --merge [versi git sebelumnya]

  2. Selesaikan konflik.

  3. Jangan lupa menambahkan dan melakukan penggabungan.

  4. git pull sekarang harus bekerja dengan baik.

Karthik Bose
sumber
2
Saya mencoba dan memberi saya konflik dalam file (ketika menarik) Aplikasi penggabungan otomatis / tampilan / tata letak / application.html.erb Penggabungan log otomatis / development.log CONFLICT (konten): Gabungkan konflik di log / development.log Penggabungan otomatis log / restclient.log CONFLICT (konten): Gabungkan konflik di log / restclient.log Gabung otomatis gagal; perbaiki konflik dan kemudian hasilkan. Saya memperbaiki file-file lokal yang ditentukan, dan kemudian saya mencoba 'git pull' Tarik tidak mungkin karena Anda memiliki file yang tidak di-unmerged. Tolong, perbaiki di pohon kerja, dan kemudian gunakan 'git add / rm <file>' yang sesuai untuk menandai resolusi, atau gunakan 'git commit -a'.
Ankit Suri
1
@AnkitSuri, Setelah memperbaiki konflik, apakah Anda mengatur dan berkomitmen?
Karthik Bose
1
Saya mencobanya dan itu membantu saya untuk mengalir lagi. Setelah kembali, saya mencoba "git mergetool". Secara langsung dikaitkan dengan alat penggabungan.
CoDe
4
Tidak berfungsi:[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, itu benar-benar berakhir bekerja. Karena saya sedang mengerjakan SSH, saya harus memulai sesi baru dan melakukan git status.
user1429980
97

Jika Anda yakin telah menyelesaikan semua konflik gabungan:

rm -rf .git/MERGE*

Dan kesalahannya akan hilang.

knagode
sumber
2
jika Anda menghapus MERGE_HEAD, bukankah komit yang dihasilkan hanya memiliki satu induk sehingga Anda tidak akan memiliki riwayat cabang gabungan?
Jason Goemaat
2
ini yang saya inginkan
raditya gumay
1
@JGoGoGo dalam kasus saya, untuk sementara saya menggabungkan beberapa PR yang belum diterima. Saya tidak berencana untuk melakukan penggabungan pada cabang fitur, saya hanya membutuhkannya selama pengembangan.
Andy
Saya sudah menyelesaikan konflik saya dan masih mendapatkan kesalahan ini. Jadi perintah itu berhasil untuk saya.
Sibgha
Ini menyelamatkan saya dari lingkaran konflik penggabungan yang tidak menyenangkan.
Sledge
68

Saya pikir perlu disebutkan bahwa ada banyak skenario di mana pesan You have not concluded your merge (MERGE_HEAD exists)dapat terjadi, karena banyak orang mungkin telah tiba di halaman ini setelah mencari pesan tersebut. Resolusi akan tergantung pada bagaimana Anda sampai di sana.

git status selalu merupakan titik awal yang berguna.

Jika Anda sudah menggabungkan konten dengan kepuasan Anda dan masih menerima pesan ini, bisa jadi sederhana saja

git add file
git commit

Tetapi sekali lagi, itu benar-benar tergantung pada situasinya. Merupakan ide bagus untuk memahami dasar-dasarnya sebelum mencoba sesuatu (tautan yang sama yang diposting Terence): Git - Konflik Penggabungan Dasar

fantabolous
sumber
Terima kasih telah menanyakan ini, bagi kita yang memiliki jenis masalah yang lebih sederhana. "Git status" adalah apa yang dibutuhkan oleh seorang pemula seperti saya, untuk diingatkan bahwa langkah terakhir untuk memperbaiki penggabungan yang bertentangan adalah perintah sederhana "git commit".
Dana
17

Saya pikir ini adalah cara yang benar:

git merge --abort

git fetch --all

Kemudian, Anda memiliki dua opsi:

git reset --hard origin/master

ATAU Jika Anda berada di cabang lain:

git reset --hard origin/<branch_name>
Badr Bellaj
sumber
2
hanya git merge --abort bekerja dengan sendirinya && git menarik
luky
8

Saya menyelesaikan konflik dan juga berkomitmen tetapi masih mengaktifkan pesan kesalahan ini git push

Semua konflik diperbaiki tetapi Anda masih bergabung.
(gunakan "git commit" untuk menyimpulkan penggabungan)

Saya melakukan langkah-langkah ini untuk mengatasi kesalahan:

rm -rf .git/MERGE*
git pull origin branch_name 
git push origin branch_name
Taimoor Changaiz
sumber
Apa pushyang dicapai pada akhirnya?
Mark Storer
6

Mencoba

git reset --hard origin/trunk

'trunk' adalah cabang yang saya coba hubungi.

Saya tidak tahu bagaimana atau mengapa ini bekerja. Itu ada hubungannya dengan beberapa komit yang saya buat yang memaksa permintaan tarik saya untuk melakukan penggabungan.

Franklin
sumber
5

Coba ubah file sementara apa saja. Seperti hanya menghapus ruang apa saja atau menambah ruang lalu komit dan dorong file itu.

git tambahkan 'temporary_change_file'

git commit -m "penyelesaian masalah git"

git push asal berkembang

Dan kemudian coba git pull,

asal tarik git berkembang

Semoga ini bisa membantu Anda.

Kazim Noorani
sumber
4

Blokir

Jika Anda mencoba menarik dari cabang lain ke cabang Anda. Jika Anda melihat kesalahan ini.

Pertama, Anda harus mencoba melakukan git commit dan kemudian menarik cabang lain ke git Anda.

  1. "git add."
  2. git melakukan
  3. Kemudian lakukan git pull dari cabang yang diperlukan.
Rohith
sumber
3

Dalam kasus saya, saya memiliki pick cherry yang menghasilkan sejumlah Konflik Gabung, jadi saya memutuskan untuk tidak menyelesaikan pick cherry. Saya membuang semua perubahan saya. Melakukannya membuat saya dalam keadaan di mana saya menerima kesalahan berikut:

Anda belum menyimpulkan gabungan Anda (MERGE_HEAD ada

Untuk memperbaiki masalah ini saya melakukan perintah git berikut yang memperbaiki masalah.

git cherry-pick --abort
Cosmo Scrivanich
sumber
2

Pendekatan terbaik adalah untuk membatalkan penggabungan dan melakukan penggabungan kembali. Seringkali Anda mendapatkan urutan hal-hal kacau. Cobalah dan perbaiki konflik dan buat diri Anda berantakan.

Jadi batalkan lakukan dan gabung lagi.

Pastikan Anda memiliki pengaturan alat diff yang sesuai untuk lingkungan Anda. Saya menggunakan mac dan menggunakan DIFFMERGE. Saya pikir DIFFMERGE tersedia untuk semua lingkungan. Petunjuk ada di sini: Instal Gabung DIFF pada MAC

Saya memiliki ini membantu menyelesaikan konflik saya: Git Basic-Merge-Conflicts

Terence
sumber
1

pertama, gunakan git pulluntuk menggabungkan repositori, simpan perubahan Anda. lalu ketik ulang git commit -m "your commit".

Jack penyendiri
sumber
0

Perubahan gabungan komit memecahkan masalah saya:

git commit -m "commit message"
sai
sumber
-12

Ini bekerja untuk saya:

git log
`git reset --hard <089810b5be5e907ad9e3b01f>`
git pull
git status
Plus1
sumber
3
Pertama-tama, ini akan menghapus semua perubahan direktori kerja. Versi hardcoded juga tidak membantu, mungkin sesuatu seperti HEAD ^ lebih baik.
Entomo
@ Plus1 Ini persis yang saya butuhkan - hapus komit lokal saya yang salah dan terapkan perubahan sehubungan dengan kode sumber yang diubah. Terima kasih atas jawaban Anda!
Amuliar
Ini menyebabkan masalah dalam kasus saya
Shafiq