Подтвердить что ты не робот

Попытка вытащить файлы из моего репозитория Github: "отказ от объединения несвязанных историй"

Я изучаю git, и я следую сообществу сообщества Git.

Ранее (давным-давно) я создал публичный репозиторий на Github с некоторыми файлами. Теперь я настроил локальный репозиторий Git на моем текущем компьютере и зафиксировал некоторые файлы. Затем я добавил удаленный указатель на мою страницу Github:

[[email protected] c]# git remote add learnc https://github.com/michaelklachko/Learning-C

Это казалось успешным:

[[email protected] 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 на свой компьютер. Я сделал это:

[[email protected] c]# git fetch learnc
[[email protected] c]# git merge learnc/master
warning: refname 'learnc/master' is ambiguous.
Already up-to-date.

Однако я не вижу новых файлов в локальном каталоге. Как я могу их получить?

Я также пытался это сделать:

[[email protected] c]# git pull learnc master
From https://github.com/michaelklachko/Learning-C
 * branch            master     -> FETCH_HEAD
fatal: refusing to merge unrelated histories

Кстати, локально я на главной ветке (других ветвей нет):

[[email protected] c]# git status
On branch master
nothing to commit, working directory clean
4b9b3361

Ответ 2

git checkout master
git merge origin/master --allow-unrelated-histories

Устранить конфликт, затем

git add -A .
git commit -m "Upload"
git push

Ответ 3

В то время как я все для разблокирования проблем с работой людей, я не думаю, что "push -force" или "--allow_unrelated_histories" следует научить новых пользователей в качестве общих решений, поскольку они могут вызвать реальный хаос в репозитории, когда один использует их, не понимая, почему вещи не работают в первую очередь.

Если у вас есть такая ситуация, когда вы начали с локального репозитория, и хотите сделать удаленный доступ к GitHub для совместной работы с вами, вам стоит позаботиться.

Когда вы создаете новый онлайн-репозиторий, есть опция "Инициализировать этот репозиторий с помощью README". Если вы прочитали мелкий шрифт, в нем говорится: "Пропустите этот шаг, если вы импортируете существующий репозиторий".

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

Ссылка: мой первый опыт работы с git + хабом заключался в том, чтобы столкнуться с этой проблемой и сделать много обучения, чтобы понять, что произошло и почему.

Ответ 4

Если на одном конце нет существенной истории (например, если это всего лишь одно коммит-чтение в конце github), мне часто легче вручную копировать readme в локальное репо и делать git push -f, чтобы сделать моя версия - новый корень.

Я считаю, что он немного менее сложный, не требует запоминания неясного флага и сохраняет историю немного чище.

Ответ 5

На вашей ветке - скажи мастер, тяни и разрешай несвязанные истории

git pull origin master --allow-unrelated-histories

Работал на меня.

Ответ 6

Когда я использовал --allow-unrelated-histories, эта команда вызвала слишком много конфликтов. Были конфликты в файлах, над которыми я даже не работал. Чтобы преодолеть ошибку " Refusing to merge unrelated histories", я использовал следующую команду rebase:

git pull --rebase=preserve --allow-unrelated-histories

После этой фиксации незафиксированные изменения с сообщением фиксации. Наконец, выполните следующую команду:

git rebase --continue

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

Ответ 7

Выполните следующую команду:

git pull origin master --allow-unrelated-histories

Слияние Vim откроется. Добавьте некоторое слияние сообщение и:

  1. Нажмите ESC
  2. Нажмите Shift + ';'
  3. Нажмите "w", а затем нажмите "q".

И тебе хорошо идти.

Ответ 8

Это сработало для меня:

мастер происхождения git push --force