Próbowałem git branch -r
, ale to tylko zdalne gałęzie, które śledziłem lokalnie. Jak znaleźć listę tych, których nie mam? (Nie ma dla mnie znaczenia, czy polecenie wyświetla wszystkie odległe gałęzie, czy tylko te, które nie są śledzone).
git
branch
git-branch
remote-branch
James A. Rosen
źródło
źródło
git fetch
agit remote update
nie pobierać wszystkie branże pilota? Ponieważ w przeciwnym razie możesz po prostu pobrać, a następnie użyćgit branch -r
...git branch -r
pokazywał mi tylko odległe gałęzie, które śledziłem lokalnie. Teraz działa lepiej.Odpowiedzi:
Dla zdecydowanej większości [1] odwiedzających tutaj poprawna i najprostsza odpowiedź na pytanie „Jak wyświetlić listę wszystkich zdalnych oddziałów w Git 1.7+?” jest:
Dla niewielkiej mniejszości [1]
git branch -r
nie działa. Jeśligit branch -r
nie działa, spróbuj:Jeśli
git branch -r
nie działa, to może jako Kaskabel mówi „masz zmodyfikowany domyślny refspec tak,git fetch
agit remote update
nie pobierać wszystkieremote
„s oddziały” .[1] W momencie pisania tego przypisu 2018-luty spojrzałem na komentarze i zobaczyłem, że
git branch -r
działa ono w zdecydowanej większości (około 90% lub 125 ze 140 ).Jeśli
git branch -r
nie działa, sprawdźgit config --get remote.origin.fetch
zawiera symbol wieloznaczny (*
) zgodnie z tą odpowiedziąźródło
git ls-remote [url]
, abyś nie musiał go najpierw klonować :)git branch -r
ponieważ jest to poprawna i najprostsza odpowiedź, pytający miał specjalny przypadek, w którym zmodyfikował zachowanie swoich,git branch -r
których większość użytkowników tu nie przyjmie miećgit branch -r
też nie działało dla mnie. Po prostu wyświetla listę oddziałów już śledzonych lokalnie. Alegit ls-remote --heads
wymieniono wszystkie gałęzie dostępne w zdalnym repozytorium ...git ls-remote
(a nie wymienionych wgit branch -r
), musi wykonaćgit config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
przed pobraniem, jak opisano na stackoverflow.com/a/26649770/873282 .git fetch --all
wcześniej, aby uzyskać wszystkie bieżące odległe gałęzie.remote show
pokazuje wszystkie gałęzie na pilocie, w tym te, które nie są śledzone lokalnie, a nawet te, które nie zostały jeszcze pobrane.Próbuje również pokazać status gałęzi w stosunku do lokalnego repozytorium:
źródło
branch_that_is_not_tracked tracked
?branch_that_is_not_tracked
to gałąź, która nie jest śledzona przez żadną lokalną gałąź git. Został jednak pobrany do lokalnego repozytorium (więc istnieje zdalny oddział). Z jakiegoś dziwnego powodugit remote show
wywołuje ten stantracked
, nawet jeśli nie ma lokalnego oddziału, który śledziłby zdalne sterowanie. W tym przypadku, przeciwieństwemtracked
Isnew
, czyli „nie naciągane”.git branch -r
sugeruje, że nadal istnieje zdalna gałąź, alegit remote show origin
pokazuje torefs/remotes/origin/my-now-dead-branch stale (use 'git remote prune' to remove)
. O wiele bardziej przydatny!źródło
git branch -r
, co według OP nie było wystarczająco dobre.git branch -a
igit branch -r
wypisują dla mnie wszystkie odległe gałęzie, nie jestem pewien, czy to, co powiedział PO, jest prawdą. Właśnie skonfigurowałem repozytorium testowe i to zweryfikowałem (miałem tylko master origin origin / master, ale nadal widziałem wszystkie zdalne gałęzie z obiema flagami).git fetch
a potemgit branch -a
, która dopiero niedawno zaczęła mi się nie udać. Być może zachowanie git zostało zmienione?Użycie
git branch -r
list wszystkich zdalnych gałęzi igit branch -a
list wszystkich gałęzi na lokalnym i zdalnym. Te listy stają się jednak nieaktualne. Aby aktualizować te listy, uruchomktóry zaktualizuje listę lokalnych oddziałów o wszystkie nowe ze zdalnego i usunie te, których już nie ma. Uruchomienie tego polecenia aktualizacji bez opcji --prune spowoduje pobranie nowych gałęzi, ale nie usunie tych, które nie są już zdalne.
Możesz przyspieszyć tę aktualizację, określając pilota, w przeciwnym razie spowoduje to pobranie aktualizacji ze wszystkich dodanych przez ciebie pilotów
źródło
Ale
git branch -ar
powinien to zrobić.
źródło
-r
zwraca tylko odległe gałęzie.-a
zwraca oddziały lokalne i zdalne. W ten sposóbgit branch -a
igit branch -ar
jak uzyskuje się taki sam wynik.Możesz również zrobić
git fetch
pogit branch -r
. Bez pobierania nie zobaczysz najbardziej aktualnych gałęzi.źródło
git fetch --all
mieć wszystkie obecne gałęzieGit Rozgałęzienie - odległe gałęzie
Dokumentacja Git .
źródło
heads/
wrefs/heads/features/my-branch
, dzięki!Najprostszy sposób, w jaki znalazłem:
źródło
TL; TR;
Oto rozwiązanie twojego problemu:
lub:
źródło
Najlepszym poleceniem do uruchomienia jest
git remote show [remote]
. Spowoduje to wyświetlenie wszystkich oddziałów, zdalnych i lokalnych, śledzonych i nieśledzonych.Oto przykład z projektu open source:
Jeśli chcemy tylko uzyskać odległe gałęzie, możemy użyć
grep
. Polecenie, którego chcielibyśmy użyć to:Za pomocą tego polecenia:
Możesz również utworzyć dla tego alias:
Wtedy możesz po prostu biec
git branches
.źródło
Dzięki Git Bash możesz używać:
źródło
Spróbuj tego...
źródło
Po prostu uruchom
git fetch
polecenie. Sprowadzi wszystkie zdalne gałęzie do lokalnego repozytorium, a następnie wykona a,git branch -a
aby wyświetlić listę wszystkich gałęzi.źródło
Jeśli istnieje zdalna gałąź, o której wiesz, że powinna być na liście, ale nie jest na liście, możesz sprawdzić, czy twoje pochodzenie jest poprawnie skonfigurowane w ten sposób:
Jeśli to wszystko dobrze, może powinieneś uruchomić aktualizację:
Zakładając, że działa poprawnie, powinieneś być w stanie zrobić to, co mówią inne odpowiedzi:
źródło
Za pomocą tego polecenia
Zawiera listę wszystkich zdalnych gałęzi, w tym komunikaty zatwierdzeń i identyfikatory zatwierdzeń, do których odwołują się zdalne gałęzie.
źródło
Użyłbym:
To polecenie pokazuje nie tylko listę wszystkich gałęzi, w tym gałęzi zdalnych rozpoczynających się od
/remote
, ale także dostarcza*
informacji zwrotnych na temat tego, co zaktualizowałeś i komentarzy na temat ostatniego zatwierdzenia.źródło
Upewnij się, że zdalne pochodzenie, które wymieniasz, to tak naprawdę repozytorium, które chcesz, a nie starszy klon.
źródło
Skończyło się na robieniu bałaganu w skorupce, aby uzyskać to, czego chciałem. Właśnie połączyłem gałęzie ze zdalnego źródła:
źródło
Akceptowana odpowiedź działa dla mnie. Ale bardziej przydatne okazało się posortowanie zatwierdzeń od najnowszego.
git branch -r --sort=-committerdate
źródło