Во git rebase origin/development
время следующего сообщения об ошибке отображается из Git:
fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef
Моя версия Git 2.9.0. Раньше нормально работал в предыдущей версии.
Как я могу продолжить эту перебазирование, разрешив несвязанные истории с принудительным флагом, введенным в новом выпуске?
git-rebase
ситуации, в то время как ответ дает флаг дляgit-merge
git pull [repo URL]
вместоgit clone [repo URL]
Ответы:
Поведение по умолчанию изменилось с Git 2.9:
Смотрите журнал изменений Git для получения дополнительной информации.
Вы можете использовать,
--allow-unrelated-histories
чтобы слияние произошло.источник
--allow-unrelated-histories
постоянно?git pull
также. Был в том «редком событии, которое объединяет истории двух проектов, которые начали свою жизнь самостоятельно».git --work-tree="." pull --allow-unrelated-histories
В моем случае ошибка была только
fatal: refusing to merge unrelated histories
при каждой попытке, особенно при первом удаленном запросе после удаленного добавления Git-репозитория.Использование
--allow-unrelated-histories
флага работало с запросом на получение таким образом:источник
git clone
.Попробуйте следующую команду:
Это должно решить вашу проблему.
источник
Я получил эту ошибку, когда я сначала установил локальный репозиторий. Затем я пошел на GitHub и создал новый репозиторий. Потом я побежал
Когда я пытался толкать или тянуть, я
fatal: unrelated_histories
каждый раз получал одну и ту же ошибку.Вот как я это исправил:
источник
.git
папку, запустилgit init
и сделал то, что сказала Адития, за исключением части слияния.Для этого введите команду:
Например,
Ссылка:
GitHub проблема, связанная с историями
источник
Вы будете перенаправлены в окно редактирования Vim:
git push --set-upstream origin <branch>
источник
:x<Enter>
будетУ меня такая же проблема. Попробуй это:
источник
Пытаться
git pull --rebase development
источник
git pull --rebase=preserve --allow-unrelated-histories development
newOrigin branch
вместоdevelopment
) добавило начальную фиксацию к вершине моей локальной ветки, фактически удалив из нее почти все. Я хотел, чтобы начальный коммит с нового пульта был внизу.Для Android Studio и IntelliJ:
Во-первых, совершайте все и разрешайте любые конфликты.
Затем откройте терминал снизу IDE и введите:
Теперь вы можете нажать.
источник
ВНИМАНИЕ, ЭТО ПОТЕНЦИАЛЬНО ЗАПОЛНИТ ДИСТАНЦИОННОЕ ХРАНИЛИЩЕ
Это сработало для меня:
источник
Поскольку все остальные ответы на самом деле не отвечают на вопрос, вот решение, вдохновленное этим ответом на связанный вопрос.
Итак, вы получаете свою ошибку, выполняя
git rebase
:Эта ошибка на самом деле не отменяет ребаз, но вы сейчас находитесь в середине:
Теперь вы можете выполнить слияние вручную. Узнайте родительские коммиты исходного коммита слияния:
Выясните, какой из двух родителей слияния является тем, который был слит с текущим (возможно, вторым, проверьте с помощью
git log 222222222
), а затем выполните слияние вручную, скопировав сообщение коммита исходного коммита слияния:источник
У меня такая же проблема. Проблема удаленная, что-то мешало этому.
Сначала я создал локальный репозиторий. Я добавил
LICENSE
иREADME.md
файл в мой локальный и совершил.Тогда я хотел удаленное хранилище, поэтому я создал его на GitHub. Здесь я сделал ошибку, отметив «Инициализировать этот репозиторий с помощью README» , что также привело к созданию README.md в удаленном режиме.
Так что теперь, когда я побежал
Я получил:
Теперь, чтобы преодолеть это, я сделал
Что привело к следующей ошибке:
Я старался:
Результат:
Решение:
Я удалил удаленный репозиторий и создал новый (я думаю, что только удаление файла
README
могло бы работать), и после этого сработало следующее:источник
git push --force ...
было бы правильным решением на шаге 1 в данном конкретном случаеОбычно это происходит, когда вы впервые фиксируете удаленный репозиторий. Поскольку ошибка ясно говорит «отказ от слияния несвязанных историй», нам нужно использовать флаг --allow-unrelated-history.
Теперь будут некоторые конфликты, которые мы должны решить вручную. После этого просто передайте код и нажмите его.
источник
--allow-unrelated-histories
флага.Две возможности, когда это может произойти -
Вы клонировали проект, и каталог .git каким-то образом был удален или поврежден. Это приводит к тому, что Git не знает о вашей локальной истории и, следовательно, заставляет его выдавать эту ошибку, когда вы пытаетесь отправить или извлечь из удаленного репозитория.
Вы создали новый репозиторий, добавили в него несколько коммитов, и теперь вы пытаетесь извлечь из удаленного репозитория, который уже имеет некоторые свои коммиты. Git также выдаст ошибку в этом случае, так как он понятия не имеет, как связаны два проекта.
РЕШЕНИЕ
мастер происхождения git pull - мелкие-не связанные истории
Ссылка - https://www.educative.io/edpresso/the-fatal-refusing-to-merge-unrelated-histories-git-error
источник
Я тоже боролся с этим, но мне удалось найти обходной путь.
Когда вы столкнетесь с ошибкой выше, просто выберите команду merge и затем продолжите ребазирование:
источник
Сначала перенесите удаленные изменения в локальную систему, используя следующую команду:
** бранчаме мастер в моем случае.
Когда команда pull выполнена, возникает конфликт. Вы должны решить конфликты. Я использую Android Studio для разрешения конфликтов.
Когда конфликты решены, слияние завершено!
Теперь вы можете спокойно нажимать.
источник
Resolve Conflict
в AS. Иногда всплывающее окно справа / вниз исчезает, и я ничего не могу сделать. Спасибо @oiyioЯ только что сделал
источник
При этом
git pull
я получил это сообщениеfatal: refusing to merge unrelated histories
для модуля репо, где я некоторое время не обновлял локальную копию.Я запустил эту команду, чтобы обновить локальную версию от источника. Я просто хотел получить последние новости от удаленного и не нуждался в локальных изменениях.
Это исправило это в моем случае.
источник
Прочитайте ссылку ниже, это работает для меня (без использования
--allow-unrelated-histories
флага)https://stackoverflow.com/a/39783462/4324288
источник
Я использую ребаз в течение многих лет, и я никогда не сталкивался с такой проблемой. Однако ваша первая проблема заключается в том, что вы пытаетесь сделать это непосредственно в удаленной ветви
development
из удаленного хранилища, называемогоorigin
. Это буквально неправильно, потому что rebase - опасная команда, которая перестраивает историю git. Сказав это, вы должны сначала примерить свой локальный репозиторий и нажать его только, если он работает для вас, как ожидалось.Итак, мой обычный рабочий процесс ребазирования выглядит следующим образом (но, пожалуйста, имейте в виду, что вы не должны использовать ребаз в ветвях, которые вы не единственный комитет. Для таких ветвей используйте просто слияние и разрешение конфликтов, если применимо):
master
; как однострочная команда):git checkout master && git pull origin master && git checkout development
git rebase master
git push -f origin development
Как я уже упоминал, имейте в виду, что rebase манипулирует историей git, что обычно плохо. Тем не менее, это можно сделать на ветках, где никто больше не берет на себя обязательства. Для того, чтобы ветки могли работать с другими разработчиками, используйте другую стратегию слияния, такую как слияние, сквош или вишневый кир. Итак, другими словами: Rebase не должен быть вашим инструментом для распределенной разработки. Это прекрасно работает для вас, если вы единственный, кто работает с этим хранилищем.
Мы используем функцию ветки стратегии. В этом я обычно использую rebase для получения «обновлений» от других разработчиков, которые происходили в это время в основной ветке. Это уменьшает размер коммитов, которые видны в запросе на получение. Поэтому рецензенту кода легче увидеть мои изменения, сделанные в этой ветви функций.
источник