tag - "Git describe" ignora una etiqueta
qué tipos de etiquetas existen en git (3)
Cuando esto nos sucedió, se trataba de dos etiquetas aplicadas para el mismo compromiso. Puede encontrar si este es el caso ejecutando
# git log --oneline --decorate=short
deba4b4 (tag: v1.1.0.20.0, tag: v1.1.0.19.0) 001 New buildnumber
Aquí hay dos etiquetas, una para la versión 19 y otra para 20. 20 fue etiquetada después de 19, pero para la misma confirmación. En este caso describe la devolución
# git describe --tags
v1.1.0.19.0
No sé por qué lo hizo, pero así es como parece funcionar con etiquetas duplicadas.
Otro caso donde esto podría suceder es si tiene una etiqueta que está más "cerca" de usted en una sucursal. Ese caso ha sido explicado en esta publicación de blog .
En las siguientes líneas:
$ git tag -n1
v1.8 Tagged the day before yesterday
v1.9 Tagged yesterday
v2.0 Tagged today
$ git describe
v1.9-500-ga6a8c67
$
¿Alguien puede explicar por qué la etiqueta v2.0 no es utilizada por "git describe" y cómo solucionarlo? La etiqueta v2.0 ya está presionada, así que supongo que no puedo simplemente eliminarla y volver a agregarla.
El problema es que la git tag
muestra todas las etiquetas en todas las ramas, mientras que git describe
solo usa etiquetas en las confirmaciones que están disponibles en la rama actual.
Aquí hay un ejemplo (la razón por la que vine aquí en realidad):
$ git tag | tail -n3
v0.4.0
v0.4.1
v0.4.2
Muestra que la última etiqueta disponible es v0.4.2
, pero esta es mi salida de git describe
:
$ git describe --tags
v0.4.0-2-acd334c
Estoy en la rama de desarrollo. Cuando exploro el registro, veo que las etiquetas más recientes no están disponibles en la rama actual:
$ git log --oneline --decorate=short | grep ''/(tag/:'' | head -n3
acd334c (tag: v0.4.0) Merge pull request #1061
988fe5e (tag: v0.3.6) Merge pull request #859
5f97274 (tag: v0.3.5) Merge pull request #646
Entonces, en mi caso, los desarrolladores decidieron crear una nueva rama de publicación exclusivamente para etiquetar lanzamientos, lo que hace que la rama de desarrollo ya no esté actualizada con las etiquetas.
Espero que ayude y gracias @eis por la idea de verificar los registros.
git describe
usa solo etiquetas anotadas por defecto. especifica la opción --tags
para que también use etiquetas livianas
asegúrate de haber comprobado la confirmación correcta ( git rev-parse HEAD
). Las etiquetas anotadas se crean con la git tag -a
. si haces git show <tagname>
y solo ves el compromiso, es una etiqueta ligera, si ves un mensaje de etiqueta adicional es una etiqueta anotada.