Close

git tag

En este documento, se tratará el concepto de Git del etiquetado y el comando git tag. Las etiquetas son referencias que apuntan a puntos concretos en el historial de Git. Generalmente, el etiquetado se usa para capturar un punto en el historial que se utiliza para una publicación de versión marcada (por ejemplo, v1.0.1). Una etiqueta es como una rama que no cambia. A diferencia de las ramas, las etiquetas, tras crearse, no tienen más historial de confirmaciones. Si quieres más información sobre las ramas, visita la página de git branch. En este documento, se explicarán los diferentes tipos de etiquetas, cómo crearlas, cómo elaborar una lista con todas ellas, cómo eliminarlas, cómo compartirlas, etc.


Creación de una etiqueta


Para crear una nueva etiqueta, ejecuta el siguiente comando:

git tag <tagname>

Sustituye < tagname > con un identificador semántico del estado del repositorio en el momento en el que se crea la etiqueta. Un patrón habitual es utilizar números de versión como git tag v1.4. Git admite dos tipos diferentes de etiquetas: etiquetas anotadas y ligeras. En el ejemplo anterior, se ha creado una etiqueta ligera. Las etiquetas ligeras y las anotadas difieren en la cantidad de metadatos adjuntos que almacenan. Una práctica recomendada es considerar las etiquetas anotadas como públicas y las etiquetas ligeras como privadas. Las etiquetas anotadas almacenan metadatos adicionales como los siguientes: el nombre de la persona que etiqueta, su correo electrónico y la fecha. Son datos importantes para una publicación pública. Las etiquetas ligeras son básicamente “marcadores” de una confirmación; son solo un nombre y un puntero a una confirmación, útiles para crear enlaces rápidos a las confirmaciones relevantes.

Annotated tags


Las etiquetas anotadas se almacenan como objetos completos en la base de datos de Git. Para que quede claro, almacenan metadatos adicionales como los siguientes: el nombre de la persona que etiqueta, su correo electrónico y la fecha. Al igual que las confirmaciones y los mensajes de las confirmaciones, las etiquetas anotadas tienen un mensaje de etiquetado. Además, por seguridad, las etiquetas anotadas pueden firmarse y verificarse con GNU Privacy Guard (GPG). La práctica recomendada para el etiquetado de git es dar preferencia a las etiquetas anotadas por encima de las ligeras, para poder tener todos los metadatos asociados.

git tag -a v1.4

Al ejecutar este comando, se creará una nueva etiqueta anotada identificada como v1.4. A continuación, el comando abrirá el editor de texto predeterminado configurado para solicitar que se introduzcan más metadatos.

git tag -a v1.4 -m "my version 1.4"

La ejecución de este comando es similar a la invocación anterior; sin embargo, esta versión del comando incluye la opción -m y un mensaje. Se trata de un método útil similar a git commit -m que creará inmediatamente una nueva etiqueta y renunciará a abrir el editor de texto local a favor de guardar el mensaje que se pasa con la opción -m.

Logotipo de Git
Material relacionado

Chuleta de Git

Logotipo de Bitbucket
VER LA SOLUCIÓN

Aprende a usar Git con Bitbucket Cloud

Lightweight tags


git tag v1.4-lw

Al ejecutar este comando, se crea una etiqueta ligera identificada como v1.4-lw. Las etiquetas ligeras se crean con la ausencia de las opciones -a, -s o -m. Las etiquetas ligeras crean una nueva suma de verificación de etiquetas y la almacenan en el directorio .git/ del repositorio del proyecto.

Listing tags


Para elaborar una lista de las etiquetas almacenadas en un repositorio, ejecuta lo siguiente:

git tag

El resultado será una lista de etiquetas:

v0.10.0
    v0.10.0-rc1
    v0.11.0
    v0.11.0-rc1
    v0.11.1
    v0.11.2
    v0.12.0
    v0.12.0-rc1
    v0.12.1
    v0.12.2
    v0.13.0
    v0.13.0-rc1
    v0.13.0-rc2

Para perfeccionar la lista de etiquetas, se puede usar la opción -l con una expresión comodín:

$ git tag -l *-rc*
    v0.10.0-rc1
    v0.11.0-rc1
    v0.12.0-rc1
    v0.13.0-rc1
    v0.13.0-rc2
    v0.14.0-rc1
    v0.9.0-rc1
    v15.0.0-rc.1
    v15.0.0-rc.2
    v15.4.0-rc.3

En este ejemplo anterior, se utiliza la opción -l y una expresión comodín de -rc que devuelve una lista de todas las etiquetas marcadas con un prefijo -rc, tradicionalmente utilizado para identificar candidatos de publicación.

Tagging old commits


