Czy to oznacza, że możesz śledzić wszystkie odległe gałęzie w marionetce, chociaż masz kilka lokalnych oddziałów. Co oznacza wiele „śledzonych” znaków w wyniku polecenia? „śledzone” przez który oddział lokalny?
PJ.
Zdalne oddziały są śledzone, że jeśli zrobić git fetchlub git pullaktualizacje do odległych oddziałów będą śledzone w sklonowanego repozytorium. Lokalne gałęzie są po prostu tym, że lokalne gałęzie zdalnych gałęzi, a tym samym aktualizacje zdalnych gałęzi, będą śledzone i łączone, gdy wydane zostanie odpowiednie polecenie. Podczas tworzenia gałęzi lokalnej wyraźnie dołączam opcję „-t”, aby upewnić się, że śledzi gałąź, z której pochodzi. Pamiętaj, że oddział lokalny może również śledzić inny oddział lokalny, więc nie musi to być oddział zdalny.
Jeremy Bouse
5
@PJ: Termin „ścieżka” ma dwa różne znaczenia w Git. „Śledzone” linie git remote show remote-nameodnoszą się do „gałęzi śledzących” (migawek gałęzi ze zdalnych repozytoriów). Linie „scala się z” odnoszą się do lokalnych gałęzi, które mają konfigurację „gałęzi upstream” (wykonanej z opcją --track/ gałęzi git lub kasy git i dlatego często mylone z „gałęziami śledzącymi”). -t
Chris Johnsen
„ gałąź zdalnego śledzenia ” jest aktualnym hasłem w słowniku dotyczącym „gałęzi śledzenia” wymienionych powyżej. Dokument został zaktualizowany w 8b3f3f84 .
ENTO
124
Dla wszystkich oddziałów:
git branch -avv
Tylko dla lokalnych oddziałów:
git branch -lvv
Tylko dla zdalnych oddziałów:
git branch -rvv
pokazuje wszystkie gałęzie, a także nazwę gałęzi upstream.
Jeśli planujesz używać informacji w zautomatyzowanym kontekście (np. Skrypcie), powinieneś git for-each-refzamiast tego użyć niższego poziomu („hydraulika”) .
% git remote show origin
* remote origin
⋮
Local branches configured for 'git pull':
master merges with remote master
pu merges with remote pu
⋮
% git for-each-ref --format='%(refname:short) <- %(upstream:short)' refs/heads
master <- origin/master
pu <- origin/pu
git for-each-refNauczył się %(upstream)żeton w Git 1.6.3 . We wcześniejszych wersjach Git będziesz musiał wyodrębnić informacje o śledzeniu za pomocą git config branch.<name>.remotei git config branch.<name>.merge(prawdopodobnie używając git for-each-refdo zbudowania poleceń dla każdej nazwy lokalnego oddziału).
Aby było to mniej zwięzłe, ale zapewniło dobry sposób na wizualne sprawdzenie, czy nazwy zdalne są takie same jak nazwy lokalnych oddziałów, wspólny git gotcha: w bashgit for-each-ref --format=$'\n'' '' '' '' '' '' ''/%(refname:short);%(upstream:short)' refs/heads | tr ';' $'\n'
płyty
19
Dla danej branży, można korzystać git rev-parsez @{u}lub @{upstream}przyrostek na nazwę oddziału, na przykład:
+1 Twoja odpowiedź dała mi dokładnie to, czego potrzebowałem: git rev-parse --symbolic-full-name HEADkontra git rev-parse --symbolic-full-name HEAD@{u}, dzięki!
Tino
10
Używam następującego skryptu powłoki (o nazwie git-tracks), aby wyświetlić gałąź zdalną, która jest śledzona przez bieżącą gałąź:
Przydałoby się również wspomniane wyżej git for-each-ref, ale znalazłem bezpośredni dostęp nieco prostszy niż filtrowanie danych wyjściowych dla bieżącej gałęzi.
Możesz rozważyć użycie „set -e” na górze skryptu. To pozwoli ci usunąć wszystkie wystąpienia „|| exit $?” zachowując to samo zachowanie wczesnego niepowodzenia.
John Whitley,
@JohnWhitley: Dzięki, zredagowałem swoją odpowiedź. Wiem o tym set -e, ale zwykle trzymam się jawnego sprawdzania. Ale w tym przypadku jest naprawdę lepiej.
Ingo Karkat
Nie działa dla mnie git version 1.9.4. Echos nic :(
Ain
8
.git/config plik dostarczy również informacje o gałęzi śledzenia jako
Musiałem znaleźć odpowiednią gałąź zdalną (jeśli istnieje) dla każdej gałęzi lokalnej w pętli działającej na liście gałęzi lokalnych. Skończyło się na tym, że:
git for-each-ref --format='%(refname:short):%(upstream:short)' refs/heads | grep "^LocalBranchName:.*/" | sed "s/^LocalBranchName://"
To nie wyświetli nic (pusty ciąg) dla gałęzi lokalnych, które nie mają odpowiadającej gałęzi zdalnej („someremote / somebranch”).
Odpowiedzi:
Na przykładzie mojej kopii Puppet pobranej z wcześniejszego repozytorium Git na Github.com ...
Jeśli miałbym wykonać następujące czynności:
I w końcu ponownie uruchom
git remote show origin
komendę, a następnie zobaczę w dolnej części:źródło
git fetch
lubgit pull
aktualizacje do odległych oddziałów będą śledzone w sklonowanego repozytorium. Lokalne gałęzie są po prostu tym, że lokalne gałęzie zdalnych gałęzi, a tym samym aktualizacje zdalnych gałęzi, będą śledzone i łączone, gdy wydane zostanie odpowiednie polecenie. Podczas tworzenia gałęzi lokalnej wyraźnie dołączam opcję „-t”, aby upewnić się, że śledzi gałąź, z której pochodzi. Pamiętaj, że oddział lokalny może również śledzić inny oddział lokalny, więc nie musi to być oddział zdalny.git remote show remote-name
odnoszą się do „gałęzi śledzących” (migawek gałęzi ze zdalnych repozytoriów). Linie „scala się z” odnoszą się do lokalnych gałęzi, które mają konfigurację „gałęzi upstream” (wykonanej z opcją--track
/ gałęzi git lub kasy git i dlatego często mylone z „gałęziami śledzącymi”).-t
Dla wszystkich oddziałów:
Tylko dla lokalnych oddziałów:
Tylko dla zdalnych oddziałów:
pokazuje wszystkie gałęzie, a także nazwę gałęzi upstream.
źródło
git branch -lvv
pokaz tylko lokalne oddziały z poprzedzającym może być przydatnagit branch -vv
działa dla mnie ...Jeremy Bouse ilustruje sposób
git remote show
wyświetlania informacji o śledzeniu . To powinno wystarczyć, jeśli chcesz tylko informacje przeznaczone do spożycia przez ludzi.Jeśli planujesz używać informacji w zautomatyzowanym kontekście (np. Skrypcie), powinieneś
git for-each-ref
zamiast tego użyć niższego poziomu („hydraulika”) .git for-each-ref
Nauczył się%(upstream)
żeton w Git 1.6.3 . We wcześniejszych wersjach Git będziesz musiał wyodrębnić informacje o śledzeniu za pomocągit config branch.<name>.remote
igit config branch.<name>.merge
(prawdopodobnie używającgit for-each-ref
do zbudowania poleceń dla każdej nazwy lokalnego oddziału).źródło
git for-each-ref --format=$'\n'' '' '' '' '' '' ''/%(refname:short);%(upstream:short)' refs/heads | tr ';' $'\n'
Dla danej branży, można korzystać
git rev-parse
z@{u}
lub@{upstream}
przyrostek na nazwę oddziału, na przykład:... lub dla skróconego formularza dodaj
--abbrev-ref
Ogólnie można użyć
branch@{upstream}
składni tam, gdzie oczekuje się zatwierdzenia.źródło
git rev-parse --symbolic-full-name HEAD
kontragit rev-parse --symbolic-full-name HEAD@{u}
, dzięki!Używam następującego skryptu powłoki (o nazwie
git-tracks
), aby wyświetlić gałąź zdalną, która jest śledzona przez bieżącą gałąź:Przydałoby się również wspomniane wyżej
git for-each-ref
, ale znalazłem bezpośredni dostęp nieco prostszy niż filtrowanie danych wyjściowych dla bieżącej gałęzi.źródło
set -e
, ale zwykle trzymam się jawnego sprawdzania. Ale w tym przypadku jest naprawdę lepiej.git version 1.9.4
. Echos nic :(.git/config
plik dostarczy również informacje o gałęzi śledzenia jakoźródło
pokazuje dokładnie to, o co prosisz. Pokazuje lokalne oddziały wraz z odpowiednimi zdalnymi oddziałami, które śledzą.
źródło
Dodaj te runy do
[alias]
sekcji pliku .gitconfig:źródło
Musiałem znaleźć odpowiednią gałąź zdalną (jeśli istnieje) dla każdej gałęzi lokalnej w pętli działającej na liście gałęzi lokalnych. Skończyło się na tym, że:
To nie wyświetli nic (pusty ciąg) dla gałęzi lokalnych, które nie mają odpowiadającej gałęzi zdalnej („someremote / somebranch”).
źródło
Wypróbuj
git branch
z opcjami :W przeciwnym razie sprawdź swój
.git/config
.źródło