Ошибка Github "Обновления были отклонены, потому что кончик вашей текущей ветви позади" - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь инициировать новый проект в github. Вот мои шаги, которые привели к этой ошибке:

Создать новый репозиторий в github, скопировать ссылку https://github.com/username/repository.git

>cd to project folder

>git init

>git remote add origin https://github.com/username/repository.git

>git add -A

>git status

>git commit -m "adding files"

>git push origin master

Ошибка:

 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/username/repository.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Я пытался сделать >git pull, но я получаю другую ошибку

There is no tracking information for the current branch.
Please specify which branch you want to merge with.

Далее я попробовал предложение выше

>git pull origin master
From https://github.com/username/repository.git
 * branch            master     -> FETCH_HEAD
fatal: refusing to merge unrelated histories

Я нашел решение онлайн, которое является исправлением, но оно не говорит мне, что я сделал неправильно в последовательности git команд

>git pull origin master --allow-unrelated-histories

1 Ответ

0 голосов
/ 25 марта 2020

git init

Это было то, что вы сделали неправильно. Вы должны были клонировать репозиторий из github.


Чтобы уточнить. Вы запустили новый репозиторий на github

Создайте новый репозиторий в github, скопируйте ссылку https://github.com/username/repository.git

Думайте об этом так же, как быть S SH в github.com и делать git init. Это инициализирует, т.е. создает первый коммит на мастере для пустого репо.

Затем. Локально, вы также сделали git init.

Это инициализировало новое локальное репо с коммитом на мастер.

На этом этапе у вас есть 2 разных репо (один локальный / one remote), и хотя хэши для больших двоичных объектов будут одинаковыми (при условии, что оба репо пусты), древовидные структуры и ссылки могут отличаться. Значение хэшей начальной фиксации отличается. Это мое предположение относительно того, почему вы получили ошибку:

hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref.

Это также причина, по которой выдергивание ничего не даст. Вытягивание - это просто объединенная операция извлечения / слияния.

Но если вы учитываете свой сценарий, даже если вы потянули до того, как добавили файлы и зафиксировали локально, это все равно 2 репо (локальное / удаленное) с потенциально различными хешами фиксации на Первоначальный коммит ... тот, который вы инициализировали локально на вашей машине, считает, что коммит ha sh правильный. Тот, который вы инициализировали на github, считает, что его коммит корректен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...