Cómo comprobar si una etiqueta (tag) de Git es la más reciente

GitGitBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo verificar si una etiqueta (tag) de Git es la más reciente. Exploraremos diferentes métodos para determinar la etiqueta más reciente en tu repositorio.

Comenzarás utilizando el comando git describe --tags para encontrar la etiqueta alcanzable más reciente y entender su formato de salida. Luego, aprenderás cómo listar las etiquetas ordenadas por versión utilizando git tag --sort=-v:refname para identificar fácilmente la etiqueta más reciente. Finalmente, practicarás probando etiquetas antiguas para consolidar tu comprensión de cómo Git maneja el historial de etiquetas.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BranchManagementGroup -.-> git/checkout("Switch Branches") git/BranchManagementGroup -.-> git/tag("Git Tags") subgraph Lab Skills git/add -.-> lab-560113{{"Cómo comprobar si una etiqueta (tag) de Git es la más reciente"}} git/commit -.-> lab-560113{{"Cómo comprobar si una etiqueta (tag) de Git es la más reciente"}} git/checkout -.-> lab-560113{{"Cómo comprobar si una etiqueta (tag) de Git es la más reciente"}} git/tag -.-> lab-560113{{"Cómo comprobar si una etiqueta (tag) de Git es la más reciente"}} end

Ejecutar git describe --tags

En este paso, aprenderemos cómo usar el comando git describe --tags. Este comando es muy útil para encontrar la etiqueta (tag) más reciente que es alcanzable desde un commit. A menudo se utiliza para nombrar commits de una manera legible por humanos, especialmente para lanzamientos (releases).

Primero, asegúrate de estar en el directorio de tu proyecto. Abre tu terminal y escribe:

cd ~/project/my-time-machine

Ahora, creemos algunos commits y etiquetas para demostrar git describe --tags. Agregaremos un nuevo archivo y haremos un commit:

echo "This is the second message." > message2.txt
git add message2.txt
git commit -m "Add second message file"

Deberías ver una salida similar a esta:

[master <commit-hash>] Add second message file
 1 file changed, 1 insertion(+)
 create mode 100644 message2.txt

Ahora, agreguemos una etiqueta a este commit. Las etiquetas son como etiquetas permanentes para puntos específicos en la historia de tu proyecto. Crearemos una etiqueta ligera llamada v1.0:

git tag v1.0

Este comando no produce ninguna salida, pero ha creado una etiqueta que apunta a nuestro último commit.

Hagamos otro commit:

echo "This is the third message." > message3.txt
git add message3.txt
git commit -m "Add third message file"

Deberías ver una salida similar a esta:

[master <commit-hash>] Add third message file
 1 file changed, 1 insertion(+)
 create mode 100644 message3.txt

Ahora, ejecutemos git describe --tags:

git describe --tags

Deberías ver una salida similar a esta:

v1.0-1-g<commit-hash>

Desglosemos esta salida:

  • v1.0: Este es el nombre de la etiqueta más reciente (v1.0) que es alcanzable desde el commit actual.
  • 1: Este número indica cuántos commits se han realizado desde la etiqueta v1.0.
  • g<commit-hash>: La g significa "git" y los caracteres siguientes son una forma abreviada del hash del commit. Esto ayuda a identificar de manera única el commit.

Así, v1.0-1-g<commit-hash> nos dice que el commit actual está a un commit de distancia de la etiqueta v1.0.

Comprender git describe --tags es útil para identificar rápidamente dónde te encuentras en la historia de tu proyecto en relación con tus etiquetas. Es especialmente útil en procesos de compilación automatizados para generar nombres de versiones.

Usar git tag --sort=-v:refname

En este paso, aprenderemos cómo listar nuestras etiquetas (tags) en un orden específico utilizando el comando git tag --sort. Esto es útil cuando tienes muchas etiquetas y deseas verlas en una secuencia lógica, como por número de versión.

Primero, asegúrate de estar en el directorio de tu proyecto:

cd ~/project/my-time-machine

Ya tenemos una etiqueta, v1.0. Agreguemos un par más de etiquetas para ver cómo funciona la ordenación. Agregaremos una etiqueta para el commit inicial (donde creamos message.txt). Para hacer esto, necesitamos el hash del commit del primer commit. Puedes encontrarlo utilizando git log --oneline:

git log --oneline

Busca el primer mensaje de commit, "Send a message to the future", y copia el hash corto del commit que está al lado. Se verá algo como a1b2c3d.

