Convenciones para commits en Git
Guía de Conventional Commits — estructura estándar para mensajes de commit que facilitan changelogs automáticos y colaboración en equipo.
2 min read
gitconvencionesbuenas-practicas
Al trabajar con Git surge siempre la misma duda: ¿qué escribir en el mensaje del commit? La respuesta de la comunidad es Conventional Commits, un estándar que define una estructura clara y facilita la generación automática de changelogs.
Estructura
<tipo>[ámbito opcional]: <descripción>
[cuerpo opcional]
[nota de pie opcional]plaintext
Ejemplos reales:
feat(auth): add OAuth2 login with Google
fix(api): handle null response from payment provider
docs: update deployment guide for Kubernetes
refactor(db): extract connection pool to separate moduleplaintext
Tipos de commit
| Tipo | Cuándo usarlo |
|---|---|
feat | Nueva funcionalidad |
fix | Corrección de error |
docs | Solo cambios en documentación |
style | Formato, punto y coma, espacios — sin cambio de lógica |
refactor | Restructura de código sin agregar features ni corregir bugs |
perf | Cambio que mejora el rendimiento |
test | Agrega o corrige pruebas |
build | Cambios en el sistema de build (gulp, npm, webpack…) |
ci | Configuración de CI/CD (Travis, GitHub Actions…) |
chore | Tareas de mantenimiento que no modifican src ni tests |
revert | Revierte un commit anterior |
Breaking changes
Cuando un cambio rompe compatibilidad hacia atrás, se indica con ! después del tipo o con BREAKING CHANGE: en el pie del mensaje:
feat!: remove support for Node 14
BREAKING CHANGE: Node 14 is no longer supported. Upgrade to Node 18+.plaintext
Esto es relevante para semver: un breaking change debe incrementar el major version.
Ámbito (scope)
El ámbito es opcional y aclara qué parte del proyecto se modificó:
fix(parser): handle empty input string
feat(api): add rate limiting middleware
test(auth): add integration tests for JWT refreshplaintext
Herramientas útiles
- Commitizen — CLI interactivo que guía la escritura del commit
- commitlint — valida que los commits sigan la convención (se integra como git hook)
- conventional-changelog — genera changelogs automáticos a partir del historial