Git fetch vs. pull | Git fetch, git pull

Git fetch vs. pull | Git fetch, git pull

Git jako najpopularniejszy rozproszony system kontroli wersji – może się pochwalić rozbudowanym zbiorem funkcjonalności oraz różnego rodzaju integracji – co pozwala wykorzystać go swobodnie w wielu codziennych zadaniach.
W ramach tego materiału dowiesz się jak odświeżać stan gałęzi (ang. git fetch) i scalać go ze swoim lokalnym repozytorium (ang. git pull) oraz czym różnią się te dwie operacje.

Git fetch vs. pull – wprowadzenie

Z tego materiału dowiesz się:

  • Czym jest git fetch?
  • Czym jest git pull?
  • Co różni git fetch oraz git pull?

Git install – instalacja Git

Jeżeli nie masz jeszcze Gita zainstalowanego lokalnie – szybko możesz to nadrobić.
W poniższym materiale znajdziesz instrukcję, jak można to zrobić.

➡ ZOBACZ 👉: Install Git – Instalacja Git, Windows, Ubuntu – Bash, GUI

Git i Git branch

W ramach tego materiału zajmiemy się przede wszystkim pobieraniem przez gałęzie danych (git fetch oraz git pull) – natomiast kompletny tutorial Git i

Git branch znajdziesz poniżej.

➡ ZOBACZ:

👉 Git tutorial | stash, rebase, commit, merge, checkout, push i clone

👉 Git branch | git branch create, rename, delete, checkout, merge

Git fetch remote branch – pobieranie danych ze zdalnego repozytorium

Git fetch jest to narzędzie pobierające zmiany ze zdalnego repozytorium – wszystkie nowe dane z commitów, które zostały wykonane od czasu ostatniej synchronizacji ze zdalnym repozytorium, są pobierane do kopii lokalnej. Jednak – nowo pobrane dane nie są integrowane z plikami lokalnymi, a zmiany nie są mergowane z naszym kodem.

Patrząc na zdalne gałęzie i commit’y, musisz pamiętać, że patrzysz na „migawkę” (ang. snapshot) danych. Nie istnieje stałe i nieprzerwane połączenia „na żywo” ze zdalnym repozytorium.
Zamiast tego, Git zapisuje najnowsze informacje o Twoich zdalnych gałęziach za każdym razem, gdy wykonywana jest operacja fetch. Oznacza to, że informacje o zdalnych gałęziach i commitach, które widzisz, są tak świeże, jak ostatnia pobrana migawka zdalnego repozytorium.

Aby zobaczyć nowe zdalne gałęzie, commit’y, tagi itp., musisz wyraźnie powiedzieć Gitowi, aby pobrał te informacje – za pomocą git fetch.

W zależności od Twoich potrzeb i sytuacji możesz użyć jednej z poniższych opcji, aby pobrać dane:

  • Git fetch origin – pobiera wszystkie gałęzie, również wszystkie commit’y i pliki ze zdalnego repozytorium.
  • Git fetch origin <nazwa brancha> – pobiera dane z określonej zdalnej gałęzi.

Przydatnym parametrem jest również ––prune. Parametr ten nakazuje Gitowi usunięcie wszelkich odwołań (referencji) do gałęzi, które już nie istnieją na zdalnym repozytorium. To gwarantuje, że nie będziesz patrzył na nieaktualne dane.

 Git fetch origin --prune

Git pull remote branch – pobieranie i integrowanie zmian

Git pull służy do pobierania (git fetch) i integrowania (git merge) zdalnych zmian.

Kiedy przy projekcie pracuje kilka, a może i więcej osób, to zmiany są przyłączane do zdalnego repozytorium z dosyć dużą częstotliwością – a to hotFix, bugFix a może i nowa funkcjonalność wleci. Twoje lokalne repozytorium nie odświeża się na bieżąco. Jest ono migawką (ang. snapshot) zdalnego repozytorium w określonym momencie. Wyobraź sobie, że pracujesz nad jakimś fragmentem kodu od kilku dni. Od tego czasu Twoje lokalne repozytorium nie było odświeżane o dane ze zdalnego repo. Przez kilka dni tak naprawdę może się dużo zadziać w projekcie. Dlatego warto zaciągnąć zmiany (git pull), aby nasze lokalne repo było jak najbardziej aktualne, żeby nie doprowadzić do sytuacji, w której podczas push’a powstanie mnóstwo konfliktów.

