Editar : Jakub Narębski tiene más git-fu. El siguiente comando mucho más simple funciona perfectamente:
git describe --tags
(O sin el --tagssi 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-loginforma el registro a partir de lo que ha desprotegido. %himprime el hash abreviado. Luego git describe --exact-match --tagsencuentra la etiqueta (ligera o anotada) que coincide exactamente con esa confirmación.
La $()sintaxis anterior supone que está utilizando bash o similar.
git describeusarí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-matcha 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 HEADes una solución mejor quegit log -n1 --pretty='%h'... pero ¿por qué no puedes simplemente escribirHEAD(o nada, comogit describepredeterminado en HEAD)?Esto funciono para mi
git describe --tags --abbrev=0fuente
Mostrar todas las etiquetas en HEAD actual (o commit)
fuente
git describees un comando de porcelana , que debes evitar:http://git-blame.blogspot.com/2013/06/checking-current-branch-programatic.html
En cambio, usé:
fuente
^0para las confirmaciones que corresponden a etiquetas (por ejemplo, para la etiqueta1.0que 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_tagy 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_branchpartir demy_tag. Es seguro realizar cambios en esta rama.fuente
git log --decorateEsto le dirá qué referencias apuntan al commit actualmente desprotegido.
fuente