trucos tag que name log hace commits commands comentarios codigos git tags git-tag

git - tag - ¿Se puede convertir una etiqueta liviana en una etiqueta anotada?



que es git log (4)

Convierta todas las etiquetas en anotadas (según el ejemplo de Charles Bailey y el comentario de Ferenc Wágner):

for tag in $(git tag -l); do git tag -a -f $tag $tag^0 -m $tag; done git push --tags --force

Etiqueté una confirmación con una etiqueta ligera y la inserté en un repositorio remoto, compartido con otros desarrolladores. Ahora me he dado cuenta de que debería haberlo anotado para que aparezca en git describe .

¿Hay alguna forma de convertirlo / volver a etiquetar el compromiso sin romper las cosas?


Según la respuesta de Charles y en esta publicación de blog , creo que es mejor usar algo como esto:

#!/bin/sh tag=$1 date="$(git show $tag --format=%aD | head -1)" GIT_COMMITTER_DATE="$date" git tag -a -f $tag $tag


También puede usar git describe --tags para incluir también etiquetas ligeras en la búsqueda.


Una etiqueta liviana es solo una ''ref'' que apunta a ese compromiso. Puede forzar a crear una nueva etiqueta anotada sobre la etiqueta anterior:

git tag -a -f <tagname> <tagname>

A partir de Git v1.8.2, necesitas usar --force para reemplazar cualquier etiqueta en un control remoto con git push , incluso si estás reemplazando una etiqueta liviana con algo que sea efectivamente un avance rápido o un objeto de etiqueta verdadero apuntando al misma confirmación que la referencia de etiqueta existente.

git push --force origin <tagname>