tipos tag qué oneline log hace existen etiquetas eliminar crear git git-branch git-tag

tag - tipos de etiquetas en git



¿Qué sucede con las etiquetas Git que apuntan a una confirmación eliminada? (3)

Di que hago lo siguiente:

  1. Crear rama X
  2. Crear etiqueta t (para bifurcar X )
  3. empujar
  4. Quitar rama X

¿Qué pasa con la etiqueta t ? ¿Está simplemente flotando allí? es considerado como basura?

¿Debo eliminar todas las etiquetas que apuntan a la rama antes de quitar la rama en sí?

Referencia

Desde Git Basics - Etiquetado :

Git utiliza dos tipos principales de etiquetas: ligeras y anotadas. Una etiqueta liviana es muy parecida a una rama que no cambia, es solo un puntero a una confirmación específica.


¿Qué pasa con la etiqueta t?

Digamos que creaste la rama x de un commit E y luego etiquetaste ese commit con la etiqueta t . P.ej

x (branch) | V A-----B------C------D------E ^ | t (tag)

Si eliminas la rama x no pasa nada al etiquetar t .

git branch -D x

La etiqueta todavía apunta a cometer E

A-----B------C------D------E ^ | t (tag)

es considerado como basura?

No, porque la etiqueta t sigue haciendo referencia a la confirmación.

¿Qué pasa si se elimina el commit?

No eliminas las confirmaciones. Se eliminan los punteros a las confirmaciones y, si ya no se hace referencia a las confirmaciones, git los recolectará algún día (según su configuración).

Ver git gc

Incluso si eliminó todas las referencias comunes, como ramas y etiquetas, las confirmaciones seguirán estando referenciadas en el reflog durante algún tiempo y podrá acceder a ellas, por ejemplo, crear una rama nuevamente, etiquetarlas o seleccionarlas y así sucesivamente.

Puedes ver el reflog usando git reflog . También eche un vistazo a gc.reflogExpireUnreachable y gc.reflogExpire


No estoy abordando el escenario específico en la pregunta del OP, sino más bien la pregunta en el título: ¿Qué sucede con una etiqueta git que apunta a una confirmación eliminada?

Si de alguna manera logró eliminar una confirmación a la que hizo referencia una etiqueta (no está seguro de cómo podría hacerlo, vea la respuesta de René Link ), la etiqueta solo sería un puntero a una confirmación no válida (puede probar esto editando manualmente un etiqueta de .git / refs / tags).

En tal caso, la salida de la git tag sería algo como esto:

$ git tag error: refs/tags/v1.0 does not point to a valid object! v1.1 ...etc

La comprobación también produciría error:

$ git checkout v1.0 fatal: reference is not a tree: v1.0

Entonces, la respuesta a una pregunta "¿Qué sucede con una etiqueta git que hace referencia a una confirmación eliminada?" no es nada. Permanecerá allí, apuntando a una referencia no válida, hasta que la elimines con la git tag -d <tag> .