git push rejected: ошибка: не удалось нажать некоторые ссылки


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

 git reset --hard 41651df8fc9

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

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

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

5 56

5 ответов:

git push -f если у вас есть разрешение, но это испортит любого, кто вытащит из этого РЕПО, поэтому будьте осторожны.

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

git config receive.denyNonFastForwards false

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

 git checkout master
 git push origin +HEAD

это установит наконечник origin / master в ту же фиксацию, что и master (и поэтому удалите коммиты между 41651df и origin / master)

просто делать

git pull origin [branch]

и тогда вы должны быть в состоянии нажать.

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

git pull --rebase origin [branch]

и тогда вы должны быть в состоянии нажать.

'remote: error: denying non-fast-forward refs / heads/master (вы должны потяните сначала)'

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

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

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

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

git remote set-url origin [url]