Los ejemplos de etiquetado anteriores han demostrado operaciones en las confirmaciones implícitas. De manera predeterminada, git tag creará una etiqueta en la confirmación a la que HEAD hace referencia. Otra alternativa es que git tag puede usarse como una referencia a una confirmación específica. Esta acción etiquetará la confirmación usada en vez de establecer como predeterminado HEAD. Para recopilar una lista de confirmaciones más antiguas, ejecuta el comando git log.

$ git log --pretty=oneline
    15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch 'feature'
    a6b4c97498bd301d84096da251c98a07c7723e65 add update method for thing
    0d52aaab4479697da7686c15f77a3d64d9165190 one more thing
    6d52a271eda8725415634dd79daabbc4d9b6008e Merge branch 'experiment'

Al ejecutar git log, aparecerá una lista de confirmaciones. En este ejemplo, escogeremos la primera confirmación, Merge branch 'feature', para la nueva etiqueta. Tendremos que hacer referencia al hash SHA de la confirmación para usarla en Git:

git tag -a v1.2 15027957951b64cf874c3557a0f3547bd83b3ff6

Al ejecutar la invocación de git tag anterior, se creará una nueva confirmación anotada identificada como v1.2 para la confirmación que hemos seleccionado en el ejemplo de git log anterior.

ReTagging/Replacing old tags


Si intentas crear una etiqueta con el mismo identificador que una etiqueta existente, Git lanzará un error como el siguiente:

fatal: tag 'v0.4' already exists

Asimismo, si intentas etiquetar una confirmación más antigua con un identificador de etiqueta existente, Git lanzará el mismo error.

En el caso de que tengas que actualizar una etiqueta existente, debe utilizarse la opción -f (--force).

git tag -a -f v1.4 15027957951b64cf874c3557a0f3547bd83b3ff6

Al ejecutar el comando anterior, se asignará la confirmación 15027957951b64cf874c3557a0f3547bd83b3ff6 al identificador de etiquetas v1.4. Esto sobrescribirá cualquier contenido existente de la etiqueta v1.4.

Sharing: Pushing tags to remote


Compartir etiquetas es similar a enviar ramas. De manera predeterminada, git push no enviará etiquetas. Las etiquetas se tienen que usar explícitamente en git push.

$ git push origin v1.4
    Counting objects: 14, done.
    Delta compression using up to 8 threads.
    Compressing objects: 100% (12/12), done.
    Writing objects: 100% (14/14), 2.05 KiB | 0 bytes/s, done.
    Total 14 (delta 3), reused 0 (delta 0)
    To git@bitbucket.com:atlasbro/gittagdocs.git
     * [new tag]         v1.4 -> v1.4

Para enviar varias etiquetas al mismo tiempo, usa la opción --tags en el comando git push. Cuando otro usuario clone un repositorio o incorpore cambios en él, recibirá las nuevas etiquetas.

Checking out tags


You can view the state of a repo at a tag by using the git checkout command.

git checkout v1.4

El comando anterior extraerá la etiqueta v1.4. Esta acción dejará el repositorio en un estado de HEAD desasociado, lo que significa que ningún cambio que se haga actualizará la etiqueta, sino que creará una nueva confirmación desasociada. Esta nueva confirmación desasociada no formará parte de ninguna rama y solo se podrá acceder a ella directamente mediante el hash SHA de la confirmación. Por lo tanto, es recomendable crear una nueva rama cada vez que hagas cambios en un estado de HEAD desasociado.

Deleting tags


La eliminación de etiquetas es una operación sencilla. Al usar la opción -d y un identificador de etiqueta de git tag, se eliminará la etiqueta identificada.

$ git tag
    v1
    v2
    v3
    $ git tag -d v1
    $ git tag
    v2
    v3

En este ejemplo, se ejecuta git tag para visualizar una lista de etiquetas que muestra v1, v2 y v3. A continuación, se ejecuta git tag -d v1, lo que elimina la etiqueta v1.

Resumen


To recap, Tagging is an additional mechanism used to create a snap shot of a Git repo. Tagging is traditionally used to create semantic version number identifier tags that correspond to software release cycles. The git tag command is the primary driver of tag: creation, modification and deletion. There are two types of tags; annotated and lightweight. Annotated tags are generally the better practices as they store additional valuable meta data about the tag. Additional Git commands covered in this document were git push, and git checkout. Visit their corresponding pages for discussion on their extended use.


Compartir este artículo
Tema siguiente

Lecturas recomendadas

Consulta estos recursos para conocer los tipos de equipos de DevOps o para estar al tanto de las novedades sobre DevOps en Atlassian.

Gente que colabora utilizando un muro lleno de herramientas

Blog de Bitbucket

Ilustración de Devops

Ruta de aprendizaje de DevOps

Demostraciones de funciones con expertos de Atlassian del Centro de demostraciones

Cómo funciona Bitbucket Cloud con Atlassian Open DevOps

Suscríbete para recibir el boletín de DevOps

Thank you for signing up