Domyślne git pull używa git merge, istnieje jednak możliwość skonfigurowania go tak, aby używał git rebase. Jeżeli odczujesz potrzebę, by zrobić taką podmiankę, użyj flagi ––rebase.

 Git pull --rebase

W codziennej pracy programisty powinniśmy stosować szereg dobrych praktyk, które ułatwią nam, jak i innym codzienną pracę. Jedną z nich jest stosowanie git pull. Dobrze jest użyć go:

  • przed rozpoczęciem pracy (aby posiadać najnowsze zmiany),
  • przed wykonaniem git push (aby uniknąć ewentualnych konfliktów).

Ciekawą flagą jest także ––all. Git pull ––all pobiera dane ze wszystkich zdalnych gałęzi na zdalnym repozytorium.

Git force pull – wymuszenie pobierania i integrowania zmian

Pracując nad projektem z zespołem w momencie, kiedy próbujesz wykonać pull’a na swoim lokalnym repozytorium możesz natknąć się na komunikaty o konfliktach, które uniemożliwiają Ci zrobienie pull’a:

git pull – git force pull

Powód powstania takich komunikatów o konfliktach jest dość prosty: mam lokalne zmiany, które zostaną nadpisane przez nadchodzące nowe zmiany, które przyniesie git pull.

Ze względów bezpieczeństwa Git nigdy po prostu nie nadpisze Twoich zmian. Git nie ma funkcji „force pull” – ale istnieje możliwość wykonania kilka kroków, które pozwolą „zasymulować” takie polecenie.

1. Posprzątaj swój katalog roboczy

Musisz doprowadzić swój katalog roboczy do stanu, w którym nie będzie zawierał zmian, które spowodowały konflikt.

Jedną z opcji jest cofnięcie ich używając polecenia git reset –hard. Pamiętaj, że polecenie to usunie również historię usuniętych zmian.

Jeżeli chcesz lepiej poznać polecenie git reset –hard, sprawdź koniecznie:

➡ ZOBACZ 👉: Git reset | git reset hard, git reset to origin

Gdy stwierdzisz jednak, że Twoje zmiany będą Ci jeszcze potrzebne, możesz zapisać lokalne zmiany w skrytce (ang. stash).

W Stash’u zmiany będą dostępne na wypadek, gdybyś chciał je odzyskać w późniejszym terminie.

 
Git stash --include-untracked

Jeśli masz również nieśledzone zmiany (ang. untracked), będziesz musiał użyć polecenia git clean, aby się ich również pozbyć. Używając tej komendy, musisz pamiętać o tym, że zmiany usuniesz bezpowrotnie, dlatego stosuj ją przemyślanie.

 
Git clean -fd

2. Wykonaj ponownie pull’a

Kiedy pozbyłeś się zmian powodujących konflikty i usunąłeś nieśledzone zmiany, możesz w końcu ściągnąć i przyłączyć zdalne zmiany do swojego lokalnego repozytorium.

Git fetch vs. git pull

Aby lepiej zrozumieć różnicę pomiędzy git fetch a git pull spójrzmy na poniższą grafikę.

Git fetch updatuje dane do lokalnego repozytorium natomiast git pull robi update lokalnego repozytorium, jak i kopii roboczej.

git pull – git fetc

 

git pull – git fetch

 

Git fetch | Git pull – pobieranie danych

W ramach tego materiału przećwiczyliśmy sposoby na pobieranie danych (git fetch) oraz na jednoczesne pobieranie i scalanie danych (git pull).

Jeżeli chcesz kontynuować swoją przygodę z gitem – to zapraszam do dodatkowych materiałów:

➡ ZOBACZ 👉: Git tutorial | stash, rebase, commit, merge, checkout, push i clone


Jak zostać programistą

8 rzeczy, które musisz wiedzieć, żeby dostać pracę jako programista.

Jak zostać programistą
No comments
Share:

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *