Git Conventions
Tipos de commit
Section titled “Tipos de commit”| Emoji | Tipo | Título | Descripción |
|---|---|---|---|
| ✨ | feat |
Features | Marca un commit que completa una funcionalidad. Debe ser completo y sin errores |
| 🐛 | fix |
Bug Fixes | Arreglo de un error |
| 📚 | docs |
Documentation | Cambios solo en documentación |
| 🧪 | test |
Tests | Añadir o corregir tests |
| 📦 | refactor |
Code Refactoring | Cambio que ni arregla bug ni añade funcionalidad |
| 🚀 | perf |
Performance Improvements | Cambio que mejora el rendimiento |
| ⚙️ | wip |
WIP | Funcionalidad o fix incompleto. Ver commit anterior |
| ♻️ | chore |
Chores | Tareas de mantenimiento o miscelánea |
| 🗑 | revert |
Reverts | Revertir un commit anterior |
| 🤌🏽 | initial |
Commit Inicial | Primer commit del proyecto |
Estructura del mensaje
Section titled “Estructura del mensaje”<emoji> <tipo>(<ámbito>): <asunto>
<cuerpo opcional>
<footer opcional>Ejemplos
Section titled “Ejemplos”# Commit de una nueva funcionalidad✨ feat(auth): añadir login con Google OAuth
# Arreglo de bug🐛 fix(api): corregir error 500 en endpoint /users
# Documentación📚 docs(readme): actualizar instrucciones de instalación
# Refactorización📦 refactor(utils): simplificar función de validación
# WIP (trabajo en progreso)⚙️ wip(frontend): avanzar en componente de dashboard
# Chore (tarea de mantenimiento)♻️ chore(deps): actualizar dependencias a última versión
# Revertir commit🗑 revert: revertir commit abc123 por error en producciónÁmbitos comunes
Section titled “Ámbitos comunes”auth- Autenticaciónapi- API/REST endpointsui- Interfaz de usuariodb- Base de datosconfig- Configuracióndeps- Dependenciasci- Integración continuadocker- Dockertest- Testsdocs- Documentaciónutils- Utilidadessecurity- Seguridad
Reglas importantes
Section titled “Reglas importantes”-
Asunto:
- Máximo 50 caracteres
- En imperativo (“añadir” no “añadido”)
- Sin punto al final
-
Cuerpo:
- Explicar el qué y el por qué, no el cómo
- Máximo 72 caracteres por línea
-
Footer:
- Referencias a issues:
Closes #123 - Breaking changes:
BREAKING CHANGE: descripción
- Referencias a issues:
Configurar template de commit
Section titled “Configurar template de commit”Crear archivo ~/.gitcommit_template:
<tipo>(<ámbito>): <asunto>
<cuerpo>
<footer>Configurar:
git config --global commit.template ~/.gitcommit_templateAliases útiles
Section titled “Aliases útiles”# Alias para commit con emojigit config --global alias.c '!f() { git commit -m "✨ $1"; }; f'git config --global alias.f '!f() { git commit -m "🐛 $1"; }; f'git config --global alias.d '!f() { git commit -m "📚 $1"; }; f'git config --global alias.r '!f() { git commit -m "📦 $1"; }; f'git config --global alias.p '!f() { git commit -m "🚀 $1"; }; f'
# Uso: git c "mensaje del commit"Buenas prácticas
Section titled “Buenas prácticas”- ✅ Commits atómicos (una cosa por commit)
- ✅ Mensajes descriptivos y claros
- ✅ Commits frecuentes
- ✅ Revisar cambios antes de commit
- ❌ No mezclar múltiples cambios en un commit
- ❌ No hacer commits con mensajes vagos como “fix” o “update”
Ejemplo de flujo
Section titled “Ejemplo de flujo”# Ver estadogit status
# Ver cambiosgit diff
# Añadir archivosgit add archivo.txt
# Commit con emoji y tipogit commit -m "✨ feat(auth): añadir login con Google OAuth"
# Ver historialgit log --oneline
# Enviar cambiosgit pushUsa
git commit -m "✨ feat: mensaje" -m "Cuerpo del commit con más detalles"para commits con cuerpo. Mantén la consistencia en todo el equipo.