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.
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 .
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? ".
También puedes probar esta manera fácil:
git show <COMMIT>
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.
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
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.
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.
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>
Otra posibilidad:
git log -p COMMIT -1
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.
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
.
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
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^-
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
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.
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
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.