Ошибка слияния GIT «фиксация невозможна, потому что у вас есть файлы без объединения»


172

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

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

Ответы:


245

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


2
Что если это те файлы, над которыми я не работал? Должен ли я тогда еще добавить их? Как лучше всего с этим бороться?
R11G

1
Я должен был сделать это для файла, который был удален в ветви, которую я сливал в текущую ветку. Git пометил его как конфликтный, поэтому мне пришлось удалить файл локально git add the_file, чтобы совершить слияние.
Брендон Мьюр

как найти список конфликтов?
Полина-ц

7
git statusпокажет вам файлы, которые имеют конфликты
jonnystoten

@jonnystoten спасибо за ваш комментарий! Я использовал git statusи нашел файл, который сказал both deleted. Пользовательский интерфейс WebStorm не показал проблему, просто сказал, что не может совершить слияние. Решено!
Юрий

52

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

git add .
git stash  

git checkout <some branch>

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


Не требуется только git add. было бы достаточно
Rais Iqbal

3
Кроме того, это сильный нападающий, если вы не хотите, чтобы git addвсе ваши рабочие файлы
courtimas

11

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


2

Эта ошибка возникает, когда вы разрешаете конфликты, но файл все еще необходимо добавить в область рабочей области. мерзавец добавить. бы решить это. Затем попробуйте зафиксировать и объединить.


0

У меня была похожая проблема, которая сводилась к удалению файлов в «unmerged paths»

Эти файлы должны были быть удалены с помощью git rm


0

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


0

С мерзавцем 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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.