Ahora, creemos una etiqueta llamada v0.9 que apunte a ese primer commit. Reemplaza <first-commit-hash> con el hash real que encontraste:

git tag v0.9 <first-commit-hash>

Agreguemos una etiqueta más, v1.1, al commit actual:

git tag v1.1

Ahora tenemos tres etiquetas: v0.9, v1.0 y v1.1. Si simplemente ejecutamos git tag, es posible que no aparezcan en orden de versión:

git tag

La salida podría verse algo así (el orden puede variar):

v0.9
v1.0
v1.1

Para listar las etiquetas en orden de versión, podemos usar git tag --sort=version. La opción -v:refname es una forma común de ordenar las etiquetas en función de su nombre utilizando una ordenación consciente de la versión. El - antes de -v:refname significa ordenar en orden descendente (la versión más reciente primero).

Probémoslo:

git tag --sort=-v:refname

Deberías ver las etiquetas listadas de la versión más alta a la más baja:

v1.1
v1.0
v0.9

Esta ordenación es muy útil cuando estás gestionando lanzamientos (releases) y deseas ver rápidamente las versiones más recientes de tu proyecto. La opción --sort es poderosa y también se puede utilizar con otros criterios, pero ordenar por nombre de versión es un caso de uso común para las etiquetas.

Probar etiquetas (tags) antiguas

En este paso, exploraremos cómo se comporta git describe --tags cuando no estamos en el último commit. Esto demuestra cómo el comando te ayuda a entender tu posición en la historia del proyecto en relación con tus etiquetas.

Primero, asegúrate de estar en el directorio del proyecto:

cd ~/project/my-time-machine

Actualmente estamos en el último commit, que está etiquetado con v1.1. Usemos git describe --tags de nuevo para confirmar:

git describe --tags

La salida debería ser v1.1 porque el commit actual es exactamente donde apunta la etiqueta v1.1.

Ahora, regresemos al commit donde creamos la etiqueta v1.0. Podemos usar git checkout seguido del nombre de la etiqueta para hacer esto.

git checkout v1.0

Verás una salida que indica que estás en un estado de 'HEAD desatachado' (detached HEAD). No te preocupes por esto por ahora; simplemente significa que estás viendo un commit específico en lugar del final de una rama (branch).

Note: switching to 'v1.0'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command (for example,
'git switch -c <new-branch-name>'). Or, if you meant to switch to a number
of commits past an existing branch, what you probably want is to use
'git switch <branch-name>~<number>'.

Switched to a new branch 'v1.0'

Ahora que estamos en el commit etiquetado v1.0, ejecutemos git describe --tags de nuevo:

git describe --tags

La salida debería ser simplemente:

v1.0

Esto se debe a que el commit actual es exactamente donde se encuentra la etiqueta v1.0. No hay commits entre la posición actual y la etiqueta v1.0.

Intentemos regresar al commit donde creamos la etiqueta v0.9:

git checkout v0.9

Nuevamente, verás el mensaje de HEAD desatachado.

Ahora, ejecuta git describe --tags:

git describe --tags

La salida debería ser similar a:

v0.9

Esto confirma que git describe --tags identifica correctamente la etiqueta más cercana desde tu posición actual en la historia de los commits. Esta capacidad de describir commits en relación con las etiquetas es muy útil para entender el estado de tu proyecto en diferentes puntos del tiempo.

Para volver al último commit en la rama master, puedes usar:

git checkout master

Deberías ver una salida que indique que has vuelto a la rama master:

Switched to branch 'master'
Your branch is up to date with 'origin/master'.

Resumen

En este laboratorio (lab), aprendimos cómo comprobar si una etiqueta (tag) de Git es la más reciente utilizando diferentes métodos. Comenzamos explorando el comando git describe --tags, que ayuda a identificar la etiqueta más reciente alcanzable desde un commit y proporciona información sobre el número de commits desde esa etiqueta y un hash corto del commit. Este comando es útil para entender la relación entre el commit actual y la etiqueta más cercana.

También aprendimos cómo usar git tag --sort=-v:refname para listar las etiquetas en orden descendente según su número de versión, lo que nos permite identificar fácilmente la etiqueta más reciente por su nombre. Finalmente, exploramos cómo probar etiquetas antiguas para entender cómo se comporta git describe --tags cuando no estamos en el último commit. Estas técnicas proporcionan herramientas valiosas para gestionar y entender las etiquetas dentro de un repositorio de Git.