Git: Jak wyświetlić tylko lokalne oddziały?

935

git branch -a pokazuje oddziały zdalne i lokalne.

git branch -r pokazuje odległe gałęzie.

Czy istnieje sposób na wylistowanie tylko lokalnych oddziałów?

munyengm
źródło

Odpowiedzi:

1443

Po prostu git branchbez opcji.

Z strony podręcznika:

Bez argumentów, istniejące gałęzie są wymienione, a bieżąca gałąź zostanie podświetlona gwiazdką.

gertvdijk
źródło
24
Miałem nadzieję znaleźć sposób, aby wyświetlić listę oddziałów lokalnych, które nie mają odpowiadających oddziałów zdalnych.
Steve Crane
5
Nie do końca, ale odpowiedzi na moje pytanie Jak wyświetlić listę oddziałów lokalnych, które nie mają oddziałów zdalnych, oferują pomoc.
Steve Crane
3
@ c00kiemon5ter Uwielbiam sposób, w jaki znalazłeś sposób na zdobycie wielu punktów! Bardzo śmieszne.
Abram
4
jak to jest poprawna odpowiedź na to, o co pytano („... aby wymienić * tylko lokalne oddziały ...”) ???
Wagner da Silva
7
@ gr4viton: W dialektach języka angielskiego, które znam, „lista tylko gałęzi lokalnych” zwykle jest analizowana jako „lista tylko tych gałęzi, które są lokalne”. (Aby powiedzieć „wymień te gałęzie, które są tylko lokalne”, powiedziałbym „wymień tylko oddziały lokalne”.)
Mathieu K.,
221

tylko proste polecenie

git branch
c00kiemon5ter
źródło
5
Ta odpowiedź ma dokładnie ten sam znacznik czasu, co odpowiedź zaakceptowana. Zaakceptowana odpowiedź musi być udzielona w części milisekundowej :)
RBT
4
@RBT Mouseover razy. Ta odpowiedź była szybsza o 9 sekund.
Kevin Workman
1
c00kiemon5ter zasługuje na uznanie za odpowiedź!
skydev
75

git branch -a- Wszystkie oddziały.

git branch -r- Tylko zdalne oddziały.

git branch -l lub git branch- Tylko oddziały lokalne .

kaczka
źródło
Mi formatowanie Ta odpowiedź sugeruje się -lpodpórek --local, podczas gdy w rzeczywistości --list. Sugerowałbym usunięcie go, aby uniknąć tego zamieszania - technicznie wszystkie polecenia w tej odpowiedzi mogłyby się przydać -li nadal zwracałyby te same wyniki.
Thibaud Colas
34

Jeśli wiodąca gwiazdka stanowi problem, potokuję git branchnastępująco

git branch | awk -F ' +' '! /\(no branch\)/ {print $2}'

Eliminuje to również linię „(bez gałęzi)”, która pojawia się po odłączeniu głowy.

John Marter
źródło
1
Musiałem to zmodyfikować do git branch | awk -F ' +' '$2 !~ /detached/ {print $2}'wersji git 1.9.1.
iurii
6
cut -c 3-jest łatwiejszą opcją
Alexey
32

Jednym z najprostszych sposobów na zrobienie tego jest

git for-each-ref --format='%(refname:short)' refs/heads/

Działa to doskonale również w przypadku skryptów.

Victor Yarema
źródło
12

Oto jak wyświetlić listę oddziałów lokalnych, które nie mają źródła zdalnego o tej samej nazwie:

git branch | sed 's|* |  |' | sort > local
git branch -r | sed 's|origin/||' | sort > remote
comm -23 local remote
Shnatsel
źródło
3
Fajny, również oneliner: comm -23 <(git branch | sed 's|* | |' | sort) <(git branch -r | sed 's|origin/||' | sort )
gr4viton
10

Innym sposobem uzyskania listy tylko oddział lokalny jest:

git branch -a | grep -v 'remotes'
jlsanchezr
źródło
4

Istnieje świetna odpowiedź na post dotyczący usuwania lokalnych oddziałów. W nim kolega buduje polecenie, aby wyświetlić listę lokalnych oddziałów:

git branch -vv | cut -c 3- | awk '$3 !~/\[/ { print $1 }'

Odpowiedź ma świetne wyjaśnienie na temat tego, jak to polecenie zostało wyprowadzone, więc sugeruję, abyś przeczytał ten post.

Samwar
źródło
Dziękujemy za połączenie odpowiedzi. Potrzebowałem algo, aby wyświetlić listę lokalnych oddziałów, które NIE śledzą pilota. Ten jest jedynym, który wykonuje pracę.
JuroOravec
2

Aby uzupełnić odpowiedź @ gertvdijk - dodaję kilka zrzutów ekranu na wypadek, gdyby to pomogło komuś szybko.

Na mojej powłoce git bash

oddział git

polecenie bez żadnych parametrów pokazuje wszystkie moje lokalne oddziały. Obecna gałąź, która jest obecnie wyewidencjonowana, jest wyświetlana w innym kolorze (zielonym) wraz z gwiazdką (*), który jest naprawdę intuicyjny.

wprowadź opis zdjęcia tutaj

Gdy próbujesz zobaczyć wszystkie gałęzie, w tym gałęzie zdalne, używając

gałąź git -a

polecenie, a następnie zdalne gałęzie, które nie zostały jeszcze wypisane, są wyświetlane w kolorze czerwonym:

wprowadź opis zdjęcia tutaj

RBT
źródło
1
Tysiąc słów, z których nie można skopiować?
Tony Adams,
2
@TonyAdams Przykro mi, jeśli coś pomijam, ale oba polecenia, których wyniki wyświetlone na zdjęciach zostały wymienione na szarym tle (formatowanie kodu) w poście. Nieważne, poprawiłem formatowanie postu, aby był jeszcze bardziej czytelny. Doceniam Twoją opinię.
RBT