Buscar..


Introducción

Los compromisos con Git proporcionan responsabilidad al atribuir a los autores cambios en el código. Git ofrece múltiples características para la especificidad y seguridad de los compromisos. Este tema explica y demuestra las prácticas y procedimientos adecuados para comprometerse con Git.

Sintaxis

  • git commit [banderas]

Parámetros

Parámetro Detalles
--mensaje, -m Mensaje a incluir en el commit. Especificar este parámetro evita el comportamiento normal de Git al abrir un editor.
--enmendar Especifique que los cambios organizados actualmente se deben agregar (enmendar) a la confirmación anterior . ¡Cuidado, esto puede reescribir la historia!
--sin editar Utilice el mensaje de confirmación seleccionado sin iniciar un editor. Por ejemplo, git commit --amend --no-edit modifica un compromiso sin cambiar su mensaje de confirmación.
--todos, -a Confirme todos los cambios, incluidos los cambios que aún no se hayan realizado.
--fecha Establecer manualmente la fecha que se asociará con la confirmación.
--solamente Confirma solo las rutas especificadas. Esto no comprometerá lo que usted ha organizado actualmente a menos que se le indique hacerlo.
--patch, -p Utilice la interfaz de selección de parches interactivos para elegir qué cambios cometer.
--ayuda Muestra la página del manual para git commit
-S [keyid], -S - gpg-sign [= keyid], -S --no-gpg-sign Firmar confirmación, GPG-firmar confirmación, contrarrestar commit.gpgSign variable de configuración
-n, --no-verificar Esta opción omite los ganchos de pre-commit y commit-msg. Ver también Ganchos.

Comprometiéndose sin abrir un editor.

Git generalmente abrirá un editor (como vim o emacs ) cuando git commit . Pase la opción -m para especificar un mensaje desde la línea de comando:

git commit -m "Commit message here"

Su mensaje de confirmación puede ir sobre varias líneas:

git commit -m "Commit 'subject line' message here

More detailed description follows here (after a blank line)."

Alternativamente, puedes pasar múltiples argumentos -m :

git commit -m "Commit summary" -m "More detailed description follows here"

Vea Cómo escribir un mensaje de Git Commit .

Guía de estilo de mensaje de Udacity Git Commit

Enmendando un compromiso

Si su último compromiso aún no se ha publicado (no se ha enviado a un repositorio ascendente), puede modificar su compromiso.

git commit --amend

Esto pondrá los cambios actualmente en escena en la confirmación anterior.

Nota: Esto también se puede utilizar para editar un mensaje de confirmación incorrecto. Se abrirá el editor predeterminado (generalmente vi / vim / emacs ) y le permitirá cambiar el mensaje anterior.

Para especificar el mensaje de confirmación en línea:

git commit --amend -m "New commit message"

O para usar el mensaje de confirmación anterior sin cambiarlo:

git commit --amend --no-edit

La modificación de las actualizaciones de la fecha de compromiso, pero deja intacta la fecha del autor. Puedes decirle a git que actualice la información.

git commit --amend --reset-author

También puedes cambiar el autor del commit con:

git commit --amend --author "New Author <[email protected]>"

Nota: tenga en cuenta que la modificación del compromiso más reciente lo reemplaza por completo y el compromiso anterior se elimina del historial de la sucursal. Esto debe tenerse en cuenta al trabajar con repositorios públicos y en sucursales con otros colaboradores.

Esto significa que si el compromiso anterior ya se había enviado, después de modificarlo, tendrá que push --force .

Cometer cambios directamente

Por lo general, debe usar git add o git rm para agregar cambios al índice antes de poder git commit . Pase la opción -a o --all para agregar automáticamente cada cambio (a los archivos rastreados) al índice, incluidas las eliminaciones:

git commit -a 

Si desea agregar también un mensaje de confirmación, debería hacerlo:

git commit -a -m "your commit message goes here"

Además, puedes unir dos banderas:

git commit -am "your commit message goes here"

No es necesario que confirmes todos los archivos a la vez. Omita el indicador -a o --all y especifique qué archivo desea enviar directamente:

git commit path/to/a/file -m "your commit message goes here"

Para confirmar directamente más de un archivo específico, puede especificar uno o varios archivos, directorios y patrones también:

