Не могу выдвинуть изменения после использования git reset --hard - PullRequest
40 голосов
/ 21 марта 2012

Я допустил ошибку и передал некоторые изменения в git, которые я не должен был делать. После того, как я сделал коммит, я отправил свои изменения. Затем я использовал следующие команды, чтобы попытаться сбросить свои изменения.

 git reset --hard head

Теперь я хочу отправить этот «сброс» в удаленный репозиторий с помощью этой команды:

git push MyBranch

Но я получаю эту ошибку:

remote: error: denying non-fast-forward refs/heads/branch (you should pull first)

Я пытался использовать эту команду безуспешно:

git push -f "origin" 

Есть идеи, что я могу сделать?

Ответы [ 2 ]

78 голосов
/ 21 марта 2012
git push -f origin myBranch 

должно работать (при условии, что вы знаете, что это может быть опасно, если MyBranch уже был получен другими в своем репо)

Примечание: если в вашем удаленном репо ('origin') есть config , установленный с помощью

receive.denyNonFastForwards true

, он будет запрещать любое ускоренное продвижение вперед (даже при форсировании).
См. " Есть ли способ настроить репозиторий git для отклонения"git push --force '?".


OP user654019 сообщает

На этот раз мне удалось решить проблему, настроивdenyNonFastForwards до false и использование -f для принудительного толчка

Если у ОП нет доступа к репо, ему / ей придется:

Byпример:

$ git revert -m 1 [sha_of_C8]
Finished one revert.
[master 88edd6d] Revert "Merge branch 'jk/post-checkout'"
 1 files changed, 0 insertions(+), 2 deletions(-)

revert a merge

Полное обсуждение того, как отменить слияние, можно найти здесь . .

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

8 голосов
/ 21 марта 2012

Вам нужно указать, какую ссылку вы хотите нажать:

git push -f origin MyBranch
...