tener - ¿Cómo mostrar el historial completo de etiquetas en git?
¿qué hace git log-oneline? (1)
Las etiquetas en git aparentemente se pueden mover de una confirmación a otra simplemente borrándolas y luego volviéndolas a etiquetar.
Por ejemplo:
git tag -m "Version 1.0" v1.0 abcd123
git push --tags
git tag -d v1.0
git tag -m "Corrected version 1.0" v1.0 1234abc
git push --tags
¿Cómo veo el historial completo de una etiqueta en particular? (En otras palabras, cada vez que se creó / eliminó una etiqueta con ese nombre, y a qué commits apuntó cada uno)
¿Cómo veo el historial completo de todas las etiquetas?
También se pueden mover por la fuerza:
git tag -f ...
y luego empujado por la fuerza.
¿Cómo veo el historial completo de una etiqueta en particular? (En otras palabras, cada vez que se creó / eliminó una etiqueta con un nombre, y a qué confirma cada una de ellas)
En general, no puedes.
Si una etiqueta se mueve forzosamente y se fuerza y mantiene los reflogs para las etiquetas, puede recuperar valores anteriores del reflog de la etiqueta, hasta que caduquen esas entradas de reflog. Sin embargo, al eliminar una referencia (cualquier referencia), se elimina el reflog.
Las etiquetas anotadas usan objetos dentro del repositorio (además de la referencia misma). La eliminación de la referencia elimina solo la referencia externa de nombre de etiqueta al objeto de etiqueta anotada. Siempre que el objeto subyacente no se haya eliminado, puede acceder a él por ID. Sin embargo, como objeto sin referencia, está sujeto a las reglas habituales de recolección de basura. Solo si alguna referencia adicional (normalmente otro nombre de etiqueta para otra etiqueta anotada) mantiene el objeto de etiqueta anotado original accesible, se garantiza que permanecerá en el repositorio.
(No hay ninguna razón fundamental por la que un objeto de árbol no pueda señalar objetos de etiqueta, por lo que sería posible tener un objeto de confirmación que apuntara a un árbol que mantiene etiquetas antiguas anotadas. Pero Git no está diseñado para hacerlo, y no tiene herramientas para construir tales cosas, y es posible que git fsck
considere erróneas. Por lo tanto, este es más un ejercicio teórico: teóricamente sería posible guardar, y persistir, "etiquetas viejas" e "historial de etiquetas" mediante confirmaciones especiales, probablemente apuntadas - a través de un nuevo espacio de nombre de referencia como refs/tagarchive/
, si se refs/tagarchive/
al menos un comando de plomería de Git y varios guiones. Por supuesto, todo esto es pura especulación hasta que alguien los escriba. No está claro cómo serían útiles , ya sea .)