Nie można wypchnąć zmian po użyciu Git reset --hard

Popełniłem błąd i wprowadziłem kilka zmian do Gita, których nie powinienem był popełniać. Po tym, jak wprowadziłem commit, przesunąłem zmiany. Następnie użyłem następujących poleceń, aby spróbować zresetować moje zmiany.

 git reset --hard head

Teraz chcę wcisnąć ten 'reset' do zdalnego repozytorium poleceniem:

git push MyBranch

Ale dostaję ten błąd:

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

Próbowałem użyć tej komendy bez powodzenia:

git push -f "origin" 
Wiesz, co mogę zrobić?
Author: Michael Durrant, 2012-03-21

2 answers

git push -f origin myBranch 
Jeśli MyBranch został już pobrany przez innych w ich własnym repo, powinno działać (pod warunkiem, że wiesz, że może to być niebezpieczne, jeśli MyBranch został już pobrany przez innych w ich własnym repo)]}

Uwaga: jeśli zdalny repo ('origin') ma swój config ustawiony na

receive.denyNonFastForwards true

Zaprzeczy wszelkim nie szybkim posunięciom do przodu (nawet jeśli są wymuszone).
Zobacz " czy istnieje sposób skonfigurowania repozytorium git tak, aby odrzucało 'git push --force'?".


OP user654019 raporty

Udało mi się rozwiązać problem tym razem poprzez ustawienie denyNonFastForwards na false i użycie -f aby wymusić push

Gdyby OP nie miał dostępu do repo, musiałby:

By przykład:

$ 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(-)

Przywróć połączenie

Pełna dyskusja na temat sposobu przywrócenia połączenia może znaleźć tutaj .

Idea pozostaje do wygenerowania tylko nowych commitów, w tym jednego odwracającego zmiany wprowadzone przez commit scalający.
Następnie możesz przesunąć nowy commit, jako szybką zmianę do przodu.

 63
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:29

Musisz określić, który ref chcesz wcisnąć:

git push -f origin MyBranch
 6
Author: ralphtheninja,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-21 12:12:47