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ć? 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
nafalse
i użycie-f
aby wymusić push
Gdyby OP nie miał dostępu do repo, musiałby:
- zresetuj lokalną głowicę do pierwotnej pozycji (patrz " Odzyskaj z
git reset --hard?
"):git reset HEAD@{1}
- stwórz nowy commit, który anuluje połączenie, jak opisano w Księga ProGit, z
git revert
:git revert -m 1 HEAD~
(w Twoim przypadku)
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(-)
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.
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
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