Git fetch (Polski)

Git fetch (Polski)

poleceniegit fetch pobiera commity, pliki i refs ze zdalnego repozytorium do lokalnego repo. Pobieranie jest tym, co robisz, gdy chcesz zobaczyć, nad czym wszyscy inni pracowali. Jest podobny do svn update w tym, że pozwala zobaczyć, jak postępowała Centralna historia, ale nie zmusza cię do scalania zmian w repozytorium. Git izoluje pobrane treści od istniejących lokalnych treści; nie ma to absolutnie żadnego wpływu na Twoje lokalne prace rozwojowe., Pobrana zawartość musi być wyraźnie sprawdzana za pomocą polecenia git checkout. To sprawia, że pobieranie jest bezpiecznym sposobem na przeglądanie zmian przed integracją ich z lokalnym repozytorium.

podczas pobierania zawartości ze zdalnego repo,git pull Igit fetch są dostępne polecenia do wykonania zadania. Możesz rozważyć git fetch 'bezpieczną' wersję tych dwóch poleceń. Pobierze zawartość zdalną, ale nie zaktualizuje stanu pracy lokalnego repo, pozostawiając bieżącą pracę nienaruszoną., git pull jest bardziej agresywną alternatywą; pobierze zdalną zawartość dla aktywnej lokalnej gałęzi i natychmiast uruchomi git merge, aby utworzyć commit scalający dla nowej zdalnej zawartości. Jeśli oczekujesz zmian w toku, spowoduje to konflikty i rozpocznie proces rozwiązywania konfliktów scalania.

jak git fetch działa ze zdalnymi gałęziami

aby lepiej zrozumieć jak działagit fetch omówmy jak Git organizuje i przechowuje commity., Za kulisami, w katalogu ./.git/objects, Git przechowuje wszystkie commity, lokalne i zdalne. Git utrzymuje zdalne i lokalne commity branch wyraźnie oddzielone przez użycie refów branch. Refs dla lokalnych oddziałów są przechowywane w ./.git/refs/heads/. Wykonanie polecenia git branch spowoduje wyświetlenie listy refs lokalnego oddziału. Poniżej znajduje się przykład wyjścia git branch z niektórymi nazwami gałęzi demo.,

git branch
master
feature1
debug2

Sprawdzenie zawartości katalogu/.git/refs/heads/ ujawni podobne wyjście.

ls ./.git/refs/heads/
master
feature1
debug2

zdalne gałęzie są tak samo jak lokalne gałęzie, z wyjątkiem tego, że mapują do commitów z czyjegoś repozytorium. Zdalne gałęzie są poprzedzone przez pilota, do którego należą, aby nie mieszać ich z lokalnymi gałęziami. Podobnie jak lokalne gałęzie, Git posiada również refy dla zdalnych gałęzi. Remote branch refs live in the ./.git/refs/remotes/ directory., Następny przykładowy fragment kodu pokazuje gałęzie, które możesz zobaczyć po pobraniu zdalnego repo o dogodnej nazwie remote-repo:

git branch -r
# origin/master
# origin/feature1
# origin/debug2
# remote-repo/master
# remote-repo/other-feature

to wyjście wyświetla lokalne gałęzie, które wcześniej zbadaliśmy, ale teraz wyświetla je z prefiksem origin/. Dodatkowo widzimy teraz zdalne gałęzie poprzedzone remote-repo. Możesz sprawdzić zdalną gałąź, tak jak lokalną, ale to stawia cię w odłączonym stanie HEAD (tak jak sprawdzanie starego commita). Można je traktować jako gałęzie tylko do odczytu., Aby wyświetlić zdalne gałęzie, po prostu przekaż znacznik -r do polecenia git branch.

możesz sprawdzać zdalne gałęzie za pomocą zwykłych poleceńgit checkout Igit log. Jeśli zatwierdzisz zmiany zawarte w zdalnej gałęzi, możesz scalić je do lokalnej gałęzi o normalnym git merge. Tak więc, w przeciwieństwie do SVN, synchronizacja lokalnego repozytorium ze zdalnym repozytorium jest w rzeczywistości procesem dwuetapowym: fetch, a następnie merge. Polecenie git pull jest wygodnym skrótem dla tego procesu.,

