Git "Вы не завершили свое слияние" и нечего совершать? - PullRequest
59 голосов
/ 04 февраля 2012

Всякий раз, когда я пытаюсь вставить Git, я получаю это:

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

Бег git status Я получаю:

# On branch master
nothing to commit (working directory clean)

Или работает git ls-files -u Я ничего не получаю.

Запуск git add . и повторная попытка не имеют значения.

Что случилось?

Ответы [ 3 ]

106 голосов
/ 04 февраля 2012

Хорошо, я наконец нашел ответ: git commit -m "Test", видимо, исправили это. Результатом стал пустой коммит без каких-либо изменений. Даже Github показывает пустой коммит, но он работает.

58 голосов
/ 04 февраля 2012

Вы в итоге получили пустой коммит слияния (два родителя) или просто пустой коммит?В последнем случае вы могли удалить .git/MERGE_HEAD.

Обновление: Вместо того, чтобы удалять MERGE_HEAD вручную, вы также можете использовать git merge --abort ( с git1.7.4 ) или git reset --merge ( от git 1.6.2 ).

Стоит также упомянуть, что по крайней мере с git 1.8.3 (может быть, раньше?)вы должны увидеть сообщение status, подобное этому, если происходит фактическое слияние и его необходимо зафиксировать (например, если вы указали --no-commit):

# On branch master
# All conflicts fixed but you are still merging.
#   (use "git commit" to conclude merge)
#
nothing to commit, working directory clean

Если вы этого не видитеи все равно выдается предупреждение MERGE_HEAD, что-то не так, и вам, вероятно, нужно просто --abort, чтобы вернуться в чистое состояние.

Дополнительная информация из комментариев

Во время слияния git создает файл MERGE_HEAD в корне папки .git (рядом с HEAD, ORIG_HEAD, возможно, FETCH_HEAD и т. Д.), Чтобы отслеживать информацию о выполняемом слиянии (в частности, SHA (s) коммитаs) быть объединенным с текущим заголовком).Если вы удалите это, Git больше не будет думать, что выполняется слияние.Очевидно, что если слияние действительно выполняется, вы не захотите удалять этот файл.

11 голосов
/ 21 октября 2015

Используйте команду git reset, без параметров. Docs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...