git commit
Definición
El comando git commit guarda todos los cambios actualmente en el área de preparación (staging) del proyecto. Los commits se crean para capturar el estado actual de un proyecto. Las instantáneas confirmadas se consideran versiones seguras de un proyecto porque Git pregunta antes de modificarlas. Antes de ejecutar el comando git commit, se utiliza el comando git add para preparar los cambios que luego se almacenarán en un commit.
Cómo funciona
Las instantáneas de Git se confirman en el repositorio local. Git te permite acumular commits localmente, en lugar de enviar cambios inmediatamente a un repositorio central. Esto ofrece muchas ventajas, como dividir una función en commits, agrupar commits relacionados y limpiar el historial local antes de enviarlo al repositorio central. Esto también le da a los desarrolladores la oportunidad de trabajar de forma aislada.
Opciones comunes
| git commit -a | Confirma una instantánea de todos los cambios en el directorio de trabajo. Solo se incluyen las modificaciones de los archivos rastreados. |
|---|---|
| git commit -m "commit message" | Crea un commit con el mensaje de confirmación proporcionado. Por defecto, git commit abre el editor de texto configurado localmente para ingresar un mensaje de commit. |
| git commit -am "commit message" | Combina las opciones -a y -m para preparar todos los archivos modificados y rastreados, y crear un commit con un mensaje en línea. |
| git commit --amend | Modifica el último commit. Los cambios preparados se agregan al commit anterior. Este comando abre el editor de texto configurado del sistema y cambia el mensaje de commit especificado anteriormente. |
Guardar cambios con un commit
En el siguiente ejemplo, tenemos el archivo w3docs.txt con contenido modificado en la rama actual. Para confirmar la instantánea preparada del archivo, primero debes preparar el archivo con el comando git add.
Comando git add
git add w3docs.txtEjecutar git add moverá el archivo w3docs.txt al área de preparación de Git. Usa el comando git status para ver la salida.
git status
git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: w3docs.txtLa salida indica que w3docs.txt se guardará con el próximo commit. El commit se crea ejecutando:
Git commit
git commitEjecutar git commit abre un editor de texto (podemos configurarlo mediante git config) solicitando un mensaje de registro de commit y una lista de lo que se está confirmando:
git commit en el editor
# Enter the commit message of your changes. Lines that start
# with '#' will be ignored, an empty message breaks off the commit.
# On branch master
# Changes needed to be committed:
# (use "git reset HEAD ..." to unstage)
#
#modified: w3docs.txtEl formato de commit convencional de Git resume el cambio en la primera línea en menos de 50 caracteres, seguido de una línea en blanco y una explicación detallada. Por ejemplo:
Mensaje de git commit
Change the message displayed by w3docs.txt
- Update the sayHello() function to get the username
- Change the sayGoodbye() function to a more welcoming messageLa primera línea del mensaje de commit es la línea del asunto, el resto es su cuerpo.
Cómo actualizar (modificar) un commit
El siguiente ejemplo abre el editor de texto configurado prellenado con el mensaje de commit ya ingresado. Esto significa que estás editando el último commit en lugar de crear uno nuevo.
git add y git commit
git add w3docs.txt
git commit --amendGit commit vs svn commit
SVN es un modelo de aplicación centralizado, mientras que Git es un modelo de aplicación distribuido. SVN commit envía cambios desde el cliente local a un repositorio centralizado. En Git, las instantáneas se confirman en el repositorio local. Los commits de Git se pueden enviar a repositorios remotos arbitrarios.
Instantáneas, no diferencias
Git se basa en instantáneas, mientras que SVN rastrea las diferencias en los archivos. Un svn commit registra un diff que se aplica al archivo original en el repositorio. Git registra el estado completo del proyecto en cada commit. Al guardar el estado del proyecto, Git toma una instantánea de los archivos actuales y almacena una referencia a esa instantánea. Si un archivo no ha cambiado, Git no lo almacena nuevamente, lo que optimiza el almacenamiento.


Práctica
¿Cuáles son las características y opciones del comando 'git commit'?