Попытка извлечь файлы из моего репозитория 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 ответов:
попробовать
--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
чтобы сделать мою версию новой корневой фиксацией.Я считаю, что это немного менее сложно, не требует запоминания неясного флага и сохраняет историю немного чище.