Я изучаю git и слежу за книгой сообщества Git.
Ранее (давно) я сделал публичный репозиторий на Github с некоторыми файлами. Теперь я установил локальный репозиторий Git на моем текущем компьютере и зафиксировал некоторые файлы. Затем я добавил удаленное указание на мою страницу Github:
[root@osboxes c]# git remote add learnc https://github.com/michaelklachko/Learning-C
Это казалось успешным:
[root@osboxes c]# git remote show learnc
* remote learnc
Fetch URL: https://github.com/michaelklachko/Learning-C
Push URL: https://github.com/michaelklachko/Learning-C
HEAD branch: master
Remote branch:
master tracked
Local ref configured for 'git push':
master pushes to master (local out of date)
Теперь я хочу загрузить файлы из моего репозитория Github на мой компьютер. Я сделал это:
[root@osboxes c]# git fetch learnc
[root@osboxes c]# git merge learnc/master
warning: refname 'learnc/master' is ambiguous.
Already up-to-date.
Тем не менее, я не вижу новых файлов в моем локальном каталоге. Как я могу получить их?
Я также попытался сделать это:
[root@osboxes c]# git pull learnc master
From https://github.com/michaelklachko/Learning-C
* branch master -> FETCH_HEAD
fatal: refusing to merge unrelated histories
Кстати, локально я на главной ветке (других веток нет):
[root@osboxes c]# git status
On branch master
nothing to commit, working directory clean
git init
? В последнем случае эти репо не связаны (не имеют общих коммитов), и вы не можете объединить их (pull is fetch + merge).Ответы:
Пытаться
--allow-unrelated-histories
Как прокомментировал max630, или как объяснено здесь Git отказывается объединять несвязанные истории
источник
Разрешите конфликт, тогда
источник
Хотя я полностью за то, чтобы разблокировать рабочие вопросы людей, я не думаю, что «push --force» или «--allow_unrelated_histories» следует преподавать новым пользователям как общие решения, потому что они могут вызвать реальный хаос в хранилище, когда кто-то их использует не понимаю, почему вещи не работают в первую очередь.
Если у вас есть такая ситуация, когда вы начали с локального репозитория и хотите создать удаленный доступ на GitHub, чтобы поделиться своей работой, есть что-то, на что следует обратить внимание.
Когда вы создаете новый онлайн-репозиторий, появляется опция «Инициализировать этот репозиторий с помощью README». Если вы прочитаете мелкий шрифт, появится надпись «Пропустите этот шаг, если вы импортируете существующее хранилище».
Возможно, вы отметили этот флажок. Или, аналогично, вы сделали добавление / фиксацию в Интернете, прежде чем пытаться сделать первоначальный толчок. Что происходит, вы создаете уникальную историю коммитов в каждом месте, и они не могут быть согласованы без специального разрешения, упомянутого в ответе Nevermore (потому что git не хочет, чтобы вы работали таким образом). Вы можете следовать некоторым советам, упомянутым здесь, или просто не проверять эту опцию в следующий раз, когда вы захотите связать некоторые локальные файлы с новым пультом дистанционного управления; поддерживая пульт в чистоте для этого начального толчка.
Справка: мой первый опыт работы с git + hub состоял в том, чтобы столкнуться с этой же проблемой и многое узнать, чтобы понять, что произошло и почему.
источник
Если на одном конце нет существенной истории (иначе говоря, это просто один коммит readme на конце github), мне часто проще вручную скопировать readme в мое локальное хранилище и
git push -f
сделать мою версию новой корневой фиксацией ,Я считаю, что это немного менее сложно, не требует запоминания неясного флага и сохраняет историю немного чище.
источник
На вашей ветке - скажи мастер, тяни и разрешай несвязанные истории
Работал на меня.
источник
Выполните следующую команду:
Слияние Vim откроется. Добавьте некоторое слияние сообщение и:
И тебе хорошо идти.
источник
Когда я использовал
--allow-unrelated-histories
, эта команда вызвала слишком много конфликтов. Были конфликты в файлах, над которыми я даже не работал. Чтобы преодолеть ошибку" Refusing to merge unrelated histories"
, я использовал следующую команду rebase:После этой фиксации незафиксированные изменения с сообщением фиксации. Наконец, выполните следующую команду:
После этого моя рабочая копия была обновлена с удаленной копией, и я смог отправить свои изменения, как и раньше. Нет больше ошибок, связанных с историей во время вытягивания.
источник
git pull --rebase=merge --allow-unrelated-histories
в--rebase=preserve
осуждается git-scm.com/docs/git-pull#Documentation/...В моем случае возникла та же проблема, особенно первая попытка запроса по запросу после удаленного добавления Git-репозитория. Следующая ошибка столкнулась.
Используйте команду --allow-unrelated-histories. Работает отлично.
источник