Bạn chưa kết thúc việc hợp nhất của mình (MERGE_HEAD tồn tại)


1036

Tôi đã tạo một chi nhánh gọi là 'f' và thực hiện kiểm tra để thành thạo. Khi tôi thử git pulllệnh tôi nhận được thông báo này:

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

Khi tôi thử git status, nó đã cho tôi như sau:

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

Tôi nên làm gì?

Câu trả lời:


1918

ĐỒNG Ý. Vấn đề là lần kéo trước của bạn không thể tự động hợp nhất và chuyển sang trạng thái xung đột. Và cuộc xung đột đã không được giải quyết đúng đắn trước lần kéo tiếp theo.

  1. Hoàn tác hợp nhất và kéo lại.

    Để hoàn tác hợp nhất:

    git merge --abort [Kể từ phiên bản git 1.7.4]

    git reset --merge [phiên bản git trước]

  2. Giải quyết xung đột.

  3. Đừng quên thêm và cam kết hợp nhất.

  4. git pull Bây giờ nên làm việc tốt.


2
Tôi đã thử và cho tôi xung đột trong các tệp (khi kéo) Tự động hợp nhất ứng dụng / lượt xem / bố cục / application.html.erb Tự động hợp nhất log / Development.log CONFLICT (nội dung): Hợp nhất xung đột trong log / Development.log Tự động hợp nhất log / restclient.log CONFLICT (nội dung): Hợp nhất xung đột trong log / restclient.log Hợp nhất tự động không thành công; khắc phục xung đột và sau đó cam kết kết quả. Tôi đã sửa các tệp cục bộ được chỉ định và sau đó tôi đã thử 'git pull' Kéo là không thể vì bạn có các tệp chưa được trộn. Vui lòng sửa chúng trong cây công việc, sau đó sử dụng 'git add / rm <file>' nếu thích hợp để đánh dấu độ phân giải hoặc sử dụng 'git commit -a'.
Ankit Suri

1
@AnkitSuri, Sau khi khắc phục các xung đột, bạn đã xử lý chúng và cam kết chưa?
Karthik Bose

1
Tôi đã thử nó và nó giúp tôi có được một lần nữa. Sau khi hoàn nguyên, tôi đã thử "git mergetool". Nó liên kết trực tiếp với công cụ hợp nhất.
CoDe

