Git Fetch: klasa mistrzowska

Opublikowany: 2023-02-26
Laptop z systemem Linux przedstawiający okno terminala z wzorem kuli ziemskiej w tle i binarnym znakiem wodnym
fatmawati achmad zaenuri/Shutterstock.com
Polecenie git fetch jest jak polecenie git pull, które aktualizuje twoje lokalne repozytorium informacjami i zatwierdzeniami ze zdalnego repozytorium, bez nadpisywania plików roboczych.

Polecenie Git fetch pozwala spojrzeć przed wykonaniem skoku. Możesz odkryć, jakie zmiany zostały wprowadzone w zdalnym repozytorium, ale bez nadpisywania plików lokalnych plikami zdalnymi.

Spis treści

Co to jest pobieranie git i co robi?
Git fetch vs. pull
Synchronizuj swoje lokalne i zdalne repozytoria za pomocą git fetch
Zobacz wszystkie pobrane tagi
Najpierw wykonaj próbę na sucho
Jak pobrać pojedynczą gałąź
Pobierz wszystkie gałęzie
Porównanie oddziałów lokalnych i zdalnych
Synchronizacja oddziału lokalnego z oddziałem zdalnym
Na wpół wyszkolony szczeniak

Co to jest pobieranie git i co robi?

Polecenie fetch w Git bezpiecznie pobiera zatwierdzenia, pliki i inne informacje ze zdalnego repozytorium do lokalnego repozytorium. Użyj pobierania, gdy chcesz zobaczyć, jakie zmiany wprowadzili inni programiści, bez konieczności ich akceptowania. Twoje pliki lokalne pozostają nietknięte. Dlaczego to jest ważne?

Musisz zachować rozsądek, gdy pracujesz jako część zespołu programistów. Zdalne lub centralne repozytorium będzie zawierało zmiany i nowe gałęzie utworzone przez innych programistów i przesłane do zdalnego repozytorium.

Całkiem możliwe, że ktoś zaktualizował zdalną kopię plików, które zmodyfikowałeś lokalnie na swoim komputerze. Jeśli przypadkowo wykonasz polecenie git pull , aby zaktualizować swoje lokalne repozytorium, prawdopodobnie odkryjesz, że zajmujesz się scalaniem zmian, których możesz nawet nie chcieć.

Po pobraniu informacji możesz je przejrzeć i zobaczyć, jakie są zmiany. Dzięki temu możesz dokonać świadomego wyboru, co chcesz scalić teraz, jeśli w ogóle, a co chcesz odłożyć na później.

Git fetch vs. pull

Polecenie git fetch zachowuje się jak polecenie git pull , ale bez kroku, który nadpisuje pliki lokalne. Twoje lokalne repozytorium jest aktualizowane i synchronizowane, ale zmiany nie są zapisywane w stanie roboczym twojego lokalnego repozytorium, więc twoje pliki pozostają nietknięte.

Innymi słowy, polecenie git pull jest jak git fetch po którym natychmiast następuje git merge .

Synchronizuj swoje lokalne i zdalne repozytoria za pomocą git fetch

Aby pobrać wszystkie zaktualizowane metadane i zatwierdzenia ze zdalnego repozytorium do lokalnego repozytorium, użyj polecenia git fetch z nazwą lub adresem URL zdalnego repozytorium. Domyślnie pierwsze zdalne repozytorium nosi nazwę „Origin”.

 git pobiera źródło

Możesz pominąć słowo „pochodzenie”, jeśli pracujesz z pojedynczym zdalnym repozytorium.

 pobierz git 

Za pomocą polecenia git fetch w domyślnym zdalnym repozytorium

To pobiera wszelkie aktualizacje z repozytorium „origin”, ale nie scala zmian z plikami roboczymi. Widzimy, że istnieje nowa gałąź, zwana „nową gałęzią”, która została dla nas pobrana.

Po użyciu polecenia fetch możesz zobaczyć pełną listę oddziałów na pilocie, używając opcji -r (remote) z poleceniem branch.

 gałąź git -r 

Patrząc na gałęzie istniejące na domyślnym pilocie

Zawiera listę wszystkich gałęzi, o których wie pilot, a które po fetch znajdują się również w twoim lokalnym repozytorium.

Zobacz wszystkie pobrane tagi

Podobnie możesz użyć opcji tag (zauważ, że jest to „tag” bez „s”), aby zobaczyć listę tagów.

 znacznik git 

Używanie polecenia git tag do wyświetlania tagów w lokalnym repozytorium

POWIĄZANE: Jak przełączać, dodawać i usuwać piloty Git

Najpierw wykonaj próbę na sucho

Chociaż git fetch nie scala zmian z plikami roboczymi, nadal aktualizuje lokalne repozytorium. Jeśli chcesz zobaczyć, jakie zmiany wykona polecenie fetch , bez faktycznego ich wprowadzania, użyj opcji --dry-run .

 git fetch — uruchomienie na sucho 

Używając opcji --dry-run, zobacz zmiany, które pobierze polecenie pobierania

Jak pobrać pojedynczą gałąź

Pobieranie informacji o pojedynczym oddziale jest łatwe. Dodaj nazwę gałęzi do wiersza poleceń, aby powiedzieć fetch , że musisz wiedzieć tylko o tej jednej gałęzi.

