Menu
Coddy logo textTech

Git Force Push

Ostatnia aktualizacja

Zwykły git push zostaje odrzucony, gdy twoja lokalna gałąź rozeszła się ze zdalną: Git nie nadpisze commitów, których możesz jeszcze nie znać. Force push omija tę kontrolę i sprawia, że zdalna gałąź odpowiada lokalnej. Potrzebujesz go po przepisaniu historii (rebase albo amend), ale może on skasować cudze commity, więc sięgaj po bezpieczniejsze --force-with-lease.

Wypróbuj te polecenia w terminalu online: prawdziwa powłoka w przeglądarce, bez żadnej instalacji.

Force push sprawia, że zdalna gałąź odpowiada twojej przepisanej lokalnej historii; rozbieżny commit na zdalnym repozytorium zostaje odrzucony.

Składnia

PolecenieCo robi
git push --forceNadpisuje zdalną gałąź bez żadnej kontroli
git push -fKrótka forma --force
git push --force-with-leaseWymusza tylko wtedy, gdy w międzyczasie nikt inny nie wypchnął zmian
git push --force-with-lease origin featureBezpieczniejszy force push do wskazanej gałęzi

--force vs --force-with-lease

Zachowanie--force--force-with-lease
Nadpisuje zdalną gałąźZawszeTylko jeśli nie zmieniła się od twojego ostatniego fetch
Może skasować cudze commityTakOdmawia, chyba że fetch odświeżył lease
Zalecane dla zespołówNieTak

Najczęstsze pytania o git force push

Kiedy potrzebny jest force push?
Gdy przepisujesz historię, która już jest w repozytorium zdalnym: po git rebase, git commit --amend albo interaktywnym rebase, który połączył commity. Twoja lokalna gałąź nie pasuje już do zdalnej historii, więc zwykły push zostaje odrzucony i tylko force push może ją zaktualizować.
Czym różni się --force od --force-with-lease?
--force bezwarunkowo nadpisuje zdalną gałąź, co może po cichu usunąć commity wypchnięte przez kolegę z zespołu po twoim ostatnim fetch. --force-with-lease nadpisuje tylko wtedy, gdy zdalna gałąź nadal wskazuje na commit znany z twojego ostatniego fetch; jeśli ktoś inny w międzyczasie coś wypchnął, odmawia i chroni jego pracę. Jedno zastrzeżenie: każdy fetch (także automatyczny fetch w tle w IDE) odświeża lease, więc rób push zaraz po sprawdzeniu repozytorium zdalnego. Mimo to na każdej wspólnej gałęzi wybieraj je zamiast --force.
Czy force push jest niebezpieczny?
Może być. Na wspólnej gałęzi zwykłe --force może nadpisać commity wypchnięte przez innych, czyli w praktyce usunąć ich pracę z repozytorium zdalnego. Na gałęzi, której używasz tylko ty, jest bezpieczny. W razie wątpliwości użyj --force-with-lease, które bezpiecznie się nie powiedzie, zamiast zmiażdżyć niewidziane zmiany.
Jak cofnąć force push?
Jeśli stare commity nadal masz lokalnie albo w git reflog, możesz zresetować do nich gałąź i ponownie zrobić force push, żeby przywrócić poprzedni stan. To kolejny powód, żeby używać --force-with-lease: dzięki niemu przypadkowe nadpisania są dużo mniej prawdopodobne.
Czy mogę to przećwiczyć online?
Tak. Otwórz terminal online i uruchom polecenia git push w prawdziwej powłoce w przeglądarce, bez żadnej instalacji. Darmowy interaktywny kurs Git w Coddy też krok po kroku omawia pracę z repozytoriami zdalnymi.
Ilustracja języków programowania w Coddy

Ucz się Gita z Coddy

ZACZNIJ