Фиксация ошибки слияния Git невозможна, потому что у вас есть неслитые файлы

Я забыл git pull свой код перед его редактированием; когда я зафиксировал новый код и попытался нажать, я получил сообщение об ошибке, которое невозможно.

В этот момент я сделал git pull, в результате которого были выделены некоторые файлы с конфликтами. Я удалил конфликты, но не знаю, что дальше делать.

Я попытался git commit снова, но он говорит, что фиксация невозможна, потому что у вас есть не объединенные файлы:

error: Committing is not possible because you have unmerged files.

person Kiarash    schedule 18.10.2012    source источник
comment
Возможно, вы захотите изменить рабочий процесс git, чтобы никогда не попасть в эту ситуацию. У меня нет времени вдаваться в подробности прямо сейчас, но я имею в виду следующее: git merge -X theirs или git pull -X theirs. - Наверное, не то и другое, но я не уверен.   -  person Henke    schedule 17.12.2020


Ответы (7)


Если вы устранили конфликты, вам нужно добавить файлы в сцену с помощью git add [filename], затем зафиксируйте как обычно.

person jonnystoten    schedule 18.10.2012
comment
Что, если это те файлы, над которыми я не работал? Стоит ли мне тогда еще их добавить? Как лучше всего с этим справиться? - person R11G; 19.06.2013
comment
Мне пришлось сделать это для файла, который был удален в ветке, которую я объединял с текущей веткой. Git отметил это как конфликт, поэтому мне пришлось удалить файл локально, а затем git add the_file, чтобы зафиксировать слияние. - person Brendon Muir; 16.09.2016
comment
как найти список конфликтов? - person polina-c; 08.08.2018
comment
git status покажет вам файлы, у которых есть конфликты - person jonnystoten; 08.08.2018
comment
@jonnystoten спасибо за ваш комментарий! Я использовал git status и нашел файл с надписью both deleted. Пользовательский интерфейс WebStorm не показал проблемы, просто сказал, что не может выполнить слияние. Решено! - person Yuri Predborski; 28.03.2019
comment
Я думаю, что ответ git add правильный, но не полный. Если у меня возникают конфликты слияния во время выбора вишни и я выполняю git add + git commit, как было предложено, я получаю сообщение об ошибке: фатальный: невозможно выполнить частичную фиксацию во время выбора вишни .. В этом случае я должен сделать это: git add + git cherry-pick --continue + git push. - person Alexander Samoylov; 09.05.2019
comment
Если вы не хотите добавлять этот файл в свою фиксацию, и вы получаете сообщение об ошибке даже после разрешения фиксации, просто поставьте и отключите этот файл, чтобы исправить ошибку для меня. - person shubham rajput; 28.06.2021

Вам нужно сделать две вещи. Сначала добавьте изменения с помощью

git add .
git stash  

git checkout <some branch>

Это должно решить вашу проблему так, как она решила для меня.

person Prabhakar Undurthi    schedule 16.03.2015
comment
Не требуется только git add. хватит - person Rais Iqbal; 19.09.2018
comment
Также это тяжелый удар, если вы не хотите git add все свои рабочие файлы - person courtsimas; 11.12.2018
comment
Не запускайте git add. если вы не готовы добавить все локальные файлы в репозиторий GitHub. - person Joshua Bone; 18.02.2021
comment
пожалуйста, не используйте тайник .. мы удалим все, что вы изменили - person Ahmed Elsayed; 18.07.2021

Вы можете использовать git stash для сохранения текущего репозитория перед тем, как делать коммит, который вы хотите сделать (после слияния изменений из восходящего репозитория с git stash pop). Мне пришлось сделать это вчера, когда у меня была такая же проблема.

person muman    schedule 20.10.2012

Эта ошибка возникает, когда вы разрешаете конфликты, но файл все равно нужно добавить в рабочую область. git add. решит это. Затем попробуйте зафиксировать и слить.

person Priyanka Arora    schedule 09.07.2019

Начиная с git 2.23 (август 2019 г.) у вас теперь есть ярлык для этого: git restore --staged [filepath]. С помощью этой команды вы можете игнорировать конфликтующий файл, не добавляя и не удаляя его.

Пример:

> git status

  ...
  Unmerged paths:
    (use "git add <file>..." to mark resolution)
      both modified:   file.ex

> git restore --staged file.ex

> git status

  ...
  Changes not staged for commit:
    (use "git add <file>..." to update what will be committed)
    (use "git restore <file>..." to discard changes in working directory)
      modified:   file.ex

person macabeus    schedule 23.04.2020

У меня была аналогичная проблема, которая сводилась к удалению файлов по «несвязанным путям»

Эти файлы пришлось удалить с помощью git rm

person Yann VR    schedule 04.07.2019

Итак, из ошибки выше. Все, что вам нужно сделать, чтобы исправить эту проблему, - это вернуть свой код. (git revert HEAD) затем git pull, а затем повторите свои изменения, затем снова git pull, и он смог выполнить фиксацию или слияние без ошибок.

person appdesigns    schedule 17.12.2019