Ви не завершили злиття (існує 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 [З моменту версії 1.7.4]

    git reset --merge [попередні версії git]

  2. Вирішіть конфлікт.

  3. Не забудьте додати та здійснити злиття.

  4. git pull тепер має нормально працювати.


2
Я спробував і надіслав мені конфлікт у файлах (при витягуванні) Програма автоматичного злиття / погляди / макети / application.html.erb Автоматичний злиття журналу / development.log CONFLICT (контент): конфлікт об'єднання в журнал / development.log Автоматичне об'єднання log / restclient.log CONFLICT (content): конфлікт злиття в log / restclient.log Автоматичне злиття не вдалося; виправити конфлікти, а потім здійснити результат. Я виправив вказані локальні файли, а потім спробував "git pull" Витягнути неможливо, оскільки у вас є неподілені файли. Будь ласка, виправте їх у робочому дереві, а потім використовуйте 'git add / rm <file>', якщо потрібно, щоб позначити роздільну здатність, або використовуйте 'git commit -a'.
Анкіт Сурі

1
@AnkitSuri. Виправивши конфлікти, ви їх влаштували та чинили?
Картик Босе

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.
користувач1429980

97

Якщо ви впевнені, що вже вирішили всі конфлікти злиття:

rm -rf .git/MERGE*

І помилка зникне.


2
якщо ви видалите MERGE_HEAD, чи не буде отриманого комітету мати лише одного з батьків, щоб у вас не було історії об'єднаної гілки?
Джейсон Джейм

2
це те, що я хотів
raditya gumay

1
@JasonGoemaat у моєму випадку я тимчасово зливаюсь у кілька PR-адрес, які ще не прийняті. Я не планую здійснювати ці злиття на галузях функцій, мені просто потрібні під час розробки.
Енді

Я вже вирішив свої конфлікти і все ще отримував цю помилку. Тож команда працювала на мене.
Sibgha

Це врятувало мене від неприємного конфліктного циклу злиття.
Санки

68

Я думаю, що варто згадати, що є численні сценарії, в яких повідомлення You have not concluded your merge (MERGE_HEAD exists)може статися, оскільки багато людей, ймовірно, прийшли на цю сторінку після пошуку вказаного повідомлення. Дозвіл залежатиме від того, як ви потрапили туди.

git status завжди корисна відправна точка.

Якщо ви вже з’єднали вміст на ваше задоволення і все ще отримуєте це повідомлення, це може бути так само просто

git add file
git commit

Але знову ж таки, це дійсно залежить від ситуації. Корисно зрозуміти основи, перш ніж щось робити (те саме посилання Теренс опублікував): Git - Основні конфлікти злиття


Дякую за запитання, для тих із нас, хто має простішу проблему. "Git status" - це те, що потрібно новачкові, як я, щоб нагадати, що останнім кроком виправлення конфліктного злиття була проста команда "git commit".
Дана

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

Усі конфлікти виправлені, але ви все ще зливаєтеся.
(використовувати "git commit" для укладання злиття)

Я зробив ці кроки, щоб усунути помилку:

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

Що робиться pushв кінці?
Марк Сторер

6

Спробуйте

git reset --hard origin/trunk

"стовбур" - це галузь, до якої я намагаюся дістатися.

Я не знаю, як і чому це працює. Це було пов'язане з деякими зобов'язаннями, які я зробив, який змушував мої запити на витягнути злиття.


5

Спробуйте змінити будь-який тимчасовий файл. Як і просто видаліть будь-який пробіл або додайте пробіл, а потім скопіюйте та натисніть цей файл.

git Додати "тимчасовий_замін_файл"

git commit -m "вирішення проблеми git"

git push походження розвиватися

А потім спробуйте git pull,

git pull походження розвиватися

Сподіваюся, це може вам допомогти.


4

Блок-котирування

Якщо ви намагаєтеся витягнути з іншої гілки у свою гілку. Якщо ви бачите цю помилку

Спершу вам слід спробувати зробити git commit, а потім потягнути іншу гілку у свою.

  1. "git add".
  2. git фіксувати
  3. Потім робіть витягування git з необхідної гілки.

3

У моєму випадку у мене був вишневий вибір, який спричиняє ряд конфліктів злиття, тому я вирішу не завершувати вибір вишні. Я відмовився від усіх своїх змін. Таким чином, я перейшов у стан, коли я отримав таку помилку:

Ви не завершили злиття (MERGE_HEAD існує)

Для вирішення проблеми я виконав таку команду git, яка вирішила проблему.

git cherry-pick --abort

2

Найкращий підхід - скасувати злиття та виконати злиття знову. Часто ви набираєте порядок речей, які псуються. Спробуйте виправити конфлікти і потрапити в безлад.

Тому скасуйте це і зробіть знову.

Переконайтеся, що у вас є відповідні налаштування різних інструментів для вашого оточення. Я на Mac і використовую DIFFMERGE. Я думаю, що DIFFMERGE доступний для всіх середовищ. Тут розміщено інструкції: Встановіть об'єднання DIFF на MAC

У мене це корисне вирішення моїх конфліктів: Git Basic-Merge-Conflicts


1

по-перше, використовуйте git pullдля об'єднання сховища збережіть свою change.then введіть git commit -m "your commit".


0

Зміна змін об’єднання вирішила мою проблему:

git commit -m "commit message"

-12

Це працювало для мене:

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

3
Перш за все, це видалить усі зміни робочого каталогу. Також версія з жорстким кодом не є корисною, можливо, щось на кшталт HEAD ^ краще.
Ентомо

@ Plus1 Це саме те, що мені потрібно - видаліть неправильні локальні комісії та застосуйте зміни стосовно зміненого вихідного коду. Спасибі за вашу відповідь!
amuliar

Це спричинило проблеми в моєму випадку
Шафік
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.