web-dev-qa-db-esp.com

¿Cómo ver los cambios en un Git commit?

Cuando hago git diff COMMIT veo los cambios entre ese compromiso y HEAD (por lo que sé), pero me gustaría ver los cambios realizados por ese único compromiso.

No he encontrado ninguna opción obvia en diff/log que me dé esa salida.

1199
laktak

Para ver la diferencia de un hash COMMIT particular:

git diff COMMIT~ COMMIT le mostrará la diferencia entre el ancestro de COMMIT y la COMMIT. Consulte las páginas del manual para git diff para obtener detalles sobre el comando y gitrevisions sobre la notación ~ y sus amigos.

Alternativamente, git show COMMIT hará algo muy similar. (Los datos de la confirmación, incluida la diferencia, pero no para las combinaciones de combinación). Consulte la página de manual de git show .

1538
Nevik Rehnel

Como se menciona en " Shorthand for diff of git commit with his parent? ", También puede usar git diff con:

git diff COMMIT^!

o

git diff-tree -p COMMIT

Con git show, necesitarías (para enfocarte solo en diff) hacer:

git show --color --pretty=format:%b $COMMIT

El parámetro COMMIT es unCOMMIT-ISH:

Un objeto de confirmación o un objeto que puede ser recursivamente referenciado a un objeto de confirmación. A continuación se incluyen todos los campos de confirmación: un objeto de confirmación, un objeto de etiqueta que apunta a un objeto de confirmación, un objeto de etiqueta que apunta a un objeto de etiqueta que apunta a un objeto de confirmación, etc.

Consulte gitrevision "ESPECIFIENDO REVISIONES" para hacer referencia a un commit-ish.
Ver también " ¿Qué significa tree-ish en Git? ".

427
VonC

También puedes probar esta manera fácil:

git show <COMMIT>
264
Lakhan

git show muestra los cambios realizados en la confirmación más reciente.

Equivalente a git show HEAD.

git show HEAD~1 te devuelve 1 commit.

58
Adam Salma

Primero obtenga el ID de confirmación usando,

git log #to list all

O

git log -p -1 #last one commit id

Copiar ID de confirmación.

Ahora usamos dos métodos para enumerar los cambios de un compromiso específico,

Método 1:

git diff commit_id^! #commit id something like this 1c6a6000asad012

Método 2:

git show commit_id
For example: git show 1c6a600a
27
Silent Spectator
git show <commit_sha>

Esto te mostrará lo que hay en ese compromiso. Creo que se puede hacer un rango simplemente colocando un espacio entre dos shas de confirmación.

git show <beginning_sha> <ending_sha>

lo que es bastante útil si está cambiando de base a menudo porque todos los registros de características estarán en fila.

24
Iwnnay

De la página del manual para git-diff (1) :

git diff [options] [<commit>] [--] [<path>…]
git diff [options] --cached [<commit>] [--] [<path>…]
git diff [options] <commit> <commit> [--] [<path>…]
git diff [options] <blob> <blob>
git diff [options] [--no-index] [--] <path> <path>

Usa el tercero en el medio:

git diff [options] <parent-commit> <commit>

También desde la misma página de manual, en la parte inferior, en la sección Ejemplos :

$ git diff HEAD^ HEAD      <3>

Compare la versión antes de la última confirmación y la última confirmación.

Es cierto que está redactado un poco confuso, sería menos confuso como

Compare la confirmación más reciente con la confirmación anterior.

24
user456814

Lo siguiente parece hacer el trabajo; Lo uso para mostrar lo que ha traído una fusión.

git whatchanged -m -n 1 -p <SHA-1 hash of merge commit>
19
MichaelMoser

Otra posibilidad:

git log -p COMMIT -1

11
John_West
git difftool COMMIT^ <commit hash>

también es posible si ha configurado su diftool.

Vea aquí cómo configurar difftool O la página del manual aquí

Además, puede usar git diff-tree --no-commit-id --name-only -r <commit hash> para ver qué archivos se han cambiado/confirmado en un hash de confirmación.

9
Chand Priyankara

Podría usar git diff HEAD HEAD^1 para ver la diferencia con la confirmación principal.

Si solo desea ver la lista de archivos, agregue la opción --stat.

7
Irshu

Para ver el autor y el tiempo mediante el uso de git show COMMIT. Lo que resultará en algo como esto:

commit 13414df70354678b1b9304ebe4b6d204810f867e
Merge: a2a2894 3a1ba8f
Author: You <[email protected]>
Date:   Fri Jul 24 17:46:42 2015 -0700

     Merge remote-tracking branch 'Origin/your-feature'

Si desea ver qué archivos se han cambiado, ejecute lo siguiente con los valores de la línea de fusión arriba de git diff --stat a2a2894 3a1ba8f.

Si desea ver la diferencia real, ejecute git --stat a2a2894 3a1ba8f

6
Nikita G.

Me gusta el siguiente comando para comparar una confirmación específica y su última confirmación:

git diff <commit-hash>^-

Ejemplo:

git diff cd1b3f485^-
5
starcwl

Estoy ejecutando Git versión 2.6.1.windows.1 en Windows 10, así que necesitaba una ligera modificación en la respuesta de Nevik (tilde en lugar de intercalación):

git diff COMMIT~ COMMIT

Otra opción es citar el caret:

git diff "COMMIT^" COMMIT
4
Juuso Ohtonen

Por lo general hago

git diff HEAD~1

Para mostrar los cambios relativos a la última confirmación. Si tiene más confirmaciones, simplemente aumente el número 1 según la cantidad de confirmaciones que desee ver.

2
Alex

Este comando te dará el hash de confirmación principal de Git:

git log -n 2 <commit-hash>

Después de eso git diff-tool <commit-hash> <parent-commit-hash>

Ejemplo:

[email protected] ~/ $ git log -n 2 7f65b9a9d3820525766fcba285b3c678e889fe3

commit 7f65b9a9d3820525766fcba285b3c678e889fe3b
Author: souparno <[email protected]>
Date:   Mon Jul 25 13:17:07 2016 +0530

CSS changed to maintain the aspect ratio of the channel logos and to fit them properly.

commit c3a61f17e14e2b80cf64b172a45f1b4826ee291f
Author: souparno <[email protected]>
Date:   Mon Jul 25 11:28:09 2016 +0530

The ratio of the height to width of the channel images are maintained.

Después de este

git difftool 7f65b9a9d3820525766fcba285b3c678e889fe3b c3a61f17e14e2b80cf64b172a45f1b4826ee291f
2
souparno majumder

Para verificar cambios completos:

  git diff <commit_Id_1> <commit_Id_2>

Para verificar solo los archivos modificados/agregados/eliminados:

  git diff <commit_Id_1> <commit_Id_2> --name-only

NOTA: Para verificar la diferencia sin compromiso entre, no es necesario que coloque los ID de confirmación.

2
bit_cracker007