Tutaj mówimy fetch , aby pobrał gałąź „mary-feature” ze zdalnego repozytorium „origin”.

 git fetch origin mary-feature 

Używanie git fetch do pobrania pojedynczej zdalnej gałęzi

Teraz, gdy szczegóły i zawartość zdalnej gałęzi znajdują się w twoim lokalnym repozytorium, możesz użyć polecenia git checkout aby utworzyć nową gałąź i pobrać zdalną gałąź. Nie spowoduje to nadpisania żadnych istniejących plików, jeśli korzystasz z tej gałęzi po raz pierwszy.

 git checkout -b mary-feature origin/mary-feature 

Bezpieczne wyewidencjonowanie pobranego oddziału zdalnego do nowego oddziału lokalnego

Pobierz wszystkie gałęzie

Jeśli używasz wielu pilotów, możesz zaoszczędzić czas, przeciągając wszystkie zmiany ze wszystkich gałęzi z powrotem do lokalnego repozytorium za pomocą opcji --all .

 git fetch --all

Porównanie oddziałów lokalnych i zdalnych

Aby zobaczyć, jak pliki w oddziale zdalnym różnią się od lokalnych kopii, użyj git fetch , a następnie użyj polecenia git log .

Należy zauważyć, że lokalne i zdalne gałęzie mają dwie kropki „ .. ” oddzielające je. Opcja --oneline pokazuje identyfikator zatwierdzenia i komunikat zatwierdzenia.

 pobierz git
 git log --oneline mary-feature..Origin/mary-feature 

Używanie git do pobierania zdalnych zmian i git log do pokazywania zmian

Wyświetlanie jednowierszowe jest przydatne, jeśli gałąź zawiera bardzo wiele zmian. Aby zobaczyć trochę więcej informacji, pomiń opcję --oneline .

 git log mary-funkcja..Origin/mary-funkcja 

Pominięcie opcji --oneline, aby git pokazywał więcej szczegółów dla każdego zatwierdzenia

To pokazuje nam czas i datę każdego zatwierdzenia, wraz z komunikatem zatwierdzenia i danymi kontaktowymi autora zmiany.

Synchronizacja oddziału lokalnego z oddziałem zdalnym

Jeśli zdecydowałeś, że chcesz iść dalej i scalić zmiany ze zdalnej gałęzi z lokalnymi plikami roboczymi, możesz użyć tych poleceń.

Sprawdzimy gałąź, aby upewnić się, że działamy, że jest to nasza aktualna, działająca gałąź.

 git checkout funkcja mary 

Sprawdzanie oddziału

Oddział jest dla nas sprawdzony i powiedziano nam, że jest za wersją zdalną. Możemy użyć git pull aby go zaktualizować, a następnie git status aby sprawdzić nasz status.

 git pull
 status gita 

Ściąganie zmian z repozytorium rmeote do lokalnego

Jeśli wprowadziliśmy jakieś zmiany w naszych lokalnych plikach, Git poinformuje nas, kiedy sprawdzamy gałąź, że będziemy musieli wykonać git pull , aby rozpocząć scalanie.

 git checkout funkcja mary 

Git informuje nas, że lokalne i zdalne brnahces rozeszły się i należy je połączyć

Prosty git pull rozpoczyna proces pobierania plików i scalania, lub możemy od razu zanurkować i użyć samego git merge . Zaczniemy od upewnienia się, że pracujemy z właściwą gałęzią

 git checkout funkcja mary 

Git informuje nas, że lokalne i zdalne brnahces rozeszły się i należy je połączyć

Powiemy git , aby scalił naszą obecną gałąź z gałęzią w zdalnym repozytorium, jest sześć różnych zatwierdzeń, które muszą zostać rozwiązane.

Pomyślna wiadomość scalająca

Musimy powiedzieć Gitowi, którą zdalną gałąź chcemy scalić.

 git merge pochodzenie/funkcja mary 

używając git merge do scalenia zdalnych zmian w lokalnym oddziale

Otworzy się edytor, który umożliwi nam przesłanie komunikatu o zatwierdzeniu. Możemy zaakceptować sugerowaną wiadomość lub dodać własną. Edytor jest twoim domyślnym edytorem, chyba że Git został skonfigurowany do używania innego edytora.

Edycja komunikatu zatwierdzenia

Zapisz zmiany, gdy będziesz gotowy, aby kontynuować. Scalanie odbywa się automatycznie po zamknięciu edytora.

Nasza fuzja zakończyła się sukcesem, ponieważ nie było konfliktów.

Pomyślna wiadomość scalająca

Konflikty pojawiają się, gdy te same wiersze kodu są zmieniane przez dwóch lub więcej programistów. W takim przypadku Git zaznacza konflikty w pliku, którego dotyczy problem. Musisz przejrzeć je po kolei i wybrać, którą zmianę chcesz zachować.

Na wpół wyszkolony szczeniak

Podobnie jak szkolony szczeniak, fetch przywiezie to, o co poprosisz, ale tego nie upuści. Jeśli naprawdę chcesz tego, co pokazał ci szczeniak, musisz pull .

POWIĄZANE: Git rebase: wszystko, co musisz wiedzieć