Git Commit con Commits Convencionales
Resumen
Crea commits de git estandarizados y semánticos utilizando la especificación de Commits Convencionales. Analiza el diff real para determinar el tipo, ámbito y mensaje adecuados.
Formato de Commit Convencional
<tipo>[ámbito opcional]: <descripción>
[cuerpo opcional]
[pie de página opcional(es)]
Tipos de Commit
| Tipo | Propósito |
|---|---|
feat | Nueva característica |
fix | Corrección de errores |
docs | Solo documentación |
style | Formato/estilo (sin lógica) |
refactor | Refactorización (sin feature/fix) |
perf | Mejora de rendimiento |
test | Agregar/actualizar pruebas |
build | Sistema de compilación/dependencias |
ci | Cambios en CI/configuración |
chore | Mantenimiento/varios |
revert | Revertir commit |
Cambios Ruptura
# Signo de exclamación después del tipo/ámbito
feat!: eliminar endpoint obsoleto
# Pie de página BREAKING CHANGE
feat: permitir que la configuración extienda otras configuraciones
BREAKING CHANGE: el comportamiento de la clave `extends` cambió
Flujo de Trabajo
1. Analizar Diff
# Si los archivos están staged, usar diff staged
git diff --staged
# Si no hay nada staged, usar diff del árbol de trabajo
git diff
# También verificar el estado
git status --porcelain
2. Staging de Archivos (si es necesario)
Si no hay nada staged o quieres agrupar cambios de manera diferente:
# Staging de archivos específicos
git add ruta/al/archivo1 ruta/al/archivo2
# Staging por patrón
git add *.test.*
git add src/componentes/*
# Staging interactivo
git add -p
Nunca confirmes secretos (.env, credentials.json, claves privadas).
3. Generar Mensaje de Commit
Los mensajes de commit DEBEN escribirse estrictamente y solo en inglés — tanto el asunto como el cuerpo. Nunca escribas un mensaje de commit en ruso, incluso si el historial del repositorio contiene commits en ruso.
Analiza el diff para determinar:
- Tipo: ¿Qué tipo de cambio es?
- Ámbito: ¿Qué área/módulo está afectado?
- Descripción: Resumen de una línea de lo que cambió (tiempo presente, modo imperativo, <72 caracteres)
4. Ejecutar Commit
# Una línea
git commit -m "<tipo>[ámbito]: <descripción>"
# Varias líneas con cuerpo/pie de página
git commit -m "$(cat <<'EOF'
<tipo>[ámbito]: <descripción>
<cuerpo opcional>
<pie de página opcional>
EOF
)"
Mejores Prácticas
- Escribe mensajes de commit estrictamente en inglés solo (asunto y cuerpo)
- Un cambio lógico por commit
- Tiempo presente: "add" no "added"
- Modo imperativo: "fix bug" no "fixes bug"
- Referenciar issues:
Closes #123,Refs #456 - Mantén la descripción por debajo de 72 caracteres
Protocolo de Seguridad de Git
- NUNCA actualices la configuración de git
- NUNCA ejecutes comandos destructivos (--force, hard reset) sin solicitud explícita
- NUNCA omitas hooks (--no-verify) a menos que el usuario lo pida
- NUNCA hagas force push a main/master
- Si el commit falla debido a hooks, corrige y crea un NUEVO commit (no enmiendes)
- NUNCA crees una nueva rama sin preguntar explícitamente al usuario primero.
Confirma directamente en la rama actual (incluyendo
main) a menos que el usuario haya solicitado una rama. NO crees una rama automáticamente "por seguridad" — el usuario gestiona las ramas. Si crees que una rama es apropiada, PREGUNTA antes de crear una. - NUNCA hagas push a una nueva rama remota ni abras un MR/PR a menos que el usuario lo haya solicitado.