muestra la rama actual de git usando el comando ‘git branch’

3 minutos de lectura

Avatar de usuario de Duilio
Duilio

Tengo un problema cuando trabajo en demasiadas ramas, lleva mucho tiempo encontrar cuál es la rama actual en la que estoy trabajando en este momento. ¿Hay alguna manera de enumerar la rama actual en la parte superior de la lista que aparece cuando se usa el git branch ¿dominio?

  • Ver también: ¿Cómo obtener el nombre de la rama actual en Git?

    – KyleMit

    2 de enero de 2022 a las 1:53


Si solo desea la sucursal desprotegida, use git branch --show-current.

  • Nota: --show-current requiere Git 2.22.0+ (no disponible de forma predeterminada en, por ejemplo, Debian 10)

    – Erik MD

    14 mayo 2020 a las 21:36


  • No sabía que git tiene este comando y usé git branch | grep '*'

    – Pavel Bobkov

    22 de noviembre de 2021 a las 4:34


Avatar de usuario de ErikMD
Erik MD

Si el git branch --show-current El comando no está disponible con su versión de Git, puede usar uno de estos comandos en su lugar:

$ git checkout master

$ git rev-parse --symbolic-full-name HEAD
refs/heads/master
$ git rev-parse --abbrev-ref HEAD
master

$ git symbolic-ref HEAD
refs/heads/master
$ git symbolic-ref --short HEAD
master

cf. el documento oficial:

  • git rev-parse --symbolic-full-name

    Esto es similar a –symbolic, pero omite la entrada que no son referencias (es decir, nombres de rama o etiqueta; o más explícitamente desambigua la forma “cabezas/maestro”, cuando desea nombrar la rama “maestro” cuando hay un nombre desafortunadamente etiquete “maestro”) y muéstrelos como nombres de referencia completos (p. ej., “refs/heads/master”).

  • git rev-parse --abbrev-ref[=(strict|loose)]

    Un nombre abreviado no ambiguo del nombre de los objetos. […]

  • git symbolic-ref <name>

    Dado un argumento, lee a qué rama se refiere la referencia simbólica dada y genera su ruta, relativa a la .git/ directorio. Por lo general, le daría HEAD como el <name> argumento para ver en qué rama está su árbol de trabajo.

  • git symbolic-ref --short <name>

    Cuando muestre el valor de como una referencia simbólica, intente acortar el valor, por ejemplo, de refs/heads/master a master.

y tenga en cuenta que el git rev-parse solución es “compatible” con separado HEAD modoes decir, si actualmente no hay ninguna sucursal desprotegida, y HEAD simplemente apunta a una referencia SHA1, los dos git rev-parse los comandos considerados anteriormente solo generarán “HEAD”:

$ git checkout 56e23844e80e6d607ad5fa56dfeedcd70e97ee70
Note: checking out '56e23844e80e6d607ad5fa56dfeedcd70e97ee70'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
[…]

$ git rev-parse --symbolic-full-name HEAD
HEAD
$ git rev-parse --abbrev-ref HEAD
HEAD
$ git rev-parse HEAD
56e23844e80e6d607ad5fa56dfeedcd70e97ee70

  • Otra opción es ‘git symbolic-ref --short HEAD.’

    – RandomDSdevel

    26 de noviembre de 2020 a las 17:40

  • @RandomDSdevel de hecho, pero ese comando parece menos “robusto” en el caso de un HEAD separado: git checkout HEAD^{commit} && git symbolic-ref --short HEADfatal: ref HEAD is not a symbolic ref

    – Erik MD

    26 de noviembre de 2020 a las 18:50


  • Cierto, pero, para el caso de uso del OP, naturalmente ya saben que están en una rama que han revisado.

    – RandomDSdevel

    21 de diciembre de 2020 a las 22:56

  • Aceptar @RandomDSdevel: su documento incluso dice: “Típicamente le darías HEAD como el argumento para ver en qué rama está su árbol de trabajo”. Por lo tanto, podría verse como otra alternativa para la respuesta aceptada, para versiones anteriores de Git que no admiten git branch --show-current. Por cierto, no dude en proponer una edición de mi respuesta si lo desea.

    – Erik MD

    21 de diciembre de 2020 a las 23:03

  • Acabo de refactorizar mi respuesta para mencionar también git symbolic-ref (y enlaces a documentos de git-scm), gracias @RandomDSdevel por haber sugerido esto.

    – Erik MD

    1 de enero de 2021 a las 19:04

¿Ha sido útil esta solución?