11/01/2018 Git Lanzando nuevas versiones de nuestros proyectos mediante los tags de Git

Lanzando nuevas versiones de nuestros proyectos mediante los tags de Git

Estamos aprendiendo un montón de cosas nuevas para dominar Git, pero hasta este momento ni mención a la versiones de nuestros proyectos. Sabemos que vais muy adelantados en vuestro proyecto y que gracias a Git estáis trabajando de forma mucho más eficiente. Estáis a punto de publicar la versión 0.1 de vuestro proyecto, para que la gente pueda probarlo y dejaros sus opiniones, pero… ¿Cómo diablos creamos una nueva versión de nuestro software en Git? ¡Vamos a ello!

En Git existe una función para añadir tags a nuestros commits, que no son más que unos punteros (como HEAD o cada una de las ramas, como ya vimos) que nos permiten referenciar un commit que queremos que queremos poder lozalizar y acceder fácilmente. En realidad podemos crear tags para cualquier commit que queramos poder localizar rápidamente una vez que haya pasado el tiempo, pero es cierto que generalmente esta función es utilizada para lanzamientos de versiones de nuestras aplicaciones.

A saber: existen dos tipos de tags, los anotados (annotated tags) y los no anotados (lightweight tags).

Tags no anotados

Primero veremos los no anotados, que son los más fáciles. Este tipo de tags son los que suelen utilizarse para poder localizar un commit especialmente relevante pero que no sea un lanzamiento de una nueva versión. ¿Por qué? Porque sólo se le puede poner una etiqueta con un nombre, nada más. Es una especie de recordatorio, usualmente temporal.

Si el tag se quiere añadir al commit más reciente basta con añadir el comando git tag v0.1 y si utilizamos el comando git log --oneline --decorate veremos que ahora nuestro HEAD también tiene el puntero tag: v0.1; si queremos añadir un tag a un commit anterior también se puede, bien poniendo el hash del commit (el código que referencia al commit situado en primer lugar en el comando log) o, como ya hemos aprendido a hacerlo, referenciándolo de forma relativa desde el commit más reciente (HEAD), por ejemplo: git tag v0.1 HEAD~2.

Tags anotados

Por así decirlo, un tag anotado es como un commit ya que es tratado como un objeto y en él podemos añadir un mensaje en el que expliquemos el motivo de haber añadido ese tag, además queda constancia de la fecha en que se añadió y quién lo añadió; es por esto que es ideal para versionar nuestro código, ya que queda todo mucho más detallado y en el mensaje podemos escribir cuáles son los cambios que añade esa nueva versión.

El comando es muy similar al que ya hemos aprendido, sólo que añadiéndole parámetros. Si queremos escribir un mensaje corto, podemos hacerlo como en los commits: git tag -a v0.1 -m "Testing Git tags" aunque si queréis escribir un mensaje más largo, lo cual es recomendable, bastaría con escribir git tag -a v0.1 y en ese momento aparecería el editor de texto que hayamos configurado para poder escribir todo lo que queramos. Lógicamente también podemos escribir tags anotados para commits anteriores, por ejemplo: git tag -a v0.1 -m "Testing Git tags" HEAD~2

Listar tags

También podemos obtener una lista de todos los tags que hayamos añadido, y la forma más fácil es mediante el comando git tag. Fácil, ¿eh? Bueno, ¿y si tienes ya un desarrollo maduro y tienes muchísimas versiones? ¡Esa lista sería interminable! Pues afortunadamente existe una forma de filtrar los resultados. Si queremos filtrar los tags añadidos de las versiones 0.* podríamos utilizar el comando git tag -l "v0.*".

Obtener más información sobre un tag

Si nuestro tag fue anotado, con el comando git show v0.1 podremos ver toda la información relacionada con el tag pero también con el commit al que hace referencia; si nuestro tag fue no anotado, entonces sólo del commit al que hace referencia porque sobre el tag no habría ninguna información que obtener.

Eliminar tags

En cualquier momento podemos eliminar un tag, sea anotado o no, con el mismo comando: git tag -d v0.1. Este comando no necesita más explicación.

Enviar un tag a un nodo remoto

Si queréis enviar un determinado tag a un nodo remoto (si no sabéis lo que es un remoto echad un vistazo a Creando nuestro primer repositorio en GitHub) se hace de la misma forma a como enviaríamos una nueva rama: git push origin v0.1 y si tenéis más de un tag que queréis enviar podéis ejecutar el comando git push origin --tags para enviarlos todos con un único comando.

Trabajando con los tags en nodos remotos

Al enviar tags a nodos remotos como GitHub o GitLab conseguimos ofrecer a los usuarios que visiten nuestros proyectos la información de que una nueva versión fue lanzada pero además poder descargársela fácilmente, que para más comodidad todo esto se crea de forma automática. En GitHub, por ejemplo, cuando se envía un nuevo tag éste aparece obviamente en la sección de tags, pero también en la de releases, con lo que crear una nueva versión de nuestra aplicación para que los usuarios puedan descargársela es cuestión de un momento.

Sección de tags en GitHub

Ahora ya no podréis decir que no habéis compartido con el mundo una versión de vuestra aplicación (esperamos y deseamos que de código abierto) porque no sabíais cómo hacerlo.

Y para despedirnos al estilo SargantanaCode: ¡nunca dejéis de programar!

¿Sed de conocimiento?

Este artículo forma parte del curso Domina Git desde cero. El anterior artículo de este curso es Utilizando alias en Git para aumentar nuestra productividad y el próximo es Los alias más útiles de Oh My ZSH! para aumentar nuestra productividad con Git.

Javi Palacios

Javi Palacios

Editor

El primer día que programé supe que quería seguir haciéndolo durante el resto de mi vida. Compilando cosas en Linux desde 2003 y disfrutando de la estabilidad de macOS desde 2006. Amante de la tecnología y del software libre.

Nuevo comentario

Escribe tu nombre y correo electrónico para poder comentar, o inicia sesión para que estos campos se rellenen automáticamente.