4
Không hoạt động:[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, nó thực sự đã làm việc. Vì tôi đang làm việc trên SSH, tôi phải bắt đầu một phiên mới và thực hiện git status.
user1429980

97

Nếu bạn chắc chắn rằng bạn đã giải quyết tất cả các xung đột hợp nhất:

rm -rf .git/MERGE*

Và lỗi sẽ biến mất.


2
nếu bạn xóa MERGE_HEAD, thì cam kết kết quả chỉ có một cha mẹ nên bạn sẽ không có lịch sử của chi nhánh được hợp nhất?
Jason Goemaat

2
đây là những gì tôi muốn
raditya gumay

1
@JasonGoemaat trong trường hợp của tôi Tôi đang tạm thời hợp nhất nhiều PR chưa được chấp nhận. Tôi không có kế hoạch cam kết những sự hợp nhất đó trên nhánh tính năng, tôi chỉ cần chúng trong quá trình phát triển.
Andy

Tôi đã giải quyết mâu thuẫn của mình và vẫn nhận được lỗi này. Vì vậy, lệnh làm việc cho tôi.
Sibgha

Điều này đã cứu tôi khỏi một vòng lặp hợp nhất khó chịu.
Sledge

68

Tôi nghĩ rằng đáng để đề cập rằng có rất nhiều tình huống trong đó tin nhắn You have not concluded your merge (MERGE_HEAD exists)có thể xảy ra, bởi vì nhiều người có thể đã đến trang này sau khi tìm kiếm tin nhắn nói. Độ phân giải sẽ phụ thuộc vào cách bạn đến đó.

git status luôn là điểm khởi đầu hữu ích.

Nếu bạn đã hợp nhất nội dung với sự hài lòng của bạn và vẫn nhận được thông báo này, việc này có thể đơn giản như thực hiện

git add file
git commit

Nhưng một lần nữa, nó thực sự phụ thuộc vào tình hình. Đó là một ý tưởng tốt để hiểu những điều cơ bản trước khi thử bất cứ điều gì (cùng liên kết Terence đã đăng): Git - Xung đột hợp nhất cơ bản


Cảm ơn bạn đã hỏi điều này, cho những người trong chúng ta với loại vấn đề đơn giản hơn. "Trạng thái Git" là những gì một người mới như tôi cần, để được nhắc nhở rằng bước cuối cùng của việc sửa lỗi hợp nhất là lệnh đơn giản "git commit".
Dana

17

Tôi nghĩ rằng đây là cách đúng đắn:

git merge --abort

git fetch --all

Sau đó, bạn có hai lựa chọn:

git reset --hard origin/master

HOẶC Nếu bạn đang ở một số chi nhánh khác:

git reset --hard origin/<branch_name>

2
chỉ git merge --abort tự hoạt động && git pull sau đó
luky

8

Tôi đã giải quyết xung đột và cũng đã cam kết nhưng vẫn nhận được thông báo lỗi này trên git push

Tất cả các xung đột đã được sửa nhưng bạn vẫn đang hợp nhất.
(sử dụng "git commit" để kết luận hợp nhất)

Tôi đã làm các bước sau để khắc phục lỗi:

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

Những gì pushcuối cùng hoàn thành?
Mark Storer

6

Thử

git reset --hard origin/trunk

'thân cây' là nhánh mà tôi đang cố gắng để có được.

Tôi không biết làm thế nào hoặc tại sao điều này hoạt động. Nó có một cái gì đó để làm với một số cam kết mà tôi đã thực hiện, điều đó đã buộc các yêu cầu kéo của tôi phải thực hiện hợp nhất.


5

Hãy thử thay đổi bất kỳ tập tin tạm thời. Giống như chỉ cần loại bỏ bất kỳ không gian hoặc thêm không gian và sau đó cam kết và đẩy tập tin đó.

git thêm 'tạm_change_file'

git commit -m "giải quyết vấn đề git"

git đẩy nguồn gốc phát triển

Và sau đó thử git kéo,

nguồn gốc git kéo phát triển

Hy vọng điều này có thể giúp bạn.


4

Blockquote

Nếu bạn đang cố gắng kéo từ một chi nhánh khác vào chi nhánh của bạn. Nếu bạn thấy lỗi này.

Đầu tiên, bạn nên thử thực hiện git commit và sau đó kéo một nhánh khác vào của bạn.

  1. "git thêm."
  2. cam kết
  3. Sau đó làm git kéo từ chi nhánh yêu cầu.

3

Trong trường hợp của tôi, tôi đã có một quả anh đào tạo ra một số Xung đột Hợp nhất, vì vậy tôi quyết định không hoàn thành việc hái anh đào. Tôi đã loại bỏ tất cả những thay đổi của tôi. Làm như vậy sẽ đưa tôi vào trạng thái tôi nhận được lỗi sau:

Bạn chưa kết thúc hợp nhất của bạn (MERGE_HEAD tồn tại

Để khắc phục sự cố tôi đã thực hiện lệnh git sau để khắc phục sự cố.

git cherry-pick --abort

2

Cách tiếp cận tốt nhất là hoàn tác hợp nhất và thực hiện hợp nhất lại. Thường thì bạn nhận được thứ tự của những thứ lộn xộn. Hãy thử và khắc phục các xung đột và khiến bản thân rơi vào một mớ hỗn độn.

Vì vậy, hoàn tác làm điều đó và hợp nhất một lần nữa.

Hãy chắc chắn rằng bạn có thiết lập công cụ tìm khác biệt phù hợp với môi trường của bạn. Tôi đang dùng mac và sử dụng KHÁC BIỆT. Tôi nghĩ rằng KHÁC BIỆT có sẵn cho tất cả các môi trường. Hướng dẫn có tại đây: Cài đặt DIFF Hợp nhất trên MAC

Tôi có điều này hữu ích để giải quyết xung đột của tôi: Git Basic-Merge-Xung đột


1

đầu tiên, sử dụng git pullđể hợp nhất kho lưu trữ thay đổi của bạn git commit -m "your commit". sau đó gõ lại .


0

Cam kết thay đổi đã giải quyết vấn đề của tôi:

git commit -m "commit message"

-12

Điều này làm việc cho tôi:

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

3
Trước hết, điều này sẽ xóa tất cả các thay đổi thư mục làm việc. Ngoài ra phiên bản mã hóa cứng không hữu ích, có lẽ một cái gì đó như CHÍNH ^ là tốt hơn.
Entomo

@ Plus1 Đây chính xác là những gì tôi cần - xóa các cam kết cục bộ sai của tôi và áp dụng các thay đổi đối với mã nguồn đã thay đổi. Cảm ơn bạn vì câu trả lời!
đặc biệt

Nó đã gây ra một vấn đề trong trường hợp của tôi
Shafiq
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.