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 ответов:
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 (вы должны потяните сначала)'
это сообщение предполагает, что на сервере есть крюк, который отклоняет быстрые толчки вперед. Да, это обычно не рекомендуется и является хорошим охранником, но поскольку вы единственный человек, использующий его, и вы хотите сделать принудительный толчок, обратитесь к администратору репо, чтобы разрешить сделать не-быстрый толчок, временно удалив крючок или предоставив вам разрешение в крючок, чтобы сделать это.