Respuestas:
git diff --name-only SHA1 SHA2
donde solo necesita incluir suficiente SHA para identificar los commits. También puedes hacer, por ejemplo
git diff --name-only HEAD~10 HEAD~5
para ver las diferencias entre el décimo último commit y el quinto último (más o menos).
git show --name-only SHA1
.
git diff --name-status [TAG|SHA1]
muestra qué operaciones se realizaron también en los archivos
git diff --name-status
no parece querer mostrar archivos agregados. @sschuberth señaló git show
, que parece que no funciona correctamente para mí: git show --pretty=format: --name-status
. Sólo haciendo git show --name-status
da un poco más de información, pero todavía agradable y denso ... que será mi nuevo comando Goto;)
git diff --name-status [SHA1 [SHA2]]
es como --name-only, excepto que obtienes un prefijo simple que te dice qué pasó con el archivo (modificado, eliminado, agregado ...)
git log --name-status --oneline [SHA1..SHA2]
es similar, pero las confirmaciones se enumeran después del mensaje de confirmación, por lo que puede ver cuándo se modificó un archivo.
si está interesado en lo que sucedió con ciertos archivos / carpetas, puede agregarlo -- <filename> [<filename>...]
a la git log
versión.
si quieres ver lo que sucedió para un solo commit, llámalo SHA1, luego haz
git log --name-status --oneline [SHA1^..SHA1]
Indicadores de estado del archivo:
M modificado - El archivo ha sido modificado
C copiar-editar - El archivo ha sido copiado y modificado
R renombrar-editar - El archivo ha sido renombrado y modificado
A agregado - El archivo ha sido agregado
D eliminado - El archivo ha sido eliminado
U sin fusionar - El archivo tiene conflictos después de una fusión
--relative[=<path>]
opción puede ayudarte, no estoy seguro. De lo contrario siempre hay | erep -v '(.tmp|.foo|.dontwant)$'
...
Parece que nadie ha mencionado el cambio --stat
:
$ git diff --stat HEAD~5 HEAD
.../java/org/apache/calcite/rex/RexSimplify.java | 50 +++++++++++++++++-----
.../apache/calcite/sql/fun/SqlTrimFunction.java | 2 +-
.../apache/calcite/sql2rel/SqlToRelConverter.java | 16 +++++++
.../org/apache/calcite/util/SaffronProperties.java | 19 ++++----
.../org/apache/calcite/test/RexProgramTest.java | 24 +++++++++++
.../apache/calcite/test/SqlToRelConverterTest.java | 8 ++++
.../apache/calcite/test/SqlToRelConverterTest.xml | 15 +++++++
pom.xml | 2 +-
.../apache/calcite/adapter/spark/SparkRules.java | 7 +--
9 files changed, 117 insertions(+), 26 deletions(-)
También hay --numstat
$ git diff --numstat HEAD~5 HEAD
40 10 core/src/main/java/org/apache/calcite/rex/RexSimplify.java
1 1 core/src/main/java/org/apache/calcite/sql/fun/SqlTrimFunction.java
16 0 core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java
8 11 core/src/main/java/org/apache/calcite/util/SaffronProperties.java
24 0 core/src/test/java/org/apache/calcite/test/RexProgramTest.java
8 0 core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java
15 0 core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
1 1 pom.xml
4 3 spark/src/main/java/org/apache/calcite/adapter/spark/SparkRules.java
y --shortstat
$ git diff --shortstat HEAD~5 HEAD
9 files changed, 117 insertions(+), 26 deletions(-)
Pero para ver los archivos cambiados entre su rama y su ancestro común con otra rama (por ejemplo, origen / maestro):
git diff --name-only `git merge-base origin/master HEAD`
git diffstatus master
o similar, que desencadena lo anterior.
git show --pretty=format: --name-only origin/master..
.
git diff --name-only master..branch
no corresponde a la lista de PR de github. De esta manera más precisa. Pero de todos modos tengo 173 archivos chaneados frente a 171 en github PR. (sin merge-base
que tenga 228 vs 171)
Para complementar la respuesta de @ artfulrobot, si desea mostrar los archivos modificados entre dos ramas:
git diff --name-status mybranch..myotherbranch
Ten cuidado con la precedencia. Si coloca primero la rama más nueva, mostrará los archivos como eliminados en lugar de agregados.
Agregar una grep
lata puede refinar aún más las cosas:
git diff --name-status mybranch..myotherbranch | grep "A\t"
Eso mostrará solo los archivos agregados myotherbranch
.
--diff-filter
que proporciona esta funcionalidad de forma nativa, lo que significa menos posibilidades de resultados incorrectos (por ejemplo, falsos positivos)
Agregue el alias de abajo a su ~/.bash_profile
, luego ejecute source ~/.bash_profile
; ahora cada vez que necesite ver los archivos actualizados en la última confirmación, ejecución, showfiles
desde su repositorio git.
alias showfiles='git show --pretty="format:" --name-only'
git config --global alias.showfiles 'show --pretty="format:" --name-only'
para hacer git showfiles
.
Esto mostrará los cambios en los archivos:
git diff --word-diff SHA1 SHA2
Use git log --pretty = oneline> C: \ filename.log
que registrará solo un en línea (--pretty = en línea) que es el nombre del archivo modificado. También registrará todos los detalles en su archivo de salida.
git log --pretty=oneline
solo me da el SHA y el mensaje de confirmación usando git 2.10.1
Como artfulrobot dijo en su respuesta:
git diff --name-status [SHA1 [SHA2]]
Mi ejemplo:
git diff --name-status 78a09k12067c24d8f117886c4723ccf111af4997
4b95d595812211553070046bf2ebd807c0862cca
M views/layouts/default.ctp
M webroot/css/theme.css
A webroot/img/theme/logo.png
Solo para alguien que necesita enfocarse solo en archivos Java, esta es mi solución:
git diff --name-status SHA1 SHA2 | grep '\.java$'
Lo siguiente funciona bien para mí:
$ git show --name-only --format=tformat: SHA1..SHA2
También se puede usar con una sola confirmación:
git show --name-only --format=tformat: SHA1
lo cual es útil para usar en Jenkins, donde se le proporciona una Lista de changeSet SHA's y desea iterar sobre ellos para ver qué archivos se han cambiado.
Esto es similar a algunas de las respuestas anteriores, pero usar en tformat:
lugar de format:
eliminar el espacio separador entre confirmaciones.
Basado en git diff --name-status
escribí la extensión git-diffview git que representa una vista de árbol jerárquica de lo que cambió entre dos caminos.