git commit path/to/a/file path/to/a/folder/* path/to/b/file -m "your commit message goes here"

Creando un commit vacío

En términos generales, las confirmaciones vacías (o confirmaciones con el estado que es idéntico al padre) son un error.

Sin embargo, al probar enganches de compilación, sistemas de CI y otros sistemas que activan una confirmación, es útil poder crear fácilmente confirmaciones sin tener que editar / tocar un archivo ficticio.

La --allow-empty la comprobación.

git commit -m "This is a blank commit" --allow-empty

Fase y cometa cambios.

Los basicos

Después de realizar cambios en su código fuente, debe realizar esos cambios con Git antes de poder confirmarlos.

Por ejemplo, si cambia README.md y program.py :

git add README.md program.py

Esto le dice a git que desea agregar los archivos a la próxima confirmación que haga.

Entonces, cometa sus cambios con

git commit

Tenga en cuenta que esto abrirá un editor de texto, que a menudo es vim . Si no está familiarizado con vim, puede querer saber que puede presionar i para entrar en el modo de inserción , escribir su mensaje de confirmación, luego presionar Esc y :wq para guardar y salir. Para evitar abrir el editor de texto, simplemente incluya la -m con su mensaje

git commit -m "Commit message here"

Los mensajes de confirmación a menudo siguen algunas reglas de formato específicas, consulte Buenos mensajes de confirmación para obtener más información.


Atajos

Si ha cambiado muchos archivos en el directorio, en lugar de enumerarlos, podría usar:

git add --all        # equivalent to "git add -a"

O para agregar todos los cambios, sin incluir los archivos que se han eliminado , desde el directorio y subdirectorios de nivel superior:

git add .

O para agregar solo los archivos que se rastrean actualmente ("actualizar"):

git add -u

Si lo desea, revise los cambios por etapas:

git status           # display a list of changed files
git diff --cached    # shows staged changes inside staged files

Finalmente, cometer los cambios:

git commit -m "Commit message here"

Alternativamente, si solo ha modificado archivos existentes o borrados, y no ha creado ninguno nuevo, puede combinar las acciones de git add y git commit en un solo comando:

git commit -am "Commit message here"

Tenga en cuenta que esto pondrá en escena todos los archivos modificados de la misma manera que git add --all .


Informacion delicada

Nunca debe cometer datos confidenciales, como contraseñas o incluso claves privadas. Si este caso ocurre y los cambios ya se han enviado a un servidor central, considere los datos confidenciales como comprometidos. De lo contrario, es posible eliminar dichos datos después. Una solución rápida y fácil es el uso de "BFG Repo-Cleaner": https://rtyley.github.io/bfg-repo-cleaner/ .

El comando bfg --replace-text passwords.txt my-repo.git lee las passwords.txt archivo passwords.txt y las reemplaza con ***REMOVED*** . Esta operación considera todas las confirmaciones previas de todo el repositorio.

Cometer en nombre de otra persona

Si alguien más escribió el código que está comprometiendo, puede darles crédito con la opción --author :

git commit -m "msg" --author "John Smith <[email protected]>"

También puede proporcionar un patrón, que Git usará para buscar autores anteriores:

git commit -m "msg" --author "John"

En este caso, se utilizará la información del autor de la confirmación más reciente con un autor que contenga "John".

En GitHub, los compromisos realizados en cualquiera de las formas anteriores mostrarán una miniatura del autor grande, con el comitero más pequeño y al frente:

introduzca la descripción de la imagen aquí

Confirmando cambios en archivos específicos.

Puede confirmar los cambios realizados en archivos específicos y omitir la configuración mediante git add :

git commit file1.c file2.h

O puedes primero escalonar los archivos:

git add file1.c file2.h

y cometerlos mas tarde:

git commit

Buenos mensajes de cometer

Es importante que alguien que atraviesa el git log entienda fácilmente de qué se trata cada compromiso. Los buenos mensajes de confirmación generalmente incluyen una cantidad de una tarea o un problema en un rastreador y una descripción concisa de lo que se ha hecho y por qué, y en ocasiones también cómo se ha hecho.

Los mejores mensajes pueden parecer:

TASK-123: Implement login through OAuth
TASK-124: Add auto minification of JS/CSS files
TASK-125: Fix minifier error when name > 200 chars

Considerando que los siguientes mensajes no serían tan útiles:

fix                         // What has been fixed?
just a bit of a change      // What has changed?
TASK-371                    // No description at all, reader will need to look at the tracker themselves for an explanation
Implemented IFoo in IBar    // Why it was needed?

Una forma de probar si un mensaje de confirmación está escrito en el estado de ánimo correcto es reemplazar el espacio en blanco con el mensaje y ver si tiene sentido:

Si agrego este commit, voy a ___ a mi repositorio.

Las siete reglas de un gran mensaje de git commit.

  1. Separe la línea de asunto del cuerpo con una línea en blanco
  2. Limite la línea de asunto a 50 caracteres
  3. Capitalizar la línea de asunto
  4. No termine la línea de asunto con un punto
  5. Utilice el estado de ánimo imperativo en la línea de asunto
  6. Envolver manualmente cada línea del cuerpo en 72 caracteres
  7. Usa el cuerpo para explicar qué y por qué, en lugar de cómo.

7 reglas del blog de Chris Beam .

Comprometiéndose en una fecha específica

git commit -m 'Fix UI bug' --date 2016-07-01

El parámetro --date establece la fecha de autor . Esta fecha aparecerá en la salida estándar del git log de git log , por ejemplo.

Para forzar la fecha de compromiso también:

GIT_COMMITTER_DATE=2016-07-01 git commit -m 'Fix UI bug' --date 2016-07-01

El parámetro de fecha acepta los formatos flexibles admitidos por la fecha de GNU, por ejemplo:

git commit -m 'Fix UI bug' --date yesterday
git commit -m 'Fix UI bug' --date '3 days ago'
git commit -m 'Fix UI bug' --date '3 hours ago'

Cuando la fecha no especifica la hora, se usará la hora actual y solo se anulará la fecha.

Seleccionando qué líneas deben ser escalonadas para cometer

Supongamos que tiene muchos cambios en uno o más archivos, pero de cada archivo que solo desea confirmar algunos de los cambios, puede seleccionar los cambios deseados utilizando:

git add -p

o

git add -p [file]

Cada uno de sus cambios se mostrará individualmente, y para cada cambio se le pedirá que elija una de las siguientes opciones:

y - Yes, add this hunk

n - No, don’t add this hunk

d - No, don’t add this hunk, or any other remaining hunks for this file.
    Useful if you’ve already added what you want to, and want to skip over the rest.

s - Split the hunk into smaller hunks, if possible

e - Manually edit the hunk.  This is probably the most powerful option.
    It will open the hunk in a text editor and you can edit it as needed.

Esto escenificará las partes de los archivos que elijas. Entonces puedes cometer todos los cambios en etapas como este:

git commit -m 'Commit Message'

Los cambios que no se realizaron o confirmaron seguirán apareciendo en sus archivos de trabajo, y se pueden confirmar más tarde si es necesario. O si los cambios restantes no son deseados, se pueden descartar con:

git reset --hard

Además de dividir un gran cambio en compromisos más pequeños, este enfoque también es útil para revisar lo que está a punto de comprometerse. Al confirmar individualmente cada cambio, tiene la oportunidad de verificar lo que escribió y puede evitar la creación accidental de códigos no deseados, como las declaraciones de impresión / registro.

Modificando el tiempo de un compromiso.

Usted puede modificar el tiempo de un compromiso usando

git commit --amend --date="Thu Jul 28 11:30 2016 -0400"

o incluso

git commit --amend --date="now"

Modificando al autor de un commit.

Si realiza una confirmación como el autor incorrecto, puede cambiarlo y luego enmendarlo.

git config user.name "Full Name"
git config user.email "[email protected]"

git commit --amend --reset-author

Firma GPG confirma

  1. Determine su clave de identificación

    gpg --list-secret-keys --keyid-format LONG
    
    /Users/davidcondrey/.gnupg/secring.gpg
    --------------------------------------
    sec   2048R/YOUR-16-DIGIT-KEY-ID YYYY-MM-DD [expires: YYYY-MM-DD]
    

    Su ID es un código alfanumérico de 16 dígitos después de la primera barra diagonal.

  2. Defina su ID de clave en su configuración git

    git config --global user.signingkey YOUR-16-DIGIT-KEY-ID
    
  3. A partir de la versión 1.7.9, git commit acepta la opción -S para adjuntar una firma a sus compromisos. El uso de esta opción le pedirá su frase de contraseña de GPG y agregará su firma al registro de confirmación.

    git commit -S -m "Your commit message"
    


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow