Tema 18: Etiquetar versiones con tags
Una etiqueta, o tag, pone un nombre a un commit concreto. Es útil para señalar versiones como v1.0. A diferencia de una rama, una etiqueta no avanza automáticamente cuando creas más commits. Marca un punto elegido del historial.
git tag v1.0 crea una etiqueta ligera en el commit actual. git tag -a v1.0 -m "Primera versión" crea una anotada, que además conserva metadatos y un mensaje. El nombre no debe estar ocupado por otra etiqueta. En estas prácticas no reemplazamos etiquetas ya publicadas.
git tag lista las etiquetas. git tag -n permite consultar también el mensaje de las anotadas. Puedes utilizar un nombre de etiqueta donde antes indicabas una revisión, por ejemplo en git diff v1.0 HEAD, y el historial decorado ayuda a localizarla.
Crear una etiqueta es una operación local. git push origin v1.0 solicita publicar esa etiqueta concreta. Un push normal de la rama no implica enviar todas las etiquetas. git push origin --tags intenta publicar todas las etiquetas locales; conviene revisarlas antes y preferir el envío explícito cuando solo quieres una.
Conserva el significado de una versión publicada. Si el contenido evoluciona, crea otro commit y otra versión en lugar de cambiar silenciosamente el destino de la etiqueta anterior. Los alias del tema 17 siguen siendo opcionales: las instrucciones de publicación usan aquí los comandos completos.
Comandos para probar #
1git log --oneline 2git tag -a v1.0 -m "Primera versión" 3git tag -n 4git push origin v1.0
Error que conviene evitar #
Creer que una etiqueta sigue el avance de main o que publicar main envía necesariamente todas las etiquetas.
Laboratorio local #
Prueba los comandos y observa qué cambia. Puedes reiniciar sin guardar una entrega. Los retos evaluables y el cuestionario están en las actividades de este tema.
Git / práctica local
Marca una entrega
Aplicar edición cambia el archivo; git add lo prepara.
Historial de commits
Las líneas conectan los commits con sus padres. Los commits que ya no tienen una referencia también permanecen visibles en este laboratorio.
- 0000001: Commit inicial; HEAD → main · origin/main
Comparar trabajo, índice y HEAD
Trabajo
# Mi proyecto
Índice (staging)
# Mi proyecto
HEAD
# Mi proyecto
TERMINAL
Sesión local preparada. Escribe help para consultar los comandos de este tema.
Comandos disponibles y límites
git --version · git config --global <clave> [valor] git init · git status git add <archivo | .> · git commit -m "mensaje" · git log git log --oneline · git switch <rama> (antes: checkout) git restore [--staged] <archivo> · git commit --amend [-m "mensaje" | --no-edit] git switch --detach <commit> · HEAD · HEAD~1 git diff [--staged | <commit> <commit>] git remote [-v] · git remote add <nombre> <URL> · git remote get-url <nombre> · git remote set-url <nombre> <URL> git clone <URL> git push [-u] <remoto> <rama> ssh-keygen -t ed25519 · ssh -T git@github.com (ficticios) git branch [nombre] · git branch -m <nombre> · git branch -d <rama> · git switch -c <rama> git merge [--ff-only] <rama> git merge --no-ff <rama> · git log --graph --all --decorate git merge --abort · editar conflicto, git add y git commit -m "mensaje" git config --global alias.st status · git st git tag [nombre] · git tag -a <nombre> -m "mensaje" · git tag -n · git push origin <tag> help · clear
Sesión en memoria: recargar descarta la práctica. Doscientas acciones como máximo. Dos archivos editables de hasta 250 líneas. Diez ramas como máximo. El modelo no ejecuta comandos reales ni realiza conexiones externas. diff muestra contenido anterior y posterior por archivo.
Resumen
- No avanza automáticamente con los nuevos commits.
- Se combina con -m para escribir su mensaje.
- El envío explícito evita publicar otras etiquetas por accidente.
- Creer que una etiqueta sigue el avance de main o que publicar main envía necesariamente todas las etiquetas.