En Git, cada commit s'identifica mitjançant un hash, un identificador alfanumèric que es genera
quan es crea el commit. No obstant això, de vegades és útil identificar punts concrets de la història
del repositori amb un nom, que és més fàcil de recordar i més significatiu que un hash.
Per aquesta raó, Git permet crear etiquetes (tags): noms que marquen punts concrets
en la història del repositori. En projectes de desenvolupament, les etiquetes s'utilitzen normalment
per a identificar les noves publicacions (releases), com ara v1.0 o v2.0,
però es poden utilitzar per a qualsevol propòsit.
Figura 1. Etiqueta en un commit.
Hi ha dos tipus d'etiquetes:
Etiqueta lleugera: referència amb nom que apunta a un commit.
Etiqueta anotada: objecte de Git que, a més, conté qui ha creat l'etiqueta,
la data de creació i un missatge.
El repositori dels exemples es prepara amb les ordres següents:
setup_tags.sh
#!/bin/bash# Elimina el repositori si existeixif[-d~/git_etiquetes];thenrm-rf~/git_etiquetes
fimkdir-p~/git_etiquetes
cd~/git_etiquetes
gitinit
gitbranch-mmain
echo"# Etiquetes">README.md
gitaddREADME.md
gitcommit-m"Commit inicial"echo"Repositori d'exemple amb etiquetes">>README.md
gitcommit-a-m"README: Descripció"echo"">>README.md
echo"## Tipus de etiquetes">>README.md
gitcommit-a-m"README: Apartat tipus de etiquetes"echo"Existeixen dos tipus de etiquetes: anotades i lleugeres">>README.md
gitcommit-a-m"README: Descripció tipus de etiquetes"gitlga
jpuigcerver@fp:~$mkdir-p~/git_etiquetes
jpuigcerver@fp:~$cd~/git_etiquetes
jpuigcerver@fp:~/git_etiquetes$gitinit
Initialized empty Git repository in ~/git_etiquetes/.git/jpuigcerver@fp:~/git_etiquetes(main)$gitbranch-mmain
jpuigcerver@fp:~/git_etiquetes(main)$echo"# Etiquetes">README.md
jpuigcerver@fp:~/git_etiquetes(main)$gitaddREADME.md
jpuigcerver@fp:~/git_etiquetes(main)$gitcommit-m"Commit inicial"[main (root-commit) 2dc09af] Commit inicial 1 file changed, 1 insertion(+) create mode 100644 README.mdjpuigcerver@fp:~/git_etiquetes(main)$echo"Repositori d'exemple amb etiquetes">>README.md
jpuigcerver@fp:~/git_etiquetes(main)$gitcommit-a-m"README: Descripció"[main da2c930] README: Descripció 1 file changed, 1 insertion(+)jpuigcerver@fp:~/git_etiquetes(main)$echo"">>README.md
jpuigcerver@fp:~/git_etiquetes(main)$echo"## Tipus de etiquetes">>README.md
jpuigcerver@fp:~/git_etiquetes(main)$gitcommit-a-m"README: Apartat tipus de etiquetes"[main 7909b46] README: Apartat tipus de etiquetes 1 file changed, 2 insertions(+)jpuigcerver@fp:~/git_etiquetes(main)$echo"Existeixen dos tipus de etiquetes: anotades i lleugeres">>README.md
jpuigcerver@fp:~/git_etiquetes(main)$gitcommit-a-m"README: Descripció tipus de etiquetes"[main e29a607] README: Descripció tipus de etiquetes 1 file changed, 1 insertion(+)jpuigcerver@fp:~/git_etiquetes(main)$gitlga
*e29a607-(0 seconds ago)README: Descripció tipus de etiquetes-Joan Puigcerver(HEAD -> main)*7909b46-(0 seconds ago)README: Apartat tipus de etiquetes-Joan Puigcerver*da2c930-(0 seconds ago)README: Descripció-Joan Puigcerver*2dc09af-(0 seconds ago)Commit inicial-Joan Puigcerver
Crea el nou repositori en una carpeta independent per evitar problemes amb els exemples i exercicis anteriors.
En projectes de desenvolupament, és habitual utilitzar un sistema de numeració
per a identificar les diferents versions del programari.
Una bona pràctica és utilitzar la numeració semàntica, que permet saber de manera clara
quin tipus de canvis s'han fet en cada versió. El sistema de numeració semàntica
SemVer especifica el format següent:
MAJOR.MINOR.PATCH
MAJOR: s'incrementa quan es fan canvis incompatibles amb les versions anteriors.
MINOR: s'incrementa quan s'afigen funcionalitats compatibles amb les versions anteriors.
PATCH: s'incrementa quan es corregeixen errors de manera compatible amb les versions anteriors.
Exemple: Numeració de versions
La versió 1.2.0 indica:
1: versió major.
2: versió menor.
0: versió de correcció d'errors.
Si en aquest punt s'afigen funcionalitats compatibles amb les versions anteriors,
la versió següent és la 1.3.0. Després, si es corregeixen errors de manera compatible,
la versió següent és la 1.3.1. En canvi, si es fan canvis incompatibles amb les versions anteriors,
la versió següent és la 2.0.0.
L'ordre git show permet consultar la informació d'una etiqueta:
gitshow<nom_etiqueta>
<nom_etiqueta>: nom de l'etiqueta que es vol consultar.
La informació que es mostra depén del tipus d'etiqueta. En les etiquetes lleugeres, es mostra
la informació del commit associat. En les etiquetes anotades, a més, es mostra la persona
que ha creat l'etiqueta, la data de creació i el missatge associat.
Exemple: Consultar la informació d'una etiqueta anotada
Es mostra la informació de l'etiqueta anotada v1.0.0.
jpuigcerver@fp:~/git_etiquetes(main)$gitshowv1.0.0
tag v1.0.0Tagger: Joan Puigcerver <j.puigcerveribanez@edu.gva.es>Date: Sat Oct 19 20:51:43 2024 +0200Primera versió: v1.0.0commit 2dc09af5ba36816057c43a04f3d7f75cf3302bd0Author: Joan Puigcerver <j.puigcerveribanez@edu.gva.es>Date: Sat Oct 19 20:51:43 2024 +0200 Commit inicialdiff --git a/README.md b/README.mdnew file mode 100644
index 0000000..81387f9--- /dev/null+++ b/README.md@@ -0,0 +1 @@+# Etiquetes
S'observa la persona que ha creat l'etiqueta, la data de creació, el missatge i el commit associat.
Exemple: Consultar la informació d'una etiqueta lleugera
Es mostra la informació de l'etiqueta lleugera v1.1.0.
jpuigcerver@fp:~/git_etiquetes(main)$gitshowv1.1.0
commit da2c93043a5ee159146b38a3f0d66ec6862312a6Author: Joan Puigcerver <j.puigcerveribanez@edu.gva.es>Date: Sat Oct 19 20:51:43 2024 +0200 README: Descripciódiff --git a/README.md b/README.mdindex 81387f9..199416c 100644--- a/README.md+++ b/README.md@@ -1 +1,2 @@# Etiquetes
+Repositori d'exemple amb etiquetes
S'observa que, en aquest cas, només es mostra el commit associat.