polecenia i opcje Git fetch

git fetch <remote>

pobiera wszystkie gałęzie z repozytorium. To również pobiera wszystkie wymagane commity i pliki z innego repozytorium.

git fetch <remote> <branch>

to samo co powyższe polecenie, ale pobiera tylko określoną gałąź.

git fetch --all

ruch mocy, który pobiera wszystkie zarejestrowane piloty i ich gałęzie:

git fetch --dry-run

opcja--dry-run wykona uruchomienie demo polecenia., Wyświetli przykłady działań, które podejmie podczas pobierania, ale nie zastosuje ich.

git fetch a remote branch

poniższy przykład zademonstruje jak pobrać zdalną gałąź i zaktualizować lokalny stan pracy do zdalnej zawartości. W tym przykładzie załóżmy, że istnieje centralne źródło repo, z którego lokalne repozytorium zostało sklonowane przy użyciu polecenia git clone. Załóżmy również dodatkowe zdalne repozytorium o nazwie coworkers_repo, które zawiera feature_branch, które będziemy konfigurować i pobierać., Przy tych założeniach kontynuujmy przykład.

najpierw musimy skonfigurować zdalne repo używając poleceniagit remote.

git remote add coworkers_repo [email protected]:coworker/coworkers_repo.git

tutaj stworzyliśmy odniesienie do repo współpracownika przy użyciu adresu URL repo. Teraz przekażemy tę zdalną nazwę do git fetch, aby pobrać zawartość.

git fetch coworkers_repo coworkers/feature_branch
fetching coworkers/feature_branch

mamy teraz lokalnie zawartość coworkers/feature_branch będziemy potrzebować zintegrować to z naszym lokalnym egzemplarzem roboczym., Rozpoczynamy ten proces za pomocą polecenia git checkout, aby sprawdzić nowo pobraną zdalną gałąź.

git checkout coworkers/feature_branch
Note: checking out coworkers/feature_branch'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>

wyjście z tej operacji kasowania wskazuje, że jesteśmy w odłączonym stanieHEAD. Jest to oczekiwane i oznacza, że naszHEAD ref wskazuje na ref, który nie jest zgodny z naszą lokalną historią. Ponieważ HEAD jest wskazywany na ref coworkers / feature_branch, możemy utworzyć nową lokalną gałąź z tego ref., Wyjście' wolnostojące HEAD ' pokazuje nam, jak to zrobić, używając polecenia git checkout:

git checkout -b local_feature_branch

tutaj stworzyliśmy nową lokalną gałąź o nazwie local_feature_branch. To powoduje, że aktualizacje HEAD wskazują na najnowszą zdalną zawartość i możemy kontynuować jej rozwój od tego momentu.

Synchronize origin with git fetch

poniższy przykład przedstawia typowy przepływ pracy do synchronizacji lokalnego repozytorium z główną gałęzią repozytorium centralnego.,

git fetch origin

spowoduje to wyświetlenie gałęzi, które zostały pobrane:

commity z tych nowych zdalnych gałęzi są pokazane jako kwadraty zamiast okręgów na poniższym diagramie. Jak widać, git fetch daje dostęp do całej struktury gałęzi innego repozytorium.,

aby zobaczyć, jakie zmiany zostały dodane do nadrzędnej gałęzi, możesz uruchomić git log używając origin/master jako filtra:

git log --oneline master..origin/master

aby zatwierdzić zmiany i scalić je do lokalnej gałęzi nadrzędnej, użyj następujące polecenia:

git checkout master
git log origin/master

następnie możemy użyć git merge origin/master:

git merge origin/master

gałęzie Origin/master i Master wskazują teraz na ten sam commit, a Ty jesteś zsynchronizowany z postępem w górę.,

Git fetch summary

w recenzjigit fetch jest głównym poleceniem używanym do pobierania zawartości ze zdalnego repozytorium. git fetch jest używany w połączeniu z git remote, git branch, git checkout I git reset do aktualizacji lokalnego repozytorium do stanu pilota. Polecenie git fetch jest krytycznym elementem współpracy z Gitem., git fetch has similar behavior to git pull, however, git fetch can be considered a safer, nondestructive version.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *