Ошибка слияния 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.