git pull to skrót, który robi dwie rzeczy naraz: najpierw pobiera zmiany ze zdalnego repozytorium (jak git fetch), a potem od razu wbudowuje je w gałąź, na której aktualnie siedzisz. Dzięki temu jednym poleceniem aktualizujesz swój lokalny kod do tego, co koledzy zdążyli wepchnąć na serwer. Domyślnie scalanie odbywa się przez merge, ale jednym przełącznikiem zamienisz je na rebase. To codzienny chleb każdego, kto pracuje w zespole na wspólnym repo.
Składnia i najważniejsze opcje
Podstawowa forma to git pull [opcje] [. Bez argumentów Git użyje skonfigurowanego upstreamu bieżącej gałęzi.
--rebase— zamiast scalać przez merge, przestawia Twoje lokalne commity na czubek pobranej gałęzi (czystsza, liniowa historia bez commitów scalających).--no-rebase— wymusza klasyczny merge, nawet gdy w konfiguracji ustawiłeś rebase na stałe.--ff-only— przerywa operację, jeśli nie da się wykonać fast-forward. Nic nie scali na siłę, więc nie narobisz bałaganu w historii.--no-ff— zawsze tworzy commit scalający, nawet gdy fast-forward byłby możliwy.--autostash— przed rebase chowa Twoje niezacommitowane zmiany do schowka i przywraca je po wszystkim (działa z--rebase).--prune— przy okazji pobierania kasuje lokalne referencje do gałęzi, które już zniknęły ze zdalnego repo.--verbose— pokazuje więcej szczegółów o tym, co właściwie zostało pobrane i scalone.-q/--quiet— tryb cichy, ogranicza komunikaty do minimum.
Przykłady użycia
git pull— pobiera i scala zmiany ze skonfigurowanego upstreamu bieżącej gałęzi. Klasyka.git pull origin main— ściąga konkretnie gałąźmainze zdalnegoorigini scala ją z tym, na czym stoisz.git pull --rebase— aktualizuje gałąź, ale Twoje commity ląduje na szczycie pobranych zmian, bez commitu scalającego.git pull --rebase --autostash— to samo, ale Git sam schowa i przywróci Twoje niezapisane zmiany, więc nie musisz ręcznie robićgit stash.git pull --ff-only— zaktualizuje gałąź tylko wtedy, gdy obejdzie się bez scalania. Bezpieczny wybór do codziennego synchronizowania.
Częste błędy i pułapki
Najczęstszy zgrzyt to konflikty scalania — gdy Ty i ktoś inny ruszyliście te same linie. Git zatrzyma pull i każe Ci ręcznie rozwiązać konflikty, a potem dokończyć przez git merge --continue albo git rebase --continue. Druga pułapka: git pull --rebase na publicznej, współdzielonej gałęzi przepisuje historię — rób to tylko na swoich lokalnych commitach, których nikt jeszcze nie ma. Jeśli masz brudny katalog roboczy (niezacommitowane zmiany), pull potrafi odmówić — wtedy ratuje --autostash albo wcześniejszy git stash. Warto też pamiętać, że domyślne zachowanie (merge czy rebase) zależy od konfiguracji pull.rebase, więc to samo polecenie u dwóch osób może zadziałać inaczej. Nowe wersje Gita wprost wymagają ustawienia tej strategii i ostrzegają, gdy jej brakuje.
Powiązane komendy: git fetch, git merge, git rebase, git push, git stash, git remote.