Проблема, выдвигающая новый код в Github

147

Я создал новый репозиторий на Github, который теперь имеет только файл Readme.md.

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

git remote add origin https://github.com/aniruddhabarapatre/learn-rails.git

После чего я ввел свое имя пользователя и пароль

git push -u origin master

Ошибка ---

To https://github.com/aniruddhabarapatre/learn-rails.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/aniruddhabarapatre/learn-rails.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 merge the remote changes (e.g.,
hint: 'git pull') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Я впервые помещаю свой код в репозиторий Github, и я заблудился с ошибками. Я искал несколько других вопросов, которые задают здесь, но ни у одного из них не было проблем с первого раза.

Aniruddha
источник

Ответы:

167

Когда вы создали свой репозиторий на GitHub , вы создали README.md , который является новым коммитом .

Ваш локальный репозиторий еще не знает об этом коммите. Следовательно:

Обновления были отклонены, потому что удаленный содержит работу, которой у вас нет локально.

Вы можете найти следовать этому совету:

Вы можете сначала объединить удаленные изменения (например, ' git pull') перед повторным нажатием.

То есть:

git pull
# Fix any merge conflicts, if you have a `README.md` locally
git push -u origin master
Johnsyweb
источник
3
Я сначала делаю git pull origin master, затем снова нажимаю.
Bagusflyer
12
в некоторых случаях вы можете получить fatal: refusing to merge unrelated historiesв таком случае, вы отправляете git pull --allow-unrelated-histories origin masterи затем нажимаете в соответствии с ответом выше
TheLebDev
1
Не работает для меня удаленный: нажмите отклонено. remote: remote: refs / возглавляет / master: ...: ожидаемое имя коммиттера xxx, но найдено yyy. Я делаю git config --global user.email yyy, и он все еще не распознает. Ничего не могу заставить. !!!
Baruch Atta
284

Если это ваш первый толчок

просто измените

git push **-u** origin master

изменить это так!

