Conventional Commits: El Lenguaje Universal de tu Repositorio
Índice de contenidos
🗣️ El Problema de la Comunicación en Git
Revisemos el historial de un proyecto promedio:
commit a1b2c3: fix bug
commit d4e5f6: updates
commit 789012: wtf is going on
commit 345678: final fix for real
¿Qué problemas tiene esto?
- Imposible de automatizar: Una máquina no sabe si “updates” es un breaking change o un cambio de documentación.
- Difícil de leer: Un humano no puede escanear esto para saber qué pasó en la última semana.
- Sin contexto: “fix bug” no dice qué bug, ni dónde, ni por qué.
Conventional Commits es una especificación ligera sobre cómo escribir mensajes de commit para resolver esto.
📏 La Estructura Anatómica
Un commit convencional tiene esta forma rígida:
<tipo>(<ámbito opcional>): <descripción>
[cuerpo opcional]
[pie opcional]
1. El Tipo (Type)
Es la parte más importante para la automatización.
feat: Una nueva característica (correlaciona conMINORen SemVer).fix: Solución a un bug (correlaciona conPATCHen SemVer).docs: Cambios solo en documentación.style: Formato, puntos y comas faltantes (no afecta lógica).refactor: Cambio de código que no arregla bugs ni añade features.test: Añadir o corregir tests.chore: Tareas de mantenimiento (actualizar dependencias, scripts de build).
2. El Ámbito (Scope)
El contexto del cambio (ej. auth, profile, database).
feat(auth): implement google loginfix(ui): correct padding in settings screen
3. El Breaking Change (¡Peligro!)
Si el commit introduce un cambio que rompe compatibilidad, se añade un ! después del tipo o un pie de página BREAKING CHANGE:.
feat!: remove legacy v1 api-> Esto dispara un MAJOR version bump.
🤖 Beneficios de la Automatización (El “Por Qué”)
Adoptar Conventional Commits habilita superpoderes en tu pipeline:
- Versionado Semántico Automático: Herramientas como
semantic-releaseleen tus commits y deciden: “Hay 3 fixes y 1 feat, así que subo de v1.0.0 a v1.1.0”. (Ver artículo de versionado). - Changelogs Generados:
## v1.1.0 ### Features - **auth**: implement google login (a1b2c3) ### Bug Fixes - **ui**: correct padding in settings screen (d4e5f6) - Navegación Histórica: Puedes filtrar fácilmente:
git log --grep="^feat"para ver solo nuevas características.
🛠️ Herramientas para Forzar el Estándar
No confíes en la memoria humana. Configura herramientas para exigir el estándar.
Husky + Commitlint
En tu proyecto Node/Android (vía npm):
# Instalar
npm install --save-dev @commitlint/{config-conventional,cli} husky
# Configurar hook
npx husky add .husky/commit-msg 'npx --no -- commitlint --edit "$1"'
Ahora, si alguien intenta git commit -m "fixed stuff", el commit fallará:
❌ input: fixed stuff ✖ subject may not be empty [subject-empty] ✖ type may not be empty [type-empty]
🧠 Mejores Prácticas Culturales
- Commits Atómicos: Conventional Commits te fuerza a pensar en unidades de trabajo. No puedes hacer un commit
feat(auth): login and fix database bugporque mezcla tipos. Haz dos commits. - Imperativo Presente: Usa “add” en lugar de “added”. Piensa que estás completando la frase: “If applied, this commit will… add google login”.
- Cuerpo Explicativo: Usa el cuerpo del commit para explicar el por qué, no el qué.
fix(auth): handle token expiration gracefully Previously, the app crashed when the token expired because we were force-unwrapping the result. Now we catch the exception and redirect to login. Closes #123
🎯 Conclusión
Conventional Commits es la diferencia entre un historial de git que es un “diario personal desordenado” y uno que es un “registro logístico preciso”. Es el primer paso indispensable para cualquier equipo que aspire a DevOps maduro y automatización real.
Artículos relacionados
Automatización de Versionado con GitHub Actions: La Revolución del Desarrollador Android
Descubre cómo automatizar completamente el versionado de tu app Android con GitHub Actions: desde commits hasta Google Play Store, sin intervención manual.
Semantic Versioning en CD/CI: La Ciencia Exacta del Despliegue Continuo
Domina el versionado semántico en pipelines de CI/CD. Aprende a calcular versiones automáticamente y garantizar la trazabilidad total en tus despliegues Android.
Code Review con IA: Tu Nuevo Compañero de Equipo Incansable
Aprende a configurar agentes de IA para realizar revisiones de código automáticas, detectar bugs sutiles y hacer cumplir estándares antes de que un humano intervenga.