Tema 7 · Commits

Confirmar Cambios: git commit y Conventional Commits

Aprende a crear confirmaciones (commits) atómicas, la anatomía de un commit y el estándar de la industria Conventional Commits para escribir historiales limpios y legibles.

¿Qué es exactamente un Commit?

Un commit es una instantánea (snapshot) permanente e inmutable de todos los archivos de tu proyecto en un momento dado del tiempo. Cada commit recibe una firma criptográfica única de 40 caracteres hexadecimales (hash SHA-1, por ejemplo: c26cca18f2...).

Piensa en un commit como un punto de guardado en un videojuego: si en el futuro introduces un bug grave o rompes la aplicación, siempre puedes volver con exactitud quirúrgica a este punto exacto donde todo funcionaba.

La Regla de Oro: Commits Atómicos

Un commit atómico es aquel que encapsula una sola responsabilidad o cambio lógico completo. Nunca acumules el trabajo de 3 días con un mensaje genérico como "avances" o "arreglos varios".

❌ Commit Malo (Antipatrón) ✅ Commit Bueno (Atómico)
git commit -m "cambios del viernes" (Toca 18 archivos: base de datos, footer, login y tipografía). Si el login falla, no puedes revertirlo sin perder el footer. git commit -m "fix(auth): corregir expiración de sesión en login"
git commit -m "style(footer): actualizar enlaces de redes sociales"
Cada cambio puede revertirse de forma independiente.

El Estándar de la Industria: Conventional Commits

En las mejores empresas tecnológicas del mundo (Google, Meta, Amazon) y proyectos de código abierto se utiliza la especificación Conventional Commits. La estructura es:

<tipo>(<alcance opcional>): <descripción corta en presente>

[cuerpo explicativo opcional]
Prefijo ¿Cuándo se usa? Ejemplo Real
feat Una nueva funcionalidad o característica para el usuario o sistema. feat(lms): agregar editor Atom One Dark para entrega de tareas
fix Corrección de un error o bug en producción o desarrollo. fix(sandbox): corregir falso positivo en llamadas a pdo exec
docs Modificaciones exclusivas en documentación (README, manuales, guías). docs(legal): actualizar guía tributaria para factura voluntaria
style Cambios cosméticos de código que no alteran la lógica (espacios, formateo). style(css): ajustar margen de botones en pantalla de checkout
refactor Reestructuración de código que ni añade una feature ni arregla un bug. refactor(db): simplificar método de conexión de workspaces sqlite
test Añadir o corregir pruebas unitarias o de integración. test(auth): agregar pruebas de expiración de token de sesión

⚡ Ejemplos de Creación de Commits Profesionales

Comandos para realizar commits con mensajes cortos y commits detallados con título y cuerpo:

commits-profesionales.sh
Solo lectura
# 1. Commit de una sola línea con mensaje descriptivo:
git commit -m "feat(checkout): agregar soporte para pagos en USD con PayPal"

# 2. Commit con título y cuerpo detallado (usando varios -m):
git commit -m "fix(mail): corregir envío de credenciales tras matrícula" \
           -m "Se reemplaza el puerto SMTP por la API REST v3 de Brevo para evitar bloqueos por cortafuegos en el servidor de producción."

# 3. Modificar el mensaje del ÚLTIMO commit si te equivocaste de redacción (solo local):
git commit --amend -m "fix(mail): corregir envío de correo transaccional de bienvenida"
🦉
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.

🚀 ¿Quieres dominar Manual Completo de Git & GitHub Profesional y crear proyectos reales?

Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.

🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.