คุณยังไม่ได้สรุปการรวม (MERGE_HEAD อยู่)


1036

ฉันทำสาขาที่เรียกว่า 'f' และเช็คเอาต์เป็นหลัก เมื่อฉันลองgit pullคำสั่งฉันได้รับข้อความนี้:

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

เมื่อฉันลองgit statusมันก็ให้สิ่งต่อไปนี้กับฉัน:

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

ฉันควรทำอย่างไรดี?

คำตอบ:


1917

ตกลง. ปัญหาคือการดึงก่อนหน้าของคุณล้มเหลวในการผสานโดยอัตโนมัติและเข้าสู่สถานะความขัดแย้ง และความขัดแย้งไม่ได้รับการแก้ไขอย่างถูกต้องก่อนที่จะดึง

  1. เลิกทำการผสานและดึงอีกครั้ง

    หากต้องการยกเลิกการรวม:

    git merge --abort [ตั้งแต่รุ่น git 1.7.4]

    git reset --merge [รุ่น git ก่อน]

  2. แก้ไขข้อขัดแย้ง

  3. อย่าลืมเพิ่มและกระทำการรวม

  4. git pull ตอนนี้ควรทำงานได้ดี


2
ฉันพยายามและทำให้ฉันมีความขัดแย้งในไฟล์ (เมื่อดึง) การรวมแอปอัตโนมัติ / มุมมอง / เลย์เอาต์ / application.html.erb การรวมบันทึก / development.log โดยอัตโนมัติข้อขัดแย้ง (เนื้อหา): ผสานความขัดแย้งในบันทึก / development.log การรวมอัตโนมัติ log / restclient.log CONFLICT (เนื้อหา): ผสานความขัดแย้งใน log / restclient.log การผสานอัตโนมัติล้มเหลว แก้ไขข้อขัดแย้งแล้วส่งผลลัพธ์ ฉันแก้ไขไฟล์ในเครื่องที่ระบุและจากนั้นฉันลอง 'git pull' pull ไม่สามารถทำได้เพราะคุณมีไฟล์ที่ไม่ได้ถูกแยกทิ้ง กรุณาแก้ไขมันในแผนผังการทำงานจากนั้นใช้ 'git add / rm <file>' ตามความเหมาะสมเพื่อทำเครื่องหมายความละเอียดหรือใช้ 'git commit -a'
Ankit Suri

1
@AnkitSuri หลังจากแก้ไขความขัดแย้งแล้วคุณได้แสดงความมุ่งมั่นเหล่านั้นแล้วหรือยัง?
Karthik Bose

1
ฉันลองแล้วมันช่วยให้ฉันไหลได้อีกครั้ง หลังจากย้อนกลับฉันได้ลอง "git mergetool" มันเชื่อมโยงโดยตรงกับเครื่องมือการรวม
CODe

