Curso
Git se ha convertido en el sistema de referencia para gestionar los cambios en las bases de código. Uno de los comandos más importantes de Git es git commit
, que captura una instantánea del historial de tu proyecto en un momento determinado.
Comprender cómo utilizar git commit
de forma eficiente es crucial para mantener un historial de proyectos limpio y organizado. Escribir mensajes de confirmación significativos y seguir las mejores prácticas garantiza que tu repositorio siga siendo manejable, tanto si trabajas en solitario como si formas parte de un equipo más grande.
Este tutorial pretende enseñarte a utilizar el comando commit de git, a escribir mensajes de commit claros e informativos, y a adoptar las mejores prácticas para un control de versiones satisfactorio.
¡Vamos a ello!
¿Qué es un Git Commit?
Uno de los bloques fundamentales del control de versiones en Git is el comando git commit
. Un git commit
captura una instantánea del estado actual de tus archivos escaneados y los guarda en el historial del repositorio. Crea un identificador único para los cambios y registra los metadatos esenciales, como el autor, la marca de tiempo y un mensaje de confirmación descriptivo, lo que garantiza que las modificaciones puedan seguirse, comprenderse y revertirse si es necesario.
Los desarrolladores también pueden añadir un mensaje de confirmación, que describa brevemente los cambios realizados y proporcione el contexto y el razonamiento que hay detrás de la actualización.
Esencialmente, los commits son importantes porque permiten a los desarrolladores
- Sigue los cambios: Los commits proporcionan un registro claro de las modificaciones realizadas en el código base a lo largo del tiempo.
- Colabora: En un entorno de equipo, los commits ayudan a los desarrolladores a entender qué cambios se han hecho, quién los ha hecho y por qué.
- Vuelve a los estados anteriores: Si surge un error o un problema, los commits permiten a los desarrolladores hacer retroceder el proyecto a un punto estable anterior a la introducción del cambio problemático.
- Mantén un historial limpio: Los commits estructurados y frecuentes con mensajes significativos facilitan la gestión de grandes proyectos y el diagnóstico de problemas.
> Si estás empezando con Git y GitHub, tl tema Fundamentos de G itHub ofrece una ruta curada para ayudarte a dominar lo esencial del control de versiones y los flujos de trabajo de colaboración.
Sintaxis básica de Git Commit
Para utilizar Git con eficacia, debes comprender la sintaxis básica y la estructura de las confirmaciones. Esta sección recorre los componentes básicos del proceso de confirmación para garantizar que los cambios se capturan y documentan correctamente.
Mando básico
La forma más sencilla de crear una confirmación es utilizar el siguiente comando:
git commit -m “Your commit message”
Aquí, la bandera -m
te permite incluir un breve mensaje de confirmación que describa los cambios. Aquí es donde proporcionas contexto para futuras referencias y colaboración, por ejemplo:
git commit -m “Fix bug in user authentication”
Este comando escenifica la confirmación y la asocia al mensaje proporcionado.
Qué ocurre durante una confirmación
Esto es lo que ocurre bajo el capó cuando haces una confirmación:
- La puesta en escena cambia: Antes de confirmar, debes preparar los cambios utilizando el comando
git add
. Esto prepara los archivos modificados para incluirlos en la siguiente confirmación. Puedes escenificar archivos individuales o todos los archivos modificados.
git add file.txt #Stages one file
git add . #Stages all files in the current directory
- Hacer el compromiso: Una vez organizados tus cambios, el comando git commit toma la instantánea de los archivos organizados y los almacena en el repositorio. Ten en cuenta que la instantánea es el estado actual de los archivos en ese momento.
- Actualización del repositorio: Después de confirmar, Git actualiza el historial del proyecto para guardar la confirmación junto a todas las anteriores. Cada confirmación actúa como un punto de control que puede revertirse si es necesario.
Escribir mensajes de confirmación Git eficaces
Escribir mensajes de confirmación claros y significativos es esencial para mantener un historial del proyecto limpio y comprensible. Un mensaje de confirmación bien escrito también sirve como herramienta de comunicación, ayudando a los desarrolladores y colaboradores a comprender rápidamente el propósito y el contexto de cada cambio.
Importancia de los buenos mensajes de compromiso
Los buenos mensajes de compromiso actúan como un mapa. Proporcionan información sobre el razonamiento que hay detrás de cada cambio, lo que resulta muy valioso a la hora de revisar el código más adelante o solucionar problemas. Los mensajes de confirmación bien escritos también facilitan el seguimiento de errores, la comprensión de la evolución de las características y la navegación por el historial del repositorio.
Buenas prácticas para los mensajes de confirmación
Para asegurarte de que tus mensajes de confirmación cumplen su propósito, sigue estas buenas prácticas:
- Sé descriptivo: Un mensaje de confirmación debe explicar qué se ha cambiado y, si procede, por qué se ha hecho. Evita mensajes vagos o genéricos como "arreglar" o "actualizar". En lugar de eso, busca la especificidad. Por ejemplo, "Corregir error de validación del formulario de inicio de sesión" es mucho más útil que simplemente "Corregir error".
- Utiliza el tiempo presente: Los mensajes de compromiso deben escribirse en presente. Esto da la impresión de que estás describiendo lo que el commit está haciendo en ese momento. Por ejemplo, utiliza "Añadir validación de inicio de sesión" en lugar de "Añadida validación de inicio de sesión".
- Hazlo breve y sencillo: Un mensaje conciso es más legible. El resumen (la primera línea del mensaje de confirmación) debe tener normalmente entre 50 y 72 caracteres, y si se necesitan más explicaciones, puedes incluir una descripción más larga en las líneas siguientes. Este enfoque garantiza que el mensaje pueda visualizarse fácilmente utilizando diversas herramientas e interfaces Git.
- Utiliza viñetas para los cambios detallados: Si tu confirmación implica varios cambios relacionados, utiliza viñetas en la descripción ampliada para desglosar lo que se ha hecho. Esto ayuda a crear una estructura clara, haciéndola más fácil de seguir.
> Si quieres ir más allá de los fundamentos de comits, el curso Git Intermedio s a través de conceptos más avanzados como amend, rebase y gestión del historial de confirmaciones en equipo.
Opciones avanzadas de Git Commit
La bandera -m
es una opción común utilizada en los comandos de commit de git, y es suficiente para el uso diario. Sin embargo, otras opciones avanzadas proporcionan mayor flexibilidad y eficacia a la hora de gestionar los cambios. En esta sección, echaremos un vistazo a esas opciones.
Compromiso sin puesta en escena
En muchos casos, preparar manualmente los archivos con git add
antes de confirmarlos puede parecer innecesario, sobre todo cuando hay que confirmar todos los archivos modificados. Para acelerar este proceso, Git proporciona la bandera -a
, que escenifica todos los archivos rastreados y los consigna en un solo paso. Esto significa que cualquier cambio realizado en archivos previamente rastreados se incluye en la confirmación sin tener que ejecutar git add
explícitamente.
Funciona así:
git commit -a -m “Your commit message”
Modificar una confirmación
Pueden producirse errores. A veces, puede que necesites cambiar una confirmación que acabas de hacer. La opción --amend
te permite modificar la confirmación más reciente en lugar de crear una nueva. Esto te permite actualizar el mensaje de confirmación o añadir archivos adicionales a la misma confirmación.
Por ejemplo, para arreglar el mensaje del último commit:
git commit --amend -m "Update commit message"
O, si te olvidaste de preparar un archivo, primero añádelo y luego modifica la confirmación:
git add missed-file.txt
git commit --amend
Esto reemplaza efectivamente el commit anterior por el actualizado.
Ten en cuenta que la modificación sólo debe hacerse en confirmaciones que no se hayan compartido con otros (por ejemplo, que no se hayan enviado a un repositorio compartido), ¡para evitar reescribir la historia de la que otros puedan depender!
Confirmar con los cambios y archivos de una confirmación específica
A veces, necesitas corregir o arreglar un problema de una confirmación anterior sin hacer cambios no relacionados. Git ofrece la opción --fixup
, que ayuda a crear una confirmación de seguimiento vinculada específicamente a una anterior. Esto es especialmente útil cuando necesitas limpiar tu historial de confirmaciones antes de fusionar tus cambios.
Por ejemplo, para crear una corrección para una confirmación concreta:
git commit --fixup <commit-hash>
Este comando creará una nueva confirmación destinada a solucionar los problemas de la confirmación especificada.
Más tarde, cuando realices un rebase interactivo, Git puede aplastar automáticamente estas confirmaciones de corrección con la confirmación original a la que hacen referencia.
> Para flujos de trabajo más avanzados, como aplastar confirmaciones, puedes seguir nuestro detallado recorrido enen el tutorial Aplastar confirmaciones de Git.
Gestionar commits con Git
A medida que tu proyecto evoluciona y el historial de confirmaciones crece, gestionar las confirmaciones se convierte en un aspecto crítico para mantener un repositorio organizado y navegable. Una gestión eficaz de las confirmaciones ayuda a depurar, colaborar y mantener un historial limpio y comprensible.
Git proporciona potentes herramientas que te permiten ver el historial de confirmaciones y revisar o incluso deshacer los cambios cuando sea necesario. Saber gestionar estos commits puede ahorrarte mucho tiempo a la hora de resolver problemas o perfeccionar la historia de tu proyecto.
Ver el historial de confirmaciones
Un aspecto crucial de la gestión de los compromisos es comprender la historia del proyecto. El comando git log
te permite ver un historial detallado de tus confirmaciones. Para contextualizar, proporciona información sobre cuándo se hicieron los cambios, quién los hizo y qué mensajes se adjuntaron.
Por ejemplo, aquí tienes el comando básico git log
:
git log
Muestra los hash de las confirmaciones, los nombres de los autores, las fechas y los mensajes de confirmación.
Pero Git también te permite personalizar la salida del registro para satisfacer necesidades específicas. Por ejemplo, puedes limitar el número de confirmaciones mostradas de la siguiente manera:
git log -n 5 # shows the last 5 commits
Para inspeccionar los cambios realizados en cada confirmación, utiliza la bandera -p
, que muestra el diff de cada confirmación.
Así es como queda:
git log -p
Revertir o deshacer una confirmación
A veces, necesitas retroceder o deshacer cambios. Una forma segura de deshacer una confirmación es utilizargit revert command. Esto crea una nueva confirmación que deshace los cambios introducidos por una confirmación anterior sin alterar el historial de confirmaciones.
Esto es especialmente útil cuando ya has compartido commits con otros y quieres mantener el historial intacto.
Para revertir una confirmación, utiliza lo siguiente:
git revert <commit-hash>
Este comando aplica una inversa de los cambios de la confirmación especificada, deshaciéndolos de hecho y manteniendo un historial transparente.
Reiniciar una confirmación
En algunos casos, puede que quieras restablecer completamente tu repositorio a un estado anterior, borrando una o más confirmaciones. El comando git resetd te permite hacer precisamente eso. Sin embargo, restablecer una confirmación modifica el historial de confirmaciones, por lo que debe utilizarse con precaución, especialmente si los cambios ya se han enviado a un repositorio compartido.
El restablecimiento de Git ofrece tres modos:
- Reinicio suave: Mueve el puntero de confirmación de vuelta a una confirmación especificada, pero conserva los cambios en el directorio de trabajo y en el área de preparación. Esto es útil cuando quieres rehacer una confirmación pero conservando tus cambios.
git reset --soft <commit-hash>
- Reinicio mixto: Mueve el puntero de confirmación de vuelta a una confirmación especificada y mantiene los cambios en el directorio de trabajo, pero borra el área de preparación. Este es el modo de reinicio por defecto de Git.
git reset --mixed <commit-hash>
- Reinicio completo: Mueve el puntero de confirmación hacia atrás a una confirmación especificada y descarta todos los cambios tanto en el directorio de trabajo como en el área de preparación. Esto esencialmente revierte tu repositorio al estado de la confirmación elegida y borra cualquier cambio hecho después de la confirmación.
git reset --hard <commit-hash>
El comando git reset
es una herramienta poderosa, pero es esencial comprender sus implicaciones (especialmente cuando se trabaja en un entorno colaborativo).
Buenas prácticas para hacer commit en Git
Un control de versiones eficaz requiere algo más que conocer los comandos de Git: también implica seguir ciertas prácticas recomendadas para mantener un historial del proyecto limpio, comprensible y eficiente. Estas prácticas no sólo te ayudan a gestionar tu propio trabajo, sino que también facilitan que los colaboradores contribuyan y revisen los cambios.
Comprométete con frecuencia, pero hazlo poco a poco
Una buena regla general es comprometerse pronto y a menudo, pero mantener cada compromiso pequeño y centrado. Este enfoque garantiza que cada confirmación representa una unidad de trabajo distinta y lógica.
Confirmar con frecuencia puede ayudar a dividir los grandes cambios en partes manejables, lo que facilita la revisión, las pruebas y el seguimiento de la evolución de tu proyecto. Al realizar cambios más pequeños y aislados, también reduces el riesgo de introducir errores complejos. Si algo va mal, es más fácil aislar y solucionar el problema cuando los commits son granulares.
Confirmar sólo los cambios relacionados
Cada commit debe centrarse en una única tarea o cuestión. Mezclar cambios no relacionados en un commit dificulta la revisión y la comprensión de la intención de las modificaciones. También complica el proceso de revertir o seleccionar cambios concretos en caso necesario.
Por ejemplo, si estás trabajando en una función pero observas un error menor en otra parte del código, es mejor tratarlos como dos confirmaciones separadas. Esto permite una comprensión clara de lo que se ha hecho y por qué, y también garantiza que cada confirmación tenga sentido y esté aislada.
Colabora con otros en el historial de confirmaciones
Cuando trabajes en equipo, es esencial que te pongas de acuerdo con tus colaboradores sobre cómo se gestionan y presentan los commits. Esto incluye acordar un formato coherente para los mensajes de compromiso y asegurarse de que todo el mundo sigue las mejores prácticas. Los ganchos Git, como los ganchos pre-commit, pueden ayudar a aplicar reglas como los formatos de los mensajes de confirmación o la ejecución de pruebas antes de permitir una confirmación.
La colaboración también se ve reforzada por herramientas que ayudan a gestionar y revisar los commits, como plataformas de revisión de códigocomo GitHub o GitLab. Unhistorial de confirmaciones claro y bien documentadofacilita a los miembros del equipo la comprensión de los cambios, la discusión de las mejoras y el avance eficaz del proyecto.
> ¿Quieres ordenar los archivos sobrantes antes de comprometerte? Aprende a utilizar git clean
en tste tutorial sobre cómo eliminar archivos sin seguimiento.
Solución de problemas comunes de Git Commit
Los commits de Git a veces pueden dar lugar a errores o problemas que pueden ralentizar tu flujo de trabajo. Entender cómo solucionar estos problemas comunes es crucial para mantener un control de versiones fluido y evitar problemas más importantes en el futuro.
Cometer errores de mensaje
Un error común al confirmar cambios es olvidarse de añadir un mensaje de confirmación o utilizar accidentalmente un mensaje vago o vacío. Los mensajes de confirmación claros e informativos son esenciales para realizar un seguimiento de los cambios y permitir que los colaboradores comprendan la historia de un proyecto. Git normalmente evitará que te comprometas sin un mensaje, pero aún es posible pasar por alto la calidad del propio mensaje.
Solución: Comprueba siempre dos veces tu mensaje de confirmación antes de pulsar intro. Si accidentalmente envías una confirmación con un mensaje vacío o poco claro, puedes arreglarlo utilizando el comando git commit --amend
para modificar el mensaje de confirmación más reciente.
Conflictos tras la confirmación
Los conflictos son inevitables cuando varias personas trabajan en el mismo proyecto. Suelen surgir después de una confirmación, cuando fusionas ramas o vuelves a basar. Un conflicto se produce cuando Git no puede resolver automáticamente las diferencias entre dos confirmaciones, dejándote elegir manualmente qué cambios conservar.
Es más probable que se produzcan conflictos cuando dos o más colaboradores modifican la misma sección de código o cuando se hacen grandes refactorizaciones en un proyecto. Aunque pueden ser desalentadores, Git proporciona las herramientas para resolver estos conflictos sin perder datos.
Solución: Cuando se produzca un conflicto, Git marcará las secciones conflictivas en los archivos, y tendrás que resolverlas manualmente editando el archivo para reflejar los cambios deseados. Tras realizar los cambios necesarios, escenifica el archivo con git add
, y luego completa merge
o rebase
confirmando los cambios resueltos. Herramientas como el editor de conflictos de fusión de Git o herramientas de fusión externas también pueden ayudarte a resolver conflictos de forma más eficaz.
Conclusión
El comando git commit
es un aspecto fundamental del control de versiones en Git que permite a los desarrolladores crear instantáneas de su trabajo que se pueden rastrear, revisar y volver a visitar a lo largo del tiempo. Los commits sirven como hitos en la historia de un proyecto, aclarando qué cambios se hicieron, por qué eran necesarios y cuándo se implementaron.
En este tutorial, hemos cubierto la sintaxis básica y el proceso de hacer una confirmación, desde la preparación de archivos con git add
hasta la finalización de la confirmación con git commit
. Hablamos de la importancia de escribir mensajes de compromiso claros y concisos, siguiendo las mejores prácticas, como mantener los mensajes descriptivos, utilizar el tiempo presente y mantener la brevedad.
Además, exploramos opciones avanzadas, como la confirmación sin puesta en escena y la modificación de confirmaciones, que ofrecen flexibilidad a la hora de gestionar tus cambios. También vimos cómo gestionar los commits mediante comandos como git log
, revertir y restablecer.
¿Listo para explorar GitHub más a fondo? Nuestro curso Conceptos de GitHub se sumerge en las bifurcaciones, ramas, problemas y mejores prácticas de colaboración. Si te estás preparando para un flujo de trabajo o una entrevista en el mundo real, la Hoja de trucos Git completa es una gran referencia que debes tener a mano.
Aprende hoy los fundamentos de Git
Preguntas frecuentes
¿Puedo confirmar sin un mensaje en Git?
Técnicamente sí, pero no es recomendable. Si ejecutas git commit
sin la bandera -m
, Git abrirá tu editor de texto predeterminado para que puedas introducir un mensaje de confirmación de forma interactiva. Si guardas y sales sin escribir nada, Git puede cancelar la confirmación o guardar un mensaje vacío, dependiendo de tu configuración. Los mensajes de confirmación son cruciales para el seguimiento de los cambios: ¡incluye siempre uno!
¿Cuál es la diferencia entre git commit y git push?
git commit
guarda los cambios localmente en tu repositorio Git, mientras que git push
envía esos cambios a un repositorio remoto como GitHub o GitLab. Piensa en los commits como instantáneas locales, y en el push como la forma de compartir esas instantáneas con los demás.
¿Puedo modificar una confirmación después de haberla enviado?
Sí, pero es arriesgado. Aunque puedes modificar o reescribir confirmaciones utilizando comandos como git commit --amend
o git rebase
, cambiar confirmaciones empujadas puede causar problemas a los colaboradores. Si tienes que cambiar una confirmación después de enviarla, es probable que tengas que utilizar git push --force
, que reescribe el historial; utilízalo con precaución en ramas compartidas.
¿Qué es una confirmación Git firmada?
Una confirmación firmada utiliza GPG (GNU Privacy Guard) o SSH para verificar criptográficamente la identidad del autor de la confirmación. Esto es especialmente útil en entornos de código abierto o empresariales, donde es importante validar al autor de un cambio. Puedes crear una confirmación firmada utilizando
git commit -S -m "Your message"
¿Puedo deshacer una confirmación sin perder mis cambios?
Sí. Puedes utilizar git reset --soft HEAD~1
para deshacer la última confirmación mientras mantienes tus cambios organizados, o git reset --mixed HEAD~1
para mantenerlos en tu directorio de trabajo. Esto es útil cuando te das cuenta de que te comprometiste demasiado pronto o con el mensaje equivocado.
¿Cómo puedo comprobar qué archivos se incluyeron en una confirmación concreta?
Puedes huir:
git show --name-only
Esto te mostrará el mensaje de confirmación, el diff y la lista de archivos que se modificaron en esa confirmación.
¿Hay alguna forma de imponer el formato de los mensajes de confirmación en un proyecto?
Sí. Puedes utilizar ganchos Git como commit-msg
para aplicar reglas (por ejemplo, exigir números de ticket de JIRA o un formato específico). Herramientas como Husky y Commitlint ayudan a automatizar esto en entornos de equipo.
