Git: Come posso elencare solo le filiali locali?


935

git branch -a mostra sia le filiali remote sia quelle locali.

git branch -r mostra rami remoti.

C'è un modo per elencare solo le filiali locali?

Risposte:


1444

Solo git branchsenza opzioni.

Dalla manpage:

Senza argomenti, i rami esistenti vengono elencati e il ramo corrente verrà evidenziato con un asterisco.


25
Speravo di trovare un modo per elencare i rami locali che non hanno un ramo remoto corrispondente.
Steve Crane,

5
Non del tutto ma rispondo alla mia domanda Come posso elencare le filiali locali che non hanno filiali remote sono di aiuto.
Steve Crane,

3
@ c00kiemon5ter Adoro come hai trovato un modo per ottenere un sacco di punti comunque! Così divertente.
Abram,

4
come è questa la risposta giusta a ciò che è stato chiesto ("... per elencare * solo le filiali locali ...") ???
Wagner da Silva,

7
@ gr4viton: Nei dialetti dell'inglese che conosco, "elenca solo le filiali locali" di solito analizza come "elenca solo quelle filiali che sono locali". (Per dire "elenca quei rami che sono solo locali", direi "elenca i rami solo locali".)
Mathieu K.

221

solo il semplice comando

git branch

5
Questa risposta ha esattamente lo stesso timestamp della risposta accettata. La risposta accettata deve essere anticipata in millisecondi :)
RBT

4
@RBT Passa il mouse sopra i tempi. Questa risposta è stata di 9 secondi più veloce.
Kevin Workman,

1
c00kiemon5ter merita il merito per la risposta!
skydev,

75

git branch -a- Tutti rami.

git branch -r- Telecomando Solo filiali .

git branch -l oppure git branch- Solo filiali locali .


Per me la formattazione di questa risposta suggerisce le -lindicazioni --local, mentre in realtà lo è --list. Suggerirei di rimuoverlo per evitare quella confusione - tecnicamente tutti i comandi in questa risposta potrebbero usare -le restituirebbero comunque gli stessi risultati.
Thibaud Colas,

34

Se l'asterisco principale è un problema, eseguo il pipe git branchcome segue

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

Questo elimina anche la linea "(nessun ramo)" che appare quando hai la testa staccata.


1
Ho dovuto modificare questo in git branch | awk -F ' +' '$2 !~ /detached/ {print $2}'per git versione 1.9.1.
iurii,

6
cut -c 3-è un'opzione più semplice
Alexey,

33

Uno dei modi più semplici per farlo è

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

Questo funziona perfettamente anche per gli script.


12

Ecco come elencare i rami locali che non hanno un ramo remoto in origine con lo stesso nome:

git branch | sed 's|* |  |' | sort > local
git branch -r | sed 's|origin/||' | sort > remote
comm -23 local remote

3
Bello, anche oneliner: comm -23 <(git branch | sed 's|* | |' | sort) <(git branch -r | sed 's|origin/||' | sort )
gr4viton,

10

Un altro modo per ottenere un elenco solo la filiale locale è:

git branch -a | grep -v 'remotes'

4

C'è un'ottima risposta a un post su come eliminare le filiali solo locali. In esso, il collega crea un comando per elencare i rami locali:

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

La risposta ha una grande spiegazione su come è stato derivato questo comando, quindi suggerirei di andare a leggere quel post.


Grazie per aver collegato la risposta. Avevo bisogno di un algo per elencare le filiali locali che NON tengono traccia di un telecomando. Questo è l'unico che fa il lavoro.
JuroOravec,

2

Per completare la risposta di @gertvdijk: sto aggiungendo alcuni screenshot nel caso in cui aiuti qualcuno velocemente.

Sul mio git bash shell

ramo git

comando senza parametri mostra tutti i miei rami locali. Il ramo corrente che è attualmente estratto è mostrato in un colore diverso (verde) insieme a un prefisso asterisco (*) che è davvero intuitivo.

inserisci qui la descrizione dell'immagine

Quando si tenta di vedere tutti i rami inclusi quelli remoti utilizzando

ramo git -a

comando quindi i rami remoti che non sono ancora stati estratti sono visualizzati in rosso:

inserisci qui la descrizione dell'immagine


1
Mille parole da cui non si possono copiare?
Tony Adams,

2
@TonyAdams Mi dispiace se mi manca qualcosa ma entrambi i comandi di cui ho mostrato l'output nelle immagini sono stati menzionati in sfondo grigio (formattazione del codice) nel post. Non importa se ho migliorato la formattazione del post per renderlo ancora più leggibile. Apprezzo il tuo feedback.
RBT
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.