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?
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
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íaHEAD
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
amaster
.
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 HEAD
→fatal: 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 argumentopara 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
Ver también: ¿Cómo obtener el nombre de la rama actual en Git?
– KyleMit
♦
2 de enero de 2022 a las 1:53