Почему git push отклоняется? (git pull не помогает)

Моя текущая ветка - my_branch. Пытаясь внести изменения в удаленное репо, я получаю:

$ git push
Counting objects: 544, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (465/465), done.
Writing objects: 100% (533/533), 2.04 MiB | 1.16 MiB/s, done.
Total 533 (delta 407), reused 0 (delta 0)
To [email protected]
   4ed90a6..52673f3  my_branch -> my_branch
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to '[email protected]'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

Попытка git pull приводит к:

$ git pull
Already up-to-date.

Почему я получаю эту ошибку? Как я могу решить эту проблему и успешно выполнить git push?


person Misha Moroshko    schedule 17.01.2012    source источник


Ответы (5)


Моя текущая ветка - my_branch.

Это твоя проблема. Когда вы вытаскиваете, Git сообщает вам, что ваша ветка my_branch обновлена, а нет master, что делает origin/master невозможным быстрое слияние.

Чтобы протолкнуть мастер, вам нужно проверить master и потянуть. Это объединит изменения, ожидающие origin/master, и позволит вам продвигать свои собственные изменения.

git checkout master
git pull
# resolve conflicts, if any
git push
person meagar    schedule 17.01.2012
comment
Если вы хотите нажать только my_branch: git push origin my_branch. - person ysdx; 18.01.2012
comment
Просто чтобы прояснить принятый ответ: 4ed90a6..52673f3 my_branch -> my_branch указывает, что my_branch было успешно обновлено, но ! [rejected] master -> master (non-fast-forward) указывает, что главная ветвь потерпела неудачу. Это означает, что некоторые ссылки не удалось отправить в репозиторий, но некоторые другие могли пройти успешно, например my_branch. - person Ryan Bigg; 18.01.2012
comment
Это также может произойти, если вы размещаете репозиторий git самостоятельно, и вы удаленно проверены (и вошли в систему, например, через терминал) в удаленную ветку, которую вы хотите отправить. В этом случае переключите ветвь (на удаленном) и снова нажмите. - person Markus Zeller; 06.06.2020

[Если ваша основная ветка уже настроена для перебазирования при извлечении, вам просто нужно выполнить извлечение основной ветки, как описано в других ответах, но в противном случае:]

Если вы получаете сообщение без перемотки вперед, это означает, что вы можете нажимать коммиты только поверх существующих коммитов, но вы пытаетесь сделать иначе. Сделайте перебазировку на master перед нажатием (при условии, что пульт называется origin):

git checkout master
git pull --rebase origin master
git push

См. Также этот вопрос: git rebase и git push: non -быстрый вперед, зачем использовать?

person The Nail    schedule 17.01.2012

изменить разрешение разработчика на «Сопровождающий»

person Javad Nadery    schedule 01.08.2018
comment
Разве это не качественный ответ. - person Mathews Sunny; 01.08.2018

Это также может быть Git Hook! Это приведет к той же ошибке.

Git Hooks запускаются локально, поэтому они могут перехватывать и «предварительно обрабатывать» ваши коммиты до того, как они будут отправлены.

Подробнее о Git Hooks здесь: https://githooks.com/ Вы сможете найти хуки в корне вашего репо здесь: .git/hooks. Чтение файлов ловушек может помочь, а может и не помочь; они полны расширенных команд git и регулярных выражений. Используйте File Explorer / Finder, чтобы посмотреть, как файлы с префиксом точки (.git, .gitignore) часто скрыты в IDE.

Я получил ту же ошибку при попытке отправить ветку с именем feature/JIRA-123_description-text, и после некоторого осмотра я обнаружил, что все другие ветки проекта были названы features/..., поэтому мне просто не хватало s в слове features. Это исправило переименование ветки.

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

person Olemak    schedule 15.04.2020

что решило это для меня:

перейдите на https://github.com/settings/emails

unckeck: «Блокировать нажатия командной строки, открывающие доступ к моей электронной почте»

проблема для меня была: у меня была моя электронная почта в лицензии

person SwiftNinjaPro    schedule 13.03.2020