Explicación del comando Git Commit

El git commitcomando guardará todos los cambios por etapas, junto con una breve descripción del usuario, en un "compromiso" en el repositorio local.

Las confirmaciones están en el corazón del uso de Git. Puede pensar en una confirmación como una instantánea de su proyecto, donde se crea una nueva versión de ese proyecto en el repositorio actual. Dos características importantes de las confirmaciones son:

  • puede recuperar los cambios confirmados en una fecha posterior, o revertir el proyecto a esa versión (ver pago de Git)
  • si varias confirmaciones editan diferentes partes del proyecto, no se sobrescribirán entre sí incluso si los autores de la confirmación no se conocen entre sí. Este es uno de los beneficios de usar Git sobre una herramienta como Dropbox o Google Drive.

Opciones

Hay una serie de opciones con las que puede incluir git commit. Sin embargo, esta guía solo cubrirá las dos opciones más comunes. Para obtener una lista extensa de opciones, consulte la documentación de Git.

La opción -m

La opción más común utilizada con git commites la -mopción. El -msinónimo de mensaje. Al llamar git commit, es necesario incluir un mensaje. El mensaje debe ser una breve descripción de los cambios que se están realizando. El mensaje debe estar al final del comando y debe estar entre comillas " ".

Un ejemplo de cómo utilizar la -mopción:

git commit -m "My message"

La salida en su terminal debería verse así:

[master 13vc6b2] My message 1 file changed, 1 insertion(+)

NOTA: Si-mno está incluido con elgit commitcomando, se le pedirá que agregue un mensaje en su editor de texto predeterminado; consulte 'Uso de mensajes de confirmación detallados' a continuación.

La opción -a

Otra opción popular es la -aopción. Los -asoportes para todos. Esta opción prepara automáticamente todos los archivos modificados para su confirmación. Si se agregan nuevos archivos, la -aopción no los preparará. Solo se confirmarán los archivos que el repositorio de Git conoce.

Por ejemplo:

Digamos que tiene un README.mdarchivo que ya ha sido enviado a su repositorio. Si realiza cambios en este archivo, puede usar la -aopción en su comando de confirmación para preparar y agregar los cambios a su repositorio. Sin embargo, ¿qué pasa si también agrega un nuevo archivo llamado index.html? La -aopción no se ubicará en la etapa index.htmlya que actualmente no existe en el repositorio. Cuando se han agregado nuevos archivos, se git adddebe invocar el comando para preparar los archivos antes de que se puedan enviar al repositorio.

Un ejemplo de cómo utilizar la -aopción:

git commit -am “My new changes”

La salida en su terminal debería verse así:

[master 22gc8v1] My new message 1 file changed, 1 insertion(+)

Usar mensajes de confirmación detallados

Aunque git commit -m "commit message"funciona bien, puede ser útil proporcionar información más detallada y sistemática.

Si confirma sin usar la -mopción, git abrirá su editor de texto predeterminado con un nuevo archivo, que incluirá una lista comentada de todos los archivos / cambios que están organizados en la confirmación. A continuación, escriba su mensaje de confirmación detallado (la primera línea se tratará como la línea de asunto) y la confirmación se realizará cuando guarde / cierre el archivo.

Tener en cuenta:

  • Mantenga la longitud de las líneas de su mensaje de confirmación de menos de 72 caracteres como práctica estándar
  • Está perfectamente bien, e incluso se recomienda, escribir mensajes de confirmación de varias líneas
  • También puede consultar otros problemas o solicitudes de extracción en su mensaje de confirmación. GitHub asignó una referencia numérica a todas las solicitudes de extracción y problemas, por lo que, por ejemplo, si desea hacer referencia a la solicitud de extracción # 788, simplemente hágalo en la línea de asunto o en el texto del cuerpo, según corresponda.

La opción —enmendar

La --amendopción le permite cambiar su última confirmación. Digamos que acaba de comprometerse y cometió un error en su mensaje de registro de confirmación. Puede modificar convenientemente la confirmación más reciente usando el comando:

git commit --amend -m "an updated commit message"

Si olvida incluir un archivo en la confirmación:

git add FORGOTTEN-FILE-NAME git commit --amend -m "an updated commit message" # If you don't need to change the commit message, use the --no-edit option git add FORGOTTEN-FILE-NAME git commit --amend --no-edit

Los compromisos prematuros ocurren todo el tiempo en el curso de su desarrollo diario. Es fácil olvidarse de preparar un archivo o de cómo formatear correctamente su mensaje de confirmación. La --amendbandera es una forma conveniente de corregir estos pequeños errores. Este comando reemplazará el mensaje de confirmación anterior con el actualizado especificado en el comando.

Las confirmaciones enmendadas son en realidad confirmaciones completamente nuevas y la confirmación anterior ya no estará en su rama actual. Cuando trabaje con otras personas, debe intentar evitar modificar las confirmaciones si la última confirmación ya se ha enviado al repositorio.

With --amend, one of the useful flag you could use is --author which enables you to change the author of the last commit you’ve made. Imagine a situation you haven’t properly set up your name or email in git configurations but you already made a commit. With --author flag you can simply change them without resetting the last commit.

git commit --amend --author="John Doe "

The -v or —verbose Option

The -v or --verbose option is used without the -m option. The -v option can be useful when you wish to edit a Git commit message in your default editor while being able to see the changes you made for the commit. The command opens your default text editor with a commit message template as well as a copy of the changes you made for this commit. The changes, or diff, will not be included in the commit message, but they provide a nice way to reference your changes when you’re describing them in your commit message.

How to squash multiple commits into one

This is an awesome feature of rebase that can be used in the interactive mode. To squash the last n commits into one, run the following command:

git rebase -i HEAD~n

That will open up a text-editor with something similar to the following:

pick commit_1 pick commit_2 pick commit_3 ... pick commit_n # Bunch of comments

Leave the first commit alone, and change the rest of the picks to squash. Save and exit the editor.

So if you wanted to squash the last three commits, you’ll first run git rebase -i HEAD~3 and then you’ll want to edit your commits to look something like this:

pick dd661ba Commit 1 squash 71f5fee Commit 2 squash f4b4bf1 Commit 3

If you’ve already pushed to a remote before squashing your commits, you’ll have to push to the remote again, with the -f flag, otherwise git will throw an error at you.

It is strongly suggested that you read the information in the opened file as there are many things you can do.

More Information:

  • Git documentation: commit