Skonfigurowałem zdalne nie-podstawowe „główne” repozytorium i sklonowałem je na moim komputerze. Wprowadziłem kilka lokalnych zmian, zaktualizowałem moje lokalne repozytorium i przesunąłem je z powrotem do mojego zdalnego repozytorium. Do tego momentu wszystko było w porządku.
Teraz musiałem coś zmienić w zdalnym repozytorium. Potem zmieniłem coś w moim lokalnym repozytorium. Uświadomiłem sobie, że zmiana zdalnego repo nie była potrzebna. Próbowałem więc git push
z lokalnego repozytorium do mojego zdalnego repozytorium, ale wystąpił błąd:
Aby zapobiec utracie historii, aktualizacje nie do szybkiego przewijania zostały odrzucone Scal zdalne zmiany przed ponownym przekazaniem dalej. Aby
git push --help
uzyskać szczegółowe informacje, zobacz sekcję „Uwaga na temat szybkiego przewijania” .
Myślałem, że prawdopodobnie a
git push --force
zmusiłbym moją kopię lokalną do wypchnięcia zmian do zdalnej i uczynienia tego samego. Wymusza aktualizację , ale kiedy wracam do zdalnego repozytorium i dokonuję zatwierdzenia, zauważam, że pliki zawierają nieaktualne zmiany (te, które poprzednio miały główne repozytorium).
Jak wspomniałem w komentarzach do jednej z odpowiedzi :
[Próbowałem wymusić, ale wracając do serwera głównego, aby zapisać zmiany, dostaję przestarzałą inscenizację. Kiedy więc zatwierdzam, repozytoria nie są takie same. A kiedy próbuję ponownie użyć git push, pojawia się ten sam błąd.
Jak mogę rozwiązać ten problem?
git push --force
jest to rzeczywiście inny prawidłowy sposób wymuszania wypychania i wypychania gałęzi tak samo dobrze, jak git push origin master --force
w przypadku domyślnej wersji Git push.default config settings
, chociaż które gałęzie, które są szczególnie wypychane, różnią się między wersjami Git przed 2.0 a po 2.0.
git push --force
działa teraz dobrze, FWIW ...
git push --force-with-lease
działa jeszcze lepiej :), odmówi aktualizacji oddziału, chyba że jest to stan, którego się spodziewasz. (patrz developer.atlassian.com/blog/2015/04/force-with-lease )
git push -force
ostrożniej .