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

Обновлено: 01.07.2024

когда я пытаюсь вытащить мой каталог проекта в терминале, я вижу следующую ошибку:

почему git говорит "Pull is not possible because you have unmerged files" , и как я могу это решить?

в настоящее время происходит то, что у вас есть определенный набор файлов, которые вы пытались объединить ранее, но они вызвали конфликты слияния. В идеале, если вы получаете конфликт слияния, он должен разрешить их вручную и зафиксировать изменения с помощью git add file.name && git commit -m "removed merge conflicts" . Теперь другой пользователь обновил файлы, о которых идет речь, в своем репозитории и подтолкнул свои изменения к общему восходящему РЕПО.

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

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

воспроизведение образца и разрешение вопрос:

во-первых, давайте создадим структуру репозитория

теперь мы находимся в repo_clone, и если вы делаете git pull , это вызовет конфликты

если мы проигнорируем конфликты в Клоне и сделаем больше коммитов в исходном РЕПО сейчас,

а то git pull , мы получим

отметим, что file теперь находится в несвязанном состоянии, и если мы сделаем git status , мы можем ясно видеть то же самое:

Итак, чтобы решить эту проблему, нам сначала нужно решить конфликт слияния, который мы проигнорировали ранее

и установите его содержимое в

а затем добавить его и зафиксировать изменения

вы пытаетесь добавить еще один новый коммит в локальную ветку, пока ваш рабочий каталог не чист. В результате Git отказывается делать тягу. Рассмотрим следующие диаграммы, чтобы лучше визуализировать сценарий:

remote: A
local: A
(*указывает, что у вас есть несколько файлов, которые были изменены, но не зафиксированы.)

есть два варианта для решения этой ситуации. Вы можете либо отменить изменения в ваших файлах, либо сохранить их.

Вариант первый: выбросить изменения
Вы можете использовать git checkout для каждого несвязанного файла, или вы можете использовать git reset --hard HEAD чтобы сбросить все файлы в вашей ветке в HEAD. Кстати, голова в вашем местном филиале-это B, без звездочки. Если вы выберете этот параметр, диаграмма станет:

remote: A
local: A

теперь, когда вы тянете, вы можете быстро перемотать свою ветку с изменениями от master. После вытягивания, вы ветка будет выглядеть как мастер:

Вариант второй: Сохранить изменения
Если вы хотите сохранить изменения, вы сначала захотите разрешить любые конфликты слияния в каждом из файлов. Вы можете открыть каждый файл в IDE. и обратите внимание на следующие символы:

remote: A
local: A

здесь я обозначил фиксацию, которую мы только что сделали, как C', потому что она отличается от фиксации C на пульте дистанционного управления. Теперь, если вы попытаетесь потяните, вы получите ошибку без быстрой перемотки вперед. Git не может воспроизвести изменения в remote на вашей ветке, потому что и ваша ветвь, и удаленный разошлись от общего предка commit B. В этот момент, если вы хотите вытащить, вы можете сделать еще один git merge или git rebase ваша ветка на пульте дистанционного управления.

для овладения Git требуется умение понимать и манипулировать однонаправленными связанными списками. Я надеюсь, что это объяснение заставит вас думать в правильном направлении о с помощью Git.

есть простое решение. Но для этого вам сначала нужно узнать следующее

чтобы удалить конфликты, вы можете использовать

вышеуказанная команда в основном открывает локальный файл, смешанный файл, удаленный файл (всего 3 файла), для каждого конфликтного файла. Локальные и удаленные файлы предназначены только для справки, и с их помощью вы можете выбрать, что включать (или нет) в смешанный файл. И просто сохраните и закройте файл.

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

Если вы хотите снять удаленную ветку для запуска локально (скажем, для просмотра или тестирования), и когда вы $ git pull вы получаете локальные конфликты слияния:

Если вы не хотите объединять изменения и все еще хотите обновить свой локальный, перейдите к команде.

это сбросит ваш локальный с головой, а затем вытащить пульт дистанционного управления с помощью git pull!

при возникновении конфликта слияния можно открыть отдельный файл. Вы получите " > > > > > > " символы. Они относятся к вашим изменениям и изменениям, присутствующим на пульте дистанционного управления. Вы можете вручную отредактировать требуемую деталь. после этого сохраните файл и выполните : git add

конфликты слияния будут решены.

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

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

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

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

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

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

говорит, что Git не признает remote/master . Это, вероятно, потому, что у вас нет "удаленного" с именем "удаленный". У вас есть "удаленный" с именем "origin".

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

Итак, чтобы получить ваш master ветка назад в синхронизации, сначала загрузите последний контент с сервера git:

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

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

на сделает fetch и merge для вас в одном шаге.

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

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

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

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

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

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

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

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

Конфликты слияния Git: программирование для Android

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

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

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

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

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

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

Итак, чтобы получить master вернуться в синхронизацию, сначала загрузите последний контент с сервера git:

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

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

В pull команда сделает fetch а также merge для вас за один шаг.

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

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

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

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

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

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

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

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

Это может быть Несвязанные пути это причина

Если да, попробуйте:

если это говорит

сделайте, как предложено: либо разрешите конфликты, а затем зафиксируйте, либо полностью прервите слияние

Вы также можете увидеть файлы, перечисленные в Несвязанные пути, который вы можете решить, выполнив


Когда я пытаюсь открыть каталог своего проекта в терминале, я вижу следующую ошибку:

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

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

Чтобы решить эту проблему, вам нужно будет разрешить рассматриваемые конфликты слияния, а также добавить и зафиксировать изменения, прежде чем вы сможете выполнить .

Образец воспроизведения и решение вопроса:

Сначала создадим структуру репозитория

Теперь мы находимся в repo_clone, и если вы сделаете , это вызовет конфликты

Если мы проигнорируем конфликты в клоне и сделаем больше коммитов в исходном репо сейчас,

А затем делаем , получаем

Обратите внимание, что сейчас находится в не объединенном состоянии, и если мы сделаем , мы ясно увидим то же самое:

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

и установите его содержимое на

а затем добавьте его и зафиксируйте изменения

Вы пытаетесь добавить еще один новый коммит в свою локальную ветку, пока ваш рабочий каталог не чист. В результате Git отказывается тянуть. Рассмотрите следующие диаграммы, чтобы лучше представить сценарий:

  1. Получить код от мастера
  1. Проверено на статус

Не объединенные пути:
(используйте "git add . ", чтобы отметить разрешение)

  1. Добавлены все новые изменения -
  1. Зафиксируйте изменения в голове-
  1. Нажал код -

Какой поворот может проблема решена с этим изображением -


Конфликты слияния будут разрешены.

Если вы не хотите вносить какие-либо изменения в вашу локальную ветку, я думаю, что это лучший подход.

Читайте также: