Git manexar etiquetas

Logo GIT

Verémola creación de etiquetas “tags”, a consulta das mesmas e a súa eliminación, este artigo amplía máis os coñecementos vistos en Inico en git.

Listalas etiquetas

Para listalas etiquetas “tags” existentes no proxecto:
git tag

As lista en orde alfabético.

Buscar etiquetas que coincidan cun patrón:
git tag -l "v1.*"

Donde poñemos a cadea a buscar e un asterisco no que sexa aleatorio.

Os tipos de etiquetas

Git soporta dous tipos de etiquetas:

As lightweight son coma un branch (ramificación) que non muda, é un punteiro a unha aplicación de mudanzas ( commit ) específica.

En cambio as annotated, son gardadas como obxetos completos na base de datos de Git. Failles unha función resumo (checksummed), conteñen o nome, email e data de etiquetación da persoa que o fai. Tamén ten unha mensaxe de etiquetado e pode ser asinado cunha chave GPG, cousa recomendable pra que se sepa que foche ti quen etiquetou o estado do código nese momento, logo se mudan a etiqueta non podrán facelo firmando coa túa chave.

O resumo sobre o uso é que se vas facer unha etiqueta temporal que non teña información sobre o etiquetado, as etiquetas “lightweight” son as recomendadas, pra etiquetados fináis, mellor usalas annotated.

Parámetros creación de etiquetas

Estos parámetros son os que usa “git tag”, o uso ou non deles, implica no resultado da etiqueta final que sexa tomada como “annotated” ou “lightweight”.


Etiquetas lixeiras “lightweight”

Estas serían tomadas como etiquetas “vagas” usadas pra marcar rápido o último commit realizado.

Crear unha etiqueta “lightweight”

Son sinxelas non teñen moito misterio, case son coma un alias dun determinado commit.

Para facer unha etiqueta lixeira “lightweight”:
git tag <nome_etiqueta>
$ git tag v1.4-lw
$ git tag
v0.1
v1.3
v1.4
v1.4-lw
v1.5
Se fas un git show da etiqueta, non verás información extra da etiqueta:
$ git show v1.4-lw
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Mon Mar 17 21:52:11 2008 -0700

    changed the version number

Etiquetas “Annotated”

Estas serían as etiquetas máis completas, incluen mensaxes, sinaturas, soen ser adicadas a establecer puntos de versión das aplicacións. Como o seu nome indica son etiquetas con anotacións.

Crear etiqueta “Annotated”

Para facer una etiqueta anotada “Annotated”:
git tag -a <nome_etiqueta> -m [<mensaxe_sobre_a_etiqueta>]
$ git tag -a v1.4 -m "my version 1.4"
$ git tag
v0.1
v1.3
v1.4

Se omitela mensaxe de -m, abrirá o editor que teñas configurado por defecto.

Ver a información dunha etiqueta “Annotated”

Se fas un git show , verías algo así:
$ git show v1.4
tag v1.4
Tagger: Ben Straub <ben@straub.cc>
Date:   Sat May 3 20:19:12 2014 -0700

my version 1.4

commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Mon Mar 17 21:52:11 2008 -0700

    changed the version number

Asinalas etiquetas con GPG

Asinalas etiquetas é recomendable, pra que no caso de que outro colaborador a elimine e cree unha nova co mesmo nome e mensaxe, non te poida suplantar a etiqueta xa que lle faltaría a túa sinatura.

Non tes máis que incluir o “-s”.

Exemplo:
git tag -s <nome_etiqueta> -m [<mensaxe>]

E consultará a GPG, pra ter acceso a túa chave privada pedíndoche introducila súa clave e a continuación firmará o hash da etiqueta.

Configurar o uso da chave GPG

Por defecto git buscará a chave asociada ao teu email, mais se pode configurar.

Obter información da túa chave GPG

Se non tes creado un par de chaves GPG busca como facelos, xa que a súa creación e xestión da para outro artigo.

Primeiro obtense o id da chave do listado das que teñamos configuradas:
gpg --list-keys
Unha vez teñas copiado o ID da chave que queres usar, podes engadila como parámetro global con “–global” ou só ao proxecto sen incluir o “–global”:
git config --global user.singingkey <id_da_chave>

Con iso xa estaría posta como por defecto a chave indicada.

Etiquetar commits antigos

Primeiro tes que sabelo checksum do commit a etiquetar.

Obter listado de commits nunha sóa liña

Para elo podes listalos:
$ git log --pretty=oneline
15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch 'experiment'
a6b4c97498bd301d84096da251c98a07c7723e65 beginning write support
0d52aaab4479697da7686c15f77a3d64d9165190 one more thing
6d52a271eda8725415634dd79daabbc4d9b6008e Merge branch 'experiment'
0b7434d86859cc7b8c3d5e1dddfed66ff742fcbc added a commit function
4682c3261057305bdd616e23b64b0857d832627b added a todo file
166ae0c4d3f420721acbb115cc33848dfcc2121a started write support
9fceb02d0ae598e95dc970b74767f19372d61af8 updated rakefile
964f16d36dfccde844893cac5b347e7b3d44abbc commit the todo
8a5cbc430f1a9c3d00faaeffd07798508422908a updated readme
Agora que xa o tes, non tes máis que poñelo completo ou a parte inicial del (que non coincida con varias ) ao final do comando git tag:
$ git tag -a v1.2 9fceb02

E listo, xa estaría etiquetado ese commit antigo.


Borrar etiquetas

Para borrar etiquetas usamos o parámetro “-d”:
git tag -d <nome_etiqueta>

Traballar con tags e repositorios remotos

Por defecto as etiquetas non son enviadas aos repositorios remotos, tesllo que indicar explícitamente.

Enviar etiquetas a repos remotos

Enviar unha sóa etiqueta:
git push <alias_repo_remoto> <nome_etiqueta>
Enviar tódolas etiquetas, se usa o parámetro –tags:
git push <alias_repo_remoto> --tags

Agora calquera que clone ou faga pull ao teu repositorio, tamén conseguirá as etiquetas.