Editar : Jakub Narębski tiene más git-fu. El siguiente comando mucho más simple funciona perfectamente:
git describe --tags
(O sin el --tags
si ha extraído una etiqueta anotada. Mi etiqueta es liviana, así que necesito las etiquetas -).
La respuesta original sigue:
git describe --exact-match --tags $(git log -n1 --pretty='%h')
Alguien con más git-fu puede tener una solución más elegante ...
Esto aprovecha el hecho de que git-log
informa el registro a partir de lo que ha desprotegido. %h
imprime el hash abreviado. Luego git describe --exact-match --tags
encuentra la etiqueta (ligera o anotada) que coincide exactamente con esa confirmación.
La $()
sintaxis anterior supone que está utilizando bash o similar.
git describe
usaría mostraría el nombre de la etiqueta si está exactamente en la etiqueta (anotada), o<tag>-<n>-g<shortened sha-1>
si no, dónde<n>
está el número de confirmaciones desde entonces<tag>
.--exact-match
a mi respuesta segundos antes de tu comentario. Es bueno saber que puede eliminarlo y aún así obtener buena información de la entrada más difusa.git rev-parse HEAD
es una solución mejor quegit log -n1 --pretty='%h'
... pero ¿por qué no puedes simplemente escribirHEAD
(o nada, comogit describe
predeterminado en HEAD)?Esto funciono para mi
git describe --tags --abbrev=0
fuente
Mostrar todas las etiquetas en HEAD actual (o commit)
fuente
git describe
es un comando de porcelana , que debes evitar:http://git-blame.blogspot.com/2013/06/checking-current-branch-programatic.html
En cambio, usé:
fuente
^0
para las confirmaciones que corresponden a etiquetas (por ejemplo, para la etiqueta1.0
que genera1.0^0
). ¿Hay alguna manera de tener solo la salida de Git1.0
, o debería usar sed para esto?Cuando revisa una etiqueta, tiene lo que se llama una "cabeza separada" . Normalmente, la confirmación HEAD de Git es un puntero a la rama que actualmente ha desprotegido. Sin embargo, si revisa algo que no sea una sucursal local (una etiqueta o una sucursal remota, por ejemplo), tiene una "cabeza separada": no está realmente en ninguna sucursal. No debe realizar ningún compromiso mientras está con la cabeza separada.
Está bien revisar una etiqueta si no desea realizar ninguna edición. Si solo está examinando el contenido de los archivos, o si desea construir su proyecto a partir de una etiqueta, está bien
git checkout my_tag
y trabajar con los archivos, siempre y cuando no realice ninguna confirmación . Si desea comenzar a modificar archivos, debe crear una rama basada en la etiqueta:creará una nueva rama llamada a
my_tag_branch
partir demy_tag
. Es seguro realizar cambios en esta rama.fuente
git log --decorate
Esto le dirá qué referencias apuntan al commit actualmente desprotegido.
fuente