Czy ktoś może wyjaśnić „gałąź śledzenia” w odniesieniu do gita?
Oto definicja z git-scm.com :
„Gałąź śledząca” w Git to lokalna gałąź połączona ze zdalnym oddziałem. Kiedy pchasz i ciągniesz tę gałąź, automatycznie popycha i ciągnie do gałęzi zdalnej, z którą jest połączona.
Użyj tego, jeśli zawsze ściągasz z tej samej gałęzi upstream do nowej gałęzi i jeśli nie chcesz jawnie używać "git pull".
Niestety, będąc nowym w git i pochodzącym z SVN, ta definicja nie ma dla mnie absolutnie żadnego sensu.
Czytam „ The Pragmatic Guide to Git ” (tak przy okazji, świetna książka) i wydaje mi się, że sugerują oni, że śledzenie gałęzi jest dobrą rzeczą i że po utworzeniu pierwszego pilota (w tym przypadku pochodzenia) należy skonfiguruj gałąź główną jako gałąź śledzącą, ale niestety nie wyjaśnia, dlaczego gałąź śledząca jest dobra, ani jakie korzyści uzyskasz, konfigurując gałąź główną jako gałąź śledzącą repozytorium pochodzenia .
Czy ktoś może mnie oświecić (po angielsku)?
źródło
--track
opcji, aby utworzyć gałąź (lokalną), która ma jedną z tych gałęzi zdalnego śledzenia ustawioną jako nadrzędną . Terminologia ewoluowała nieco między 2006 a 2019 rokiem, więc różni ludzie mogą czasami oznaczać coś innego przez każde z tych słów.origin/master
: są w twoim repozytorium, ale są sposobem twojego Gita na zapamiętywanie nazw gałęzi, jak widać w innym repozytorium Git o godzorigin
. Jeśli następnie użyć słowa upstream , który jest bardziej nowoczesny termin, aby powiedzieć, że twójmaster
zostałorigin/master
ustawiony jako Upstream , można uniknąć wszelkich nieporozumień tej terminologii.Odpowiedzi:
Książka ProGit ma bardzo dobre wyjaśnienie :
Oddziały śledzące
Wyrejestrowanie lokalnego oddziału ze zdalnego oddziału automatycznie tworzy tak zwaną gałąź śledzącą. Oddziały śledzące to oddziały lokalne, które są bezpośrednio powiązane z oddziałem zdalnym. Jeśli korzystasz z gałęzi śledzenia i
git push
piszesz, Git automatycznie wie, na który serwer i gałąź należy wypchnąć. Ponadto uruchomieniegit pull
w jednej z tych gałęzi powoduje pobranie wszystkich zdalnych odwołań, a następnie automatyczne scalenie w odpowiedniej gałęzi zdalnej.Kiedy klonujesz repozytorium, generalnie automatycznie tworzy ono gałąź główną, która śledzi początek / wzorzec. Dlatego
git push
igit pull
działaj po wyjęciu z pudełka, bez innych argumentów. Możesz jednak skonfigurować inne gałęzie śledzenia, jeśli chcesz - takie, które nie śledzą gałęzi na początku i nie śledzą gałęzi głównej. Prosty przypadek to przykład, który właśnie widziałeś, bieganiegit checkout -b [branch] [remotename]/[branch]
. Jeśli masz Git w wersji 1.6.2 lub nowszej, możesz również użyć--track
skrótu:Aby skonfigurować oddział lokalny o innej nazwie niż oddział zdalny, możesz łatwo użyć pierwszej wersji z inną nazwą oddziału lokalnego:
Teraz twój lokalny oddział
sf
będzie automatycznie naciskał i ściągał zorigin/serverfix
.BONUS: dodatkowe
git status
informacjeDzięki gałęzi śledzenia
git status
powie Ci, jak daleko jesteś w tyle za swoją gałęzią śledzenia - przydatne, aby przypomnieć Ci, że jeszcze nie wprowadziłeś zmian! To wygląda tak:lub
źródło
Poniżej znajdują się moje osobiste notatki dotyczące gałęzi śledzenia GIT, mam nadzieję, że będą pomocne dla przyszłych odwiedzających:
Gałęzie śledzące i „pobieranie git”:
źródło
Książka Pro Git wspomina :
Nie dokładnie. Pytanie SO „ Trudno zrozumieć
git-fetch
” obejmuje:Ale tak naprawdę, po ustanowieniu relacji gałęzi upstream między:
master
origin/master
Wtedy można rozważyć
master
jako lokalnego oddziału śledzenia : To śledzi zdalnego oddział śledzeniaorigin/master
, które z kolei śledzi gałąź mistrza upstream repoorigin
.źródło
git status
otrzymam komunikat śledzenia zatwierdzenia w odniesieniu do repozytoriów pochodzenia i upstream? (Settup: sklonowałem czyjeś repozytorium lokalnie, wypchnąłem klon do nowego repozytorium na moim koncie GitHub i lokalnie ustawiłem zdalne źródła i zdalne nadrzędne odpowiednio do mojego repozytorium github i sklonowanego repozytorium).W ten sposób dodałem gałąź śledzenia, aby móc z niej wyciągnąć do nowej gałęzi:
źródło