4
ไม่ทำงาน:[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 จริง ๆ แล้วมันก็ไม่ได้ทำงาน ตั้งแต่ผมทำงานผ่าน SSH git statusผมต้องเริ่มเซสชันใหม่และทำ
user1429980

97

หากคุณแน่ใจว่าคุณได้แก้ไขข้อขัดแย้งการรวมทั้งหมดแล้ว:

rm -rf .git/MERGE*

และข้อผิดพลาดจะหายไป


2
หากคุณลบ MERGE_HEAD ผลลัพธ์ที่ได้จากการส่งจะมีเพียงพาเรนต์เดียวดังนั้นคุณจะไม่มีประวัติของสาขาที่ผสานหรือไม่
Jason Goemaat

2
นี่คือสิ่งที่ฉันต้องการ
raditya gumay

1
@JasonGoemaat ในกรณีของฉันฉันกำลังรวมการประชาสัมพันธ์ PR หลายรายการชั่วคราวซึ่งยังไม่ได้รับการยอมรับ ฉันไม่ได้วางแผนที่จะรวมสิ่งเหล่านั้นในสาขาฟีเจอร์ฉันต้องการมันในระหว่างการพัฒนา
Andy

ฉันแก้ไขข้อขัดแย้งของฉันแล้วและยังคงได้รับข้อผิดพลาดนี้ ดังนั้นคำสั่งใช้งานได้สำหรับฉัน
Sibgha

สิ่งนี้ช่วยฉันจากการวนซ้ำของข้อขัดแย้งที่น่ารังเกียจ
เลื่อน

68

ฉันคิดว่ามันคุ้มค่าที่จะกล่าวถึงว่ามีหลายสถานการณ์ที่ข้อความYou have not concluded your merge (MERGE_HEAD exists)อาจเกิดขึ้นเพราะหลายคนอาจมาที่หน้านี้หลังจากค้นหาข้อความดังกล่าว ความละเอียดจะขึ้นอยู่กับว่าคุณไปถึงที่นั่นได้อย่างไร

git status เป็นจุดเริ่มต้นที่มีประโยชน์เสมอ

หากคุณรวมเนื้อหาเข้ากับความพึงพอใจของคุณแล้วและยังได้รับข้อความนี้อาจเป็นเรื่องง่ายเหมือนการทำ

git add file
git commit

แต่อีกครั้งมันขึ้นอยู่กับสถานการณ์ เป็นความคิดที่ดีที่จะเข้าใจพื้นฐานก่อนที่จะพยายามทำสิ่งใด (ลิงก์เดียวกันที่ Terence โพสต์ไว้): Git - ความขัดแย้งผสานพื้นฐาน


ขอขอบคุณที่สอบถามสิ่งนี้สำหรับพวกเราที่มีปัญหาแบบง่ายกว่า "สถานะ Git" เป็นสิ่งที่มือใหม่อย่างที่ฉันต้องการเพื่อให้ได้รับการเตือนว่าขั้นตอนสุดท้ายของการแก้ไขการผสานที่ขัดแย้งกันคือคำสั่งง่ายๆ "git commit"
Dana

17

ฉันคิดว่านี่เป็นวิธีที่ถูกต้อง:

git merge --abort

git fetch --all

จากนั้นคุณมีสองตัวเลือก:

git reset --hard origin/master

หรือถ้าคุณอยู่ในสาขาอื่น:

git reset --hard origin/<branch_name>

2
git merge เท่านั้น --abort ทำงานเอง && git pull แล้ว
luky

8

ฉันแก้ไขข้อขัดแย้งและมุ่งมั่น แต่ยังได้รับข้อความแสดงข้อผิดพลาดนี้เมื่อ git push

แก้ไขข้อขัดแย้งทั้งหมดแล้ว แต่คุณยังคงผสานรวมอยู่
(ใช้ "คอมไพล์คอมมิท" เพื่อสรุปการผสาน)

ฉันทำตามขั้นตอนเหล่านี้เพื่อแก้ไขข้อผิดพลาด:

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

อะไรคือสิ่งpushที่ทำให้สำเร็จ
ทำเครื่องหมาย Storer

6

ลอง

git reset --hard origin/trunk

'ลำตัว' เป็นสาขาที่ฉันพยายามจะไป

ฉันไม่รู้ว่าทำไมหรือทำไมจึงใช้งานได้ มันมีบางอย่างที่เกี่ยวข้องกับบางอย่างที่ฉันทำซึ่งบังคับให้คำขอดึงของฉันทำการผสาน


5

ลองเปลี่ยนไฟล์ชั่วคราว เช่นเดียวกับการลบพื้นที่ใด ๆ หรือเพิ่มพื้นที่แล้วกระทำและผลักดันไฟล์นั้น

git เพิ่ม 'temporary_change_file'

git commit -m "การแก้ปัญหา git"

git push กำเนิดพัฒนา

แล้วลองดึงคอมไพล์

คอมไพล์ดึงต้นกำเนิดพัฒนา

หวังว่านี่จะช่วยคุณได้


4

blockquote

หากคุณพยายามดึงสาขาจากสาขาอื่นมาที่สาขาของคุณ หากคุณเห็นข้อผิดพลาดนี้

ขั้นแรกคุณควรลองคอมไพล์คอมไพล์แล้วดึงสาขาอื่น ๆ เข้ามาหาคุณ

  1. "เพิ่มคอมไพล์"
  2. คอมไพล์
  3. จากนั้นทำการดึง git จากกิ่งที่ต้องการ

3

ในกรณีของฉันฉันเลือกเชอร์รี่ที่สร้างความขัดแย้งผสานจำนวนหนึ่งดังนั้นฉันตัดสินใจที่จะไม่เลือกเชอร์รี่ให้เสร็จ ฉันทิ้งการเปลี่ยนแปลงทั้งหมดของฉัน การทำเช่นนั้นทำให้ฉันเข้าสู่สถานะที่ฉันได้รับข้อผิดพลาดต่อไปนี้:

คุณยังไม่ได้สรุปการรวม (MERGE_HEAD อยู่

เพื่อแก้ไขปัญหาฉันทำคำสั่ง git ต่อไปนี้ซึ่งแก้ไขปัญหา

git cherry-pick --abort

2

วิธีที่ดีที่สุดคือเลิกทำการผสานและดำเนินการผสานอีกครั้ง บ่อยครั้งที่คุณได้รับสิ่งที่ยุ่งเหยิง ลองและแก้ไขข้อขัดแย้งและทำให้ตัวเองยุ่งเหยิง

ดังนั้นเลิกทำแล้วรวมอีกครั้ง

ตรวจสอบให้แน่ใจว่าคุณมีการตั้งค่าเครื่องมือต่าง ๆ ที่เหมาะสมสำหรับสภาพแวดล้อมของคุณ ฉันใช้ mac แล้วใช้ DIFFMERGE ฉันคิดว่า DIFFMERGE พร้อมใช้งานสำหรับทุกสภาพแวดล้อม คำแนะนำอยู่ที่นี่: ติดตั้ง DIFF ผสานบน MAC

ฉันมีประโยชน์ในการแก้ไขข้อขัดแย้งของฉัน: Gitความขัดแย้งพื้นฐานผสาน


1

ก่อนอื่นให้ใช้git pullรวมที่เก็บบันทึกการเปลี่ยนแปลงของคุณจากนั้นพิมพ์git commit -m "your commit"อีกครั้ง


0

คอมมิชชันการรวมการเปลี่ยนแปลงแก้ปัญหาของฉัน:

git commit -m "commit message"

-12

สิ่งนี้ใช้ได้กับฉัน:

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

3
ก่อนอื่นสิ่งนี้จะลบการเปลี่ยนแปลงไดเรกทอรีทำงานทั้งหมด เวอร์ชั่นฮาร์ดโค้ดยังไม่เป็นประโยชน์บางทีบางอย่างเช่น HEAD ^ ก็ดีกว่า
Entomo

@ Plus1 นี่คือสิ่งที่ฉันต้องการ - ลบข้อผิดพลาดในพื้นที่ของฉันและใช้การเปลี่ยนแปลงที่เกี่ยวข้องกับซอร์สโค้ดที่เปลี่ยนแปลง ขอบคุณสำหรับคำตอบ!
amuliar

มันทำให้เกิดปัญหาในกรณีของฉัน
Shafiq
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.