</>inexpresivo

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 module
plaintext

Tipos de commit

TipoCuándo usarlo
featNueva funcionalidad
fixCorrección de error
docsSolo cambios en documentación
styleFormato, punto y coma, espacios — sin cambio de lógica
refactorRestructura de código sin agregar features ni corregir bugs
perfCambio que mejora el rendimiento
testAgrega o corrige pruebas
buildCambios en el sistema de build (gulp, npm, webpack…)
ciConfiguración de CI/CD (Travis, GitHub Actions…)
choreTareas de mantenimiento que no modifican src ni tests
revertRevierte 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 refresh
plaintext

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

Referencias