git push -f origin master
Ван Март
источник
5
Это удалило мой файл readme, который я сначала выложил на github. Теперь, похоже, я должен сделать это снова.
Джек
3
Вы можете просто добавить предупреждение, что -f
вызывает
Это плохой способ, он вызвал у меня проблему, он удалил readme, который не был создан мной, теперь я должен позвонить сопровождающему и сказать ему, что я глуп, извините, создайте чтение снова. :(
Мохаммад Эльсайед
62

AS ПРОСТО: Все, что вам нужно, это принудительный толчок. Потому что вы, возможно, создали readme.mdфайл на Github и еще не извлекли его.

git push -f origin master

А вот и ГИФ.

git push -f мастер оригинала

EW ВНИМАНИЕ : Использование forceможет изменить историю для других людей в том же проекте. По сути, если вам все равно, что файл будет удален для всех, просто продолжайте. Особенно, если вы единственный разработчик в проекте.

Ахмад Авайс
источник
1
Обратите внимание, что этот подход меняет историю, которую уже получили другие пользователи этого хранилища. git push -f origin masterне очень хорошая привычка формироваться
Johnsyweb
1
Это решение может решить проблему принудительной фиксации, но оно также удалит все прошлые фиксации !.
twenk11k
2
Остерегайтесь GitHub noobs ... Если вы создали Readme.md через GitHub, эта команда БУДЕТ УДАЛИТЬ ЕГО, поскольку она продвигает ваши новые изменения.
daCoda
Именно поэтому люди и приземляются здесь. -fТег удаляет файлы и должен использоваться с осторожностью.
Ахмад
34

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

git push -f origin master
Самарт Шах
источник
10
Обратите внимание, что это может удалить прошлые коммиты, что может или не может быть желательным
Crashalot
8

Предполагая, что вы добавили файл Readme.md через интерфейс, предоставленный github, файл readme еще не находится в вашей локальной папке. Следовательно, когда вы пытаетесь перейти к удаленному репо, вы получаете ошибку, потому что в вашем локальном репо отсутствует файл readme - это, так сказать, «время отстает». Следовательно, как предлагается в сообщении об ошибке, попробуйте сначала «git pull». Это извлечет файл readme из удаленного репозитория и объединит его с вашим локальным каталогом. После этого у вас не должно возникнуть проблем с отправкой в ​​удаленный репозиторий (выложенные вами команды выглядят действительными для меня).

Quercus
источник
6

Это происходит, когда вы пытаетесь продвинуться изначально. Потому что в вашем репозитории GitHub есть readMe.md или любая другая новая вещь, которой нет в вашем локальном репо. Сначала вы должны объединить несвязанную историю вашего репозитория github. Для этого

git pull origin master --allow-unrelated-histories

затем вы можете получить другие файлы из репозитория (readMe.md или любой другой), используя эту

git pull origin master

После этого

git push -u origin master

Теперь вы успешно вносите все изменения в репозиторий Github. Я не эксперт в git, но каждый раз, когда этот шаг работает для меня.

Chathuranga
источник
5

Учитывая, что вы не зафиксировали свои изменения какое-то время, возможно, выполнение этого будет работать для вас.

git add files
git commit -m "Your Commit"
git push -u origin master

Это сработало для меня, надеюсь, это сработает и для вас.

Роб Мчелвенни
источник
3

если вы используете git для mac в GUI, вы можете выбрать Respository-> Pull или «comm + shift + p» для «git pull», а затем опубликовать исходный код.

Чжэн Фучао
источник
3

Эта ошибка возникает, когда вы отправляете данные из локального каталога в удаленный репозиторий git с помощью следующей команды git: git push -u origin master

Как локальный каталог, так и файлы удаленного каталога git конфликтуют.

Решение :

После фиксации всех файлов для подготовки выполните следующие шаги.

  1. Извлекайте файлы из удаленного репозитория, поскольку они конфликтуют с локальным рабочим каталогом.

    • git pull <remoter-url> <branch-name>
  2. Подтвердите изменения снова.

    • git add -A
    • git commit -m ‘<comment>'
  3. После совершения слияния файлов с обоими каталогами вы можете использовать

    • git push -u origin master

Это решит проблему. Спасибо.

Ravi
источник
1

У меня была похожая проблема ... Я решил ее следующим образом (я не эксперт по git, поэтому я не знаю, правильное ли это решение, но у меня это сработало):

git pull origin master --allow-unrelated-histories
git merge origin origin/master
git rm README.md
git commit -m 'removed readme.md'
git push origin master
Марко Каджано
источник
0

Я боролся с этой ошибкой больше часа! Вот что помогло мне решить это. Все это, пока мой рабочий каталог был репозиторием, который я клонировал в своей системе.

Если вы делаете добавление файлов в свой существующий репозиторий ** 1. Я вытащил все, что я добавил в свой репозиторий, в свою папку GitHub:

мерзавец


Вывод был - какой-то файл readme file1 file2

  1. Я скопировал (перетащил) мои новые файлы (файлы, которые я хотел передать) в мой клонированный репозиторий (GitHub repo). Когда вы увидите этот репозиторий, вы должны увидеть свои старые и новые файлы.

например. какой-то файл readme файл1 файл2 новый файл1 новый файл2

  1. git add "newfile1" "newfile2"

  2. [опционально] git status гарантирует, что файлы, которые вы хотите добавить, размещены правильно или не выводились


На главном филиале Ваша ветвь обновлена ​​с «origin / master». Изменения, которые необходимо зафиксировать: (используйте «git reset HEAD ...» для удаления)

    new file:   newfile1
    new file:   newfile2

5.git commit -m "любое описание, которое вы хотите дать" 6.git push

И все мои новые файлы вместе со старыми были замечены в моем репо.

Potatojaisiladki
источник
0

Более простой ответ - вручную загрузить файл README.MD со своего компьютера на GitHub. Работал очень хорошо для меня.

Богдан Дойцин
источник
0

Я использую параметры «Ветви», затем щелкаю правой кнопкой мыши на папке «remote / origin» и затем нажимаю «удалить ветви из удаленного», см. Изображение ниже:

изображение

Кевин Андерсон Гомес Кабрал
источник
0

Я получил эту ошибку в Azure Git, и это решает проблему:

git fetch
git pull
git push --no-verify
canmustu
источник