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


Я изучаю 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
5 92

5 ответов:

попробовать --allow-unrelated-histories

Как прокомментировал max630, или как объяснено здесь Git отказывается объединять несвязанные истории

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

разрешить конфликт, то

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

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

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

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

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

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

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

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

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

git pull origin master --allow-unrelated-histories

работал для меня.