git push wysyła Twoje lokalne commity do zdalnego repozytorium (np. GitHub, GitLab, własny serwer). Mówiąc wprost: dopóki nie zrobisz pusha, Twoja praca siedzi tylko na Twoim dysku i nikt inny jej nie widzi. Push aktualizuje gałąź po stronie zdalnej tak, by wskazywała na te same commity co Twoja lokalna gałąź, i przy okazji przesyła brakujące obiekty. To ostatni krok klasycznej trójki: add → commit → push.
Składnia i najważniejsze opcje
Podstawowa forma to git push [opcje] [, gdzie zdalne zwykle nazywa się origin.
-u(alias--set-upstream) — ustawia śledzenie gałęzi, dzięki czemu kolejne razy wystarczy samogit push.--force-with-lease— bezpieczny force: nadpisze zdalną gałąź tylko, jeśli nikt nie dorzucił tam commitów, których nie masz lokalnie.--force-if-includes— dodatkowe zabezpieczenie używane razem z--force-with-lease; sprawdza w reflogu, że masz już zintegrowane to, co jest na zdalnym. Samo, bez lease, nic nie robi.--force(alias-f) — wymusza nadpisanie zdalnej gałęzi bez żadnych zabezpieczeń. Niebezpieczne.--tags— wypycha też tagi, których normalny push nie wysyła.--delete— usuwa gałąź lub tag po stronie zdalnej.--dry-run(alias-n) — pokazuje, co zostałoby wysłane, ale niczego nie wypycha.--all— wypycha wszystkie lokalne gałęzie naraz.
Przykłady użycia
git push— wypycha bieżącą gałąź do skonfigurowanego upstreamu.git push -u origin feature/login— wysyła nową gałąź i od razu ją śledzi; potem starczy samogit push.git push origin --delete stara-galaz— kasuje gałąź na serwerze (lokalna zostaje).git push --force-with-lease— wypycha porebaselubamend, nie depcząc cudzej pracy.git push origin v1.2.0— wysyła konkretny tag z wersją.
Częste błędy i pułapki
„rejected — fetch first” to klasyk: ktoś wypchnął coś przed Tobą. Zrób git pull (najlepiej --rebase), rozwiąż konflikty i dopiero wtedy push. Nie ratuj się od razu --force.
Goły git push --force potrafi skasować cudze commity bezpowrotnie. Jeśli naprawdę musisz nadpisać historię (po rebase), używaj --force-with-lease, a w zespole najlepiej --force-with-lease --force-if-includes — Git sam Cię zatrzyma, gdy na zdalnym pojawiło się coś nowego.
Pamiętaj też, że push wysyła tylko commity — niezacommitowane zmiany w plikach roboczych zostają u Ciebie. A tagów domyślnie nie wypycha wcale, więc po git tag dodaj git push --tags albo wskaż tag jawnie.
Powiązane komendy: git commit, git pull, git fetch, git remote, git branch, git tag.