2009-09-13 15 views
215

Intenté buscar un comando especial de git para esto pero no pude encontrar uno. ¿Puede alguien sugerir algo más corto o más rápido que:Mostrar solo la rama actual en Git

git branch | awk '/\*/ { print $2; }' 
+1

creo que esto es posible, los fastes manera de conseguir rama actual – Eimantas

+0

posible duplicado de [Cómo llegar nombre de la rama actual en Git?] (Http://stackoverflow.com/questions/6245570/how-to- get-current-branch-name-in-git) –

+0

@ChandrayyaGK: No, porque la otra pregunta es acerca de hacerlo desde dentro de su IDE. (Muchas de las respuestas son para el uso de línea de comandos, así que vale la pena verlas, pero no es un duplicado adecuado, y esas respuestas quizás deberían migrarse aquí, si hay alguna que agregue un valor significativo a lo que ya está aquí). – tripleee

Respuesta

382
$ git rev-parse --abbrev-ref HEAD 
master 

Esto debería funcionar con Git 1.6.3 o posterior.

+0

No funciona para mí tampoco, con git-1.6.2.5.git rev-parse --abbrev-ref HEAD => --abbrev-ref 311172491a9a667f9321bdf1c4fe5e22cc6e2c08 (es decir, rev-parse no acepta --abbrev-ref (tampoco en la página de manual)) – JasonWoof

+0

JasonWoof, funciona para mí en 1.6 .4.2, necesita cambiar de registro para ver cuándo sucedió exactamente ;-) –

+6

Por lo que puedo decir de los registros de Git, esta característica se fusionó en 2009-04-20 y se lanzó con la versión 1.6.3. – earl

4

estoy usando

/etc/bash_completion.d/git 

Vino con Git y proporciona un indicador con el nombre de la sucursal y la finalización argumento.

+0

¿Cómo se puede activar este aviso? – Alex

+0

En ubuntu, '$ source/etc // bash_completion.d/git-prompt' El archivo puede tener un nombre diferente en diferentes sistemas. (Nota: la palabra clave 'fuente' es lo mismo que' '.' (punto) en bash.) – michael

25

Usted puede estar interesado en la producción de

git symbolic-ref HEAD 

En particular, en función de sus necesidades y el diseño es posible que desee hacer

basename $(git symbolic-ref HEAD) 

o

git symbolic-ref HEAD | cut -d/ -f3- 

y luego nuevamente está el archivo .git/HEAD que también puede ser de su interés.

+2

Puede acortar' git rev-parse --symbolic-full-name' a 'git symbolic-ref'. – earl

+1

No necesita usar 'basename' o' cut'; use 'BR = $ {BR # refs/heads /}' (donde BR es el nombre de la variable que ha guardado la salida de 'git symbolic-ref HEAD'). –

+0

Jakub, por supuesto que no, siempre que tenga la salida en variable. –

6

Este es un hilo viejo con el que me he topado. De lo que puedo decir, no hay ninguna manera de forma nativa mostrar sólo la rama actual en el GIT, por lo que he estado usando:

#> git branch | grep '*' 
+1

Si bien eso funciona con coreutils de GNU,' grep '*' 'es nominalmente un error de sintaxis. Probablemente quieras 'git branch | sed -n 's/^ \ * // p'' de todos modos. O en realidad, lo que el OP publicó en primer lugar, que equivale a lo mismo. – tripleee

+0

@tripleee ¿me puede aclarar por qué 'grep '*'' es nominalmente un error de sintaxis? –

+0

Al igual que el plural * s * en inglés no tiene ningún significado útil en sí mismo, no puede decir "cero o más veces" de forma aislada sin algo antes. (Pensé que recordaba que la documentación 'grep' de GNU menciona específicamente que un' '' solitario al principio de la cadena se interpreta literalmente, es decir, como '[*]' en general, pero no puedo encontrarlo documentado ahora) – tripleee

74

(no puedo añadir comentarios a las respuestas, por lo que)

en Git 1.8.1 se puede utilizar el git simbólico-ref comando con la opción "--short":

$ git symbolic-ref HEAD 
refs/heads/develop 
$ git symbolic-ref --short HEAD 
develop 
+0

Gracias. Alias ​​creado. –

+3

Mejor que la respuesta aceptada IMO, porque funciona en repos sin commits –

+0

Obteniendo el error 'fatal: ref HEAD no es una referencia simbólica' cuando se ejecuta esto como parte de una compilación de TravisCI – kmanzana

0

creo que esto debe ser rápida y se puede utilizar con la API de Python.

git branch --contains HEAD 
* master 
Cuestiones relacionadas