git push rejected: error: не удалось отправить некоторые ссылки - PullRequest
59 голосов
/ 23 марта 2012

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

 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@git.somewhere.git'

Git предлагает сделать git pull, и это то, что другие люди предложили другим пользователям.Тем не менее, я считаю, что git pull объединит мой текущий код с кодом, который мне больше не нужен (основная редакция).Как я могу сделать push и забыть о версии / ревизиях впереди меня?

Ответы [ 7 ]

94 голосов
/ 23 марта 2012

git push -f если у вас есть разрешение, но это испортит любого, кто тянет из этого репо, так что будьте осторожны.

Если это запрещено, и у вас есть доступ к серверу, как сказано ниже в canzar, вы можете разрешить это на сервере с помощью

git config receive.denyNonFastForwards false
25 голосов
/ 23 марта 2012

Если вы единственный человек, работающий над проектом, вы можете сделать следующее:

 git checkout master
 git push origin +HEAD

При этом для кончика источника / мастера будет установлен тот же коммит, что и у мастера (), поэтому удаляются коммиты между 41651df и оригиналом / мастером )

14 голосов
/ 08 сентября 2014

Просто сделайте

git pull origin [branch]

, и тогда вы сможете нажать.

Если у вас есть коммиты по-прежнему, но вы еще не добавили ветку, попробуйте

git pull --rebase origin [branch]

и тогда вы сможете нажать.

4 голосов
/ 23 марта 2012

'remote: error: запрещение не-перемотки вперед refs /heads / master (сначала вы должны потянуть)'

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

2 голосов
/ 13 июня 2016

Что я сделал, чтобы решить эту проблему:

git pull origin [branch]
git push origin [branch]

Также убедитесь, что вы указываете на правую ветку, выполнив:

git remote set-url origin [url]
1 голос
/ 13 мая 2019

для меня следующее сработало, просто запустил эти команды одну за другой

git pull -r origin master

git push -f origin your_branch

0 голосов
/ 16 апреля 2019

Я сделал следующие шаги, чтобы решить проблему. На ветке, которая давала мне ошибку:

  1. git pull origin [branch-name]<current branch>
  2. После извлечения получил некоторые проблемы слияния, решил их, перенес изменения в ту же ветку.
  3. Создан запрос на извлечение с нажатой ветвью ... Тада, Мои изменения отражали все.
...