Hacer commit
Aprende a confirmar cambios en tu repositorio Git utilizando el comando git commit, sus opciones y buenas prácticas para crear un historial de proyecto claro y útil.
Cristian Escalante
Última actualización: 19 de abril de 2025
Hacer commit
Una vez que has añadido tus cambios al área de preparación (staging area) con git add
, el siguiente paso es confirmar estos cambios en el repositorio mediante un commit. Un commit es como una instantánea de tu proyecto en un momento específico, que registra quién hizo los cambios, cuándo se hicieron y por qué.
¿Qué es un commit?
Un commit en Git representa:
- Una instantánea completa de tu proyecto en un momento determinado
- Un punto en la historia al que puedes volver si es necesario
- Un registro de quién hizo cambios, cuándo y por qué
- Un conjunto de modificaciones relacionadas lógicamente
Cada commit tiene un identificador único (hash SHA-1) que permite referenciarlo de forma precisa.
El comando git commit
El comando básico para crear un commit es:
git commit
Sin embargo, este comando abrirá un editor de texto para que escribas el mensaje del commit. Para usuarios nuevos o para commits sencillos, es común usar la opción -m
para proporcionar el mensaje directamente:
git commit -m "Mensaje descriptivo del commit"
Anatomía de un buen mensaje de commit
Un buen mensaje de commit debe:
- Ser conciso pero informativo
- Comenzar con un verbo en imperativo (por ejemplo: "Añade", "Corrige", "Actualiza")
- Explicar el qué y el por qué, no el cómo
- Limitarse a 50-72 caracteres en la primera línea
- Incluir detalles adicionales en líneas subsiguientes si es necesario
Ejemplo de un buen mensaje de commit:
git commit -m "Corrige error de validación en formulario de registro
- Soluciona el problema con la validación de correo electrónico
- Mejora los mensajes de error mostrados al usuario
- Añade pruebas para prevenir regresiones"
Opciones comunes de git commit
Commit con mensaje en una sola línea
git commit -m "Mensaje del commit"
Commit saltándose el staging area
Si quieres hacer commit de todos los archivos modificados que Git ya está rastreando, sin tener que añadirlos primero al staging area:
git commit -a -m "Mensaje del commit"
# o
git commit -am "Mensaje del commit"
Esta opción es útil para cambios rápidos, pero ten cuidado porque incluirá todos los archivos modificados que Git ya esté rastreando.
Modificar el último commit
Si acabas de hacer un commit y te das cuenta de que olvidaste incluir algo o quieres cambiar el mensaje:
# Añade los cambios olvidados al staging area
git add archivo-olvidado.txt
# Modifica el último commit
git commit --amend
Si solo quieres cambiar el mensaje del último commit:
git commit --amend -m "Nuevo mensaje para el último commit"
Importante: No uses --amend
en commits que ya hayas compartido con otros (pushed), ya que reescribe la historia.
Commit vacío
En ocasiones puede ser útil crear un commit sin cambios, por ejemplo para activar CI/CD:
git commit --allow-empty -m "Commit vacío para activar CI"
Firmar commits
Para añadir una firma GPG a tu commit (útil para verificar la autenticidad):
git commit -S -m "Commit firmado con GPG"
Verificar commits
Ver el último commit
git show
Ver un commit específico
git show <hash-del-commit>
Ver el historial de commits
git log
Para un formato más compacto:
git log --oneline
Buenas prácticas para commits
1. Haz commits atómicos
Cada commit debe representar un cambio lógico único. Esto facilita:
- Entender qué hace cada commit
- Revertir cambios específicos si es necesario
- Revisar el código de manera más efectiva
2. Escribe mensajes de commit significativos
Un buen mensaje de commit debe responder a estas preguntas:
- ¿Qué cambió?
- ¿Por qué se hizo el cambio?
Estructura recomendada:
<tipo>: <descripción corta>
<descripción detallada opcional>
<referencias a issues/tickets si aplica>
Ejemplos de tipos comunes:
feat
: Nueva característicafix
: Corrección de errordocs
: Cambios en documentaciónstyle
: Cambios de formato (espacios, indentación)refactor
: Refactorización de códigotest
: Añadir o modificar pruebaschore
: Tareas de mantenimiento
3. Haz commits con frecuencia
Haz commits pequeños y frecuentes en lugar de grandes commits que contengan muchos cambios no relacionados. Esto:
- Facilita la revisión de código
- Reduce conflictos de merge
- Permite un seguimiento más granular del desarrollo
4. Nunca hagas commit de código roto
Asegúrate de que tu código compila y pasa las pruebas antes de hacer commit. Si necesitas guardar trabajo en progreso, considera usar git stash
.
5. No hagas commit de archivos generados o temporales
Usa .gitignore
para excluir:
- Archivos de compilación
- Dependencias (node_modules, vendor, etc.)
- Archivos de configuración local
- Archivos temporales o de caché
Flujos de trabajo comunes con commits
Flujo de trabajo básico
# Editar archivos
echo "Nueva función" > archivo.js
# Ver qué ha cambiado
git status
# Añadir cambios al staging
git add archivo.js
# Crear un commit
git commit -m "Implementa nueva función de búsqueda"
Dividir cambios en múltiples commits
# Has modificado varios archivos
git add archivo1.js
git commit -m "Refactoriza clase de autenticación"
git add archivo2.js archivo3.js
git commit -m "Implementa validación de formularios"
Corregir un commit reciente
# Olvidaste añadir un archivo
git add archivo-olvidado.js
git commit --amend --no-edit # Mantiene el mismo mensaje
# O si quieres cambiar el mensaje
git commit --amend -m "Nuevo mensaje mejorado"
Errores comunes y soluciones
Mensaje de commit incorrecto
Problema: Escribiste un mensaje de commit con errores o poco claro.
Solución: Si el commit aún no ha sido compartido (pushed), usa git commit --amend
para corregirlo.
Commit en la rama equivocada
Problema: Hiciste un commit en la rama equivocada.
Solución:
- Crea una nueva rama donde debería estar el commit:
git branch rama-correcta
- Vuelve a la rama original:
git checkout rama-original
- Haz un reset para deshacer el commit:
git reset HEAD~1 --hard
- Cambia a la rama correcta:
git checkout rama-correcta
Commit con archivos no deseados
Problema: Incluiste archivos que no deberían estar en el repositorio.
Solución:
- Si no has compartido el commit:
git rm --cached archivo-no-deseado
- Añade el archivo a
.gitignore
- Haz un nuevo commit o usa
--amend
Conclusión
El comando git commit
es fundamental en el flujo de trabajo de Git, ya que permite registrar cambios en el historial del repositorio. Crear buenos commits con mensajes claros y descriptivos es esencial para mantener un historial de proyecto útil y comprensible.
Dominar las diferentes opciones de git commit
y seguir buenas prácticas te ayudará a mantener un repositorio organizado y facilitará la colaboración con otros desarrolladores. Recuerda que cada commit cuenta una parte de la historia de tu proyecto, así que asegúrate de que sea una historia clara y coherente.