Tema 25: Mensajes con Conventional Commits
Un buen mensaje explica la intención del cambio. Conventional Commits propone una estructura común: tipo, ámbito opcional, dos puntos y una descripción. No es un comando nuevo de Git: se utiliza con el commit -m que ya conoces.
feat: añade búsqueda describe una funcionalidad. fix: corrige el saludo describe una corrección. Un ámbito puede precisar qué parte cambia: fix(docs): corrige saludo. Otros tipos habituales en equipos son docs para documentación y refactor para reorganizar código sin cambiar su comportamiento. El equipo decide cuáles acepta.
Un cambio incompatible rompe una expectativa que otros usuarios utilizaban. Se puede señalar con ! antes de los dos puntos, como feat(api)!: cambia el formato de respuesta, o con un pie BREAKING CHANGE: que explique la ruptura. El signo no sustituye a explicar qué debe adaptar quien recibe el cambio.
Antes de confirmar, revisa diff --staged. El mensaje debe describir la selección que realmente entra en ese commit. Un título que promete una corrección no convierte un cambio de comportamiento distinto en una corrección. Evita mezclar varias tareas sin relación en el mismo guardado.
La convención puede ayudar a leer el historial y a herramientas de publicación, pero Git no la impone por defecto. En esta práctica el reto pide un mensaje exacto para comprobar la estructura y su ámbito. En un proyecto real se acuerdan las reglas y, si procede, las comprobaciones automáticas.
Comandos para probar #
1git diff 2git add README.md 3git diff --staged 4git commit -m "fix(docs): corrige saludo" 5git log --oneline
Error que conviene evitar #
Escribir un mensaje convencional que no describe los archivos preparados o pensar que el formato activa una validación automática en cualquier repositorio.
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
Describe la intención
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
Comparar trabajo, índice y HEAD
Trabajo
Hola Git corregido
Í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> git reset --soft|--mixed|--hard <commit> · git reflog git stash push [-u] [-m "mensaje"] · list · show · apply · pop · drop git rebase <rama> · git rebase --continue · git rebase --abort git grep [-n] <texto> [revisión] 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. Diez entradas de stash como máximo. El modelo no ejecuta comandos reales ni realiza conexiones externas. diff muestra contenido anterior y posterior por archivo. grep busca texto literal.
Resumen
- El tipo describe la intención del cambio.
- Es una convención del mensaje, no otra clase de objeto Git.
- Es opcional y precisa la parte afectada.
- Escribir un mensaje convencional que no describe los archivos preparados o pensar que el formato activa una validación automática en cualquier repositorio.