Git: ¿Cómo enumero solo las sucursales locales?

935

git branch -a muestra sucursales remotas y locales.

git branch -r muestra ramas remotas.

¿Hay alguna manera de enumerar solo las sucursales locales?

munyengm
fuente

Respuestas:

1444

Solo git branchsin opciones.

Desde la página del manual:

Sin argumentos, las ramas existentes se enumeran y la rama actual se resaltará con un asterisco.

gertvdijk
fuente
25
Esperaba encontrar una manera de enumerar las sucursales locales que no tienen una sucursal remota correspondiente.
Steve Crane
55
No del todo, pero las respuestas a mi pregunta ¿Cómo enumero las sucursales locales que no tienen sucursal remota ?
Steve Crane
3
@ c00kiemon5ter ¡Me encanta cómo encontraste una forma de obtener muchos puntos de todos modos! Muy divertido.
Abram
44
¿Cómo es esta la respuesta correcta a lo que se preguntó ("... para enumerar * solo las sucursales locales ...") ???
Wagner da Silva el
77
@ gr4viton: En los dialectos del inglés con los que estoy familiarizado, "enumerar solo las ramas locales" generalmente se analiza como "enumerar solo las ramas que son locales". (Para decir "enumerar las ramas que son solo locales", yo diría "enumerar las ramas solo locales".)
Mathieu K.
221

solo el comando simple

git branch
c00kiemon5ter
fuente
55
Esta respuesta tiene exactamente la misma marca de tiempo que la respuesta aceptada. La respuesta aceptada debe estar adelante en la parte de milisegundos :)
RBT
44
@RBT Pase el mouse por los tiempos. Esta respuesta fue 9 segundos más rápida.
Kevin Workman
1
¡c00kiemon5ter merece el crédito por la respuesta!
skydev
75

git branch -a- Todas las ramas.

git branch -r- Solo ramas remotas .

git branch -l o git branch- Solo sucursales locales .

shortduck
fuente
Para mí, el formato de esta respuesta sugiere los -lsoportes --local, mientras que en realidad es --list. Sugeriría eliminarlo para evitar esa confusión: técnicamente todos los comandos en esta respuesta podrían usar -ly aún así devolverían los mismos resultados.
Thibaud Colas
34

Si el asterisco inicial es un problema, canalizo el git branchsiguiente

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

Esto también elimina la línea '(sin rama)' que aparece cuando se ha separado la cabeza.

John Marter
fuente
1
Tuve que modificar esto git branch | awk -F ' +' '$2 !~ /detached/ {print $2}'para git versión 1.9.1.
iurii
66
cut -c 3-es una opción más fácil
Alexey
33

Una de las formas más directas de hacerlo es

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

Esto funciona perfectamente para los scripts también.

Victor Yarema
fuente
12

Aquí le mostramos cómo enumerar sucursales locales que no tienen una sucursal remota en origen con el mismo nombre:

git branch | sed 's|* |  |' | sort > local
git branch -r | sed 's|origin/||' | sort > remote
comm -23 local remote
Shnatsel
fuente
3
Niza, también en línea: comm -23 <(git branch | sed 's|* | |' | sort) <(git branch -r | sed 's|origin/||' | sort )
gr4viton
10

Otra forma de obtener una lista de sucursal local es:

git branch -a | grep -v 'remotes'
jlsanchezr
fuente
4

Hay una gran respuesta a una publicación sobre cómo eliminar sucursales locales solamente. En él, el compañero crea un comando para enumerar las ramas locales:

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

La respuesta tiene una gran explicación sobre cómo se derivó este comando, por lo que te sugiero que vayas y leas esa publicación.

Samwar
fuente
Gracias por vincular la respuesta. Necesitaba algo para enumerar las sucursales locales que NO rastrean un control remoto. Este es el único que hace el trabajo.
JuroOravec
2

Para complementar la respuesta de @ gertvdijk: estoy agregando algunas capturas de pantalla en caso de que ayude a alguien rápido.

En mi git bash shell

rama de git

El comando sin ningún parámetro muestra todas mis ramas locales. La rama actual que está actualmente desprotegida se muestra en un color diferente (verde) junto con un prefijo de asterisco (*) que es realmente intuitivo.

ingrese la descripción de la imagen aquí

Cuando intentas ver todas las ramas, incluidas las ramas remotas, usando

git branch -a

El comando y las ramas remotas que aún no están desprotegidas se muestran en color rojo:

ingrese la descripción de la imagen aquí

RBT
fuente
1
¿Mil palabras de las cuales no se puede copiar?
Tony Adams
2
@ TonyAdams Lo siento si me falta algo, pero los dos comandos cuya salida que he mostrado en las imágenes se mencionaron en fondo gris (formato de código) en la publicación. No importa, he mejorado el formato de la publicación para que sea aún más legible. Agradecemos sus comentarios.
RBT