Cuando lo hago git diff COMMIT
, veo los cambios entre ese commit y HEAD (hasta donde yo sé), pero me gustaría ver los cambios realizados por ese commit único.
No he encontrado ninguna opción obvia en diff
/ log
que me dé esa salida.
Cuando lo hago git diff COMMIT
, veo los cambios entre ese commit y HEAD (hasta donde yo sé), pero me gustaría ver los cambios realizados por ese commit único.
No he encontrado ninguna opción obvia en diff
/ log
que me dé esa salida.
Respuestas:
Para ver la diferencia de un COMMIT
hash particular :
git diff COMMIT~ COMMIT
le mostrará la diferencia entre COMMIT
el antepasado de ese y el COMMIT
. Consulte las páginas de manual de git diff para obtener detalles sobre el comando y gitrevisions sobre~
notación y sus amigos.
Alternativamente, git show COMMIT
hará algo muy similar. (Los datos de la confirmación, incluida su diferencia, pero no para las confirmaciones de fusión). Consulte la página de manual de git show .
^
necesidades deben citarse en los shells Thomson y Bourne (sinónimo de |
allí) y rc
sus derivados (operador de intercalación) y zsh
con el not
globo extendido habilitado ( operador global)
HEAD^
implica el primer padre en caso de que un commit tenga varios padres (es decir, commit de fusión).
git diff COMMIT~ COMMIT
funciona para mí, observe la tilde en lugar de descuidar. Estoy ejecutando git versión 2.6.1.windows.1 en Windows 10.
Como se menciona en " Taquigrafía para diff de git commit con su padre? ", También se 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 COMMIT
parámetro es commit-ish :
Un objeto de confirmación o un objeto que se puede desreferenciar recursivamente a un objeto de confirmación. Los siguientes son todos commit-ishes: un objeto commit, un objeto tag que apunta a un objeto commit, un objeto tag que apunta a un objeto tag que apunta a un objeto commit, etc.
Consulte gitrevision "ESPECIFICANDO REVISIONES" para hacer referencia a un commit-ish.
Vea 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 lleva de vuelta 1 commit.
Primero obtenga la ID de confirmación usando,
git log #to list all
O
git log -p -1 #last one commit id
Copiar commit id.
Ahora usamos dos métodos para enumerar los cambios de una confirmación específica,
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 le mostrará exactamente lo que hay en esa confirmación. Creo que puedes hacer un rango simplemente poniendo un espacio entre dos commits shas.
git show <beginning_sha> <ending_sha>
lo cual es bastante útil si está haciendo un rebase a menudo porque sus registros de características estarán todos en una fila.
Desde la página de 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>
Use 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 de 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.
git diff HEAD HEAD^
.
Lo siguiente parece hacer el trabajo; Lo uso para mostrar lo que ha sido traído por una fusión.
git whatchanged -m -n 1 -p <SHA-1 hash of merge commit>
git log
? (debido a stackoverflow.com/a/18585297/6309 )
Podrías 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 --stat
opción.
diff
comando es: ¿qué necesitaría cambiar en el archivo para pasar de commit HEAD
a commit HEAD^1
?
git difftool COMMIT^ <commit hash>
También es posible si ha configurado su difftool.
Vea aquí cómo configurar difftool o la página de 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 de entrega
Para ver el autor y el tiempo por uso de compromiso git show COMMIT
. Lo que resultará en algo como esto:
commit 13414df70354678b1b9304ebe4b6d204810f867e
Merge: a2a2894 3a1ba8f
Author: You <you@you.com>
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 combinación anterior git diff --stat a2a2894 3a1ba8f
.
Si desea ver la diferencia real, ejecute git --stat a2a2894 3a1ba8f
git --stat a2a2894 3a1ba8f
". Creo que te refieres git diff a2a2894 3a1ba8f
o si no unknown option: --stat
.
Para verificar los 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 diff sin commit en el medio, no necesita poner los identificadores de commit.
Estoy ejecutando Git versión 2.6.1.windows.1 en Windows 10, por lo que necesitaba una ligera modificación a la respuesta de Nevik (tilde en lugar de caret):
git diff COMMIT~ COMMIT
Otra opción es citar el cursor:
git diff "COMMIT^" COMMIT
Este comando te dará el commit-hash principal de Git:
git log -n 2 <commit-hash>
Después de esto git diff-tool <commit-hash> <parent-commit-hash>
Ejemplo:
bonnie@bonnie ~/ $ git log -n 2 7f65b9a9d3820525766fcba285b3c678e889fe3
commit 7f65b9a9d3820525766fcba285b3c678e889fe3b
Author: souparno <souparno.majumder@gmail.com>
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 <souparno.majumder@gmail.com>
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
En caso de comprobar el cambio de origen en una vista gráfica,
$gitk (Mention your commit id here)
por ejemplo:
$gitk HEAD~1