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

GIT продолжает смешивать меня со своими бесполезными предупреждениями об ошибках:( Это действительно заслуживает приз:

"git merge невозможно, потому что у вас есть несвязанные файлы"

Моя ситуация: Моя главная ветвь на github была отредактирована (непосредственно в браузере), в то время как моя локальная ветвь мастера также была отредактирована.

Глупо, я предположил, что вы можете просто объединить две версии и сделать это, но, увы, я не могу объединиться, потому что мои файлы не загружены.

git merge remote/master

приводит к

error: merge is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.

Итак, после добавления и фиксации локального изменения, а затем попытки снова слить, я получаю:

merge: remote/master - not something we can merge

Ясно, что у меня отсутствует кое-что существенное здесь... У меня есть неправильное представление о том, что означает слияние? Как я могу исправить эту проблему из-за того, что у вас есть отдельная ветвь master/local master?

Ответ 1

Сообщение об ошибке:

merge: remote/master - не то, что мы можем объединить

говорит, что Git не распознает remote/master. Вероятно, это связано с тем, что у вас нет "remote" с именем "remote". У вас есть "remote" с именем "origin".

Подумайте о "пультах" в качестве псевдонима для URL-адреса вашего сервера Git. master - это локально выверенная версия ветки. origin/master - это последняя версия master с вашего сервера Git, который вы загрузили (загрузили). A fetch всегда безопасен, потому что он будет обновлять версию "origin/x" ваших ветвей.

Итак, чтобы вернуть ветвь master назад, сначала загрузите последнее содержимое с сервера Git:

git fetch

Затем выполните слияние:

git merge origin/master

... Но, возможно, лучший подход:

git pull origin master

Команда pull выполнит fetch и merge для вас за один шаг.

Ответ 2

Я столкнулся с той же проблемой и не мог решить между смехом или ударом головой по столу, когда я прочитал эту ошибку...

Что git действительно пытается сказать вам: "Вы уже находитесь в состоянии слияния и должны сначала разрешить конфликты!"

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

Вы можете оставить это состояние с помощью git merge --abort и теперь попытаться выполнить другие команды.

В моем случае я попытался притянуть и хотел разрешить конфликты вручную, когда произошла ошибка...

Ответ 3

Я неоднократно сталкивался с той же проблемой некоторое время назад. Эта проблема возникает в основном, когда вы пытаетесь извлечь из удаленного репозитория, и у вас есть файлы на локальном экземпляре, конфликтующие с удаленной версией, если вы используете git из IDE, такой как IntelliJ, вам будет предложено сделать выбор, если вы хотите сохранить свои собственные изменения или предпочитаете, чтобы изменения в удаленной версии перезаписывали ваши ". Если вы не сделаете никакого выбора, вы попадете в этот конфликт. все, что вам нужно сделать, это запустить:

git merge --abort # The unresolved conflict will be cleared off

И вы можете продолжить то, что вы делали до перерыва.

Ответ 4

Еще одна потенциальная причина для этого (Intellij был вовлечен в мое дело, но не уверен, что это имело значение): попытка слияния изменений с основной ветки на ветку от ветки признака.

Другими словами, объединение "main" в "current" в следующем расположении:

main
  |
  --feature
      |
      --current

Я разрешил все конфликты, и GiT сообщила о несвязанных файлах, и я застрял до тех пор, пока я не объединился с основной функцией, а затем включил функцию current.