Pregunta ¿Cómo enumerar solo los nombres de archivo que cambiaron entre dos confirmaciones?


Tengo un montón de compromisos en el repositorio. Quiero ver una lista de archivos modificada entre dos confirmaciones, desde SHA1 a SHA2.

¿Qué comando debería usar?


1474
2017-10-12 01:48


origen


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 compromiso más reciente y el quinto más reciente (más o menos).


2006
2017-10-12 01:51



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 le interesa saber qué sucedió con ciertos archivos / carpetas, puede adjuntar -- <filename> [<filename>...] al git log versión.

  • si quieres ver qué sucedió para una única confirmación, llámala SHA1, luego haz
    git log --name-status --oneline [SHA1^..SHA1]

Indicadores de estado del archivo:
M modificado - El archivo ha sido modificado
C copy-edit - El archivo ha sido copiado y modificado
R rename-edit - El archivo ha sido renombrado y modificado
Un agregado: se ha agregado el archivo
D eliminado: el archivo se ha eliminado
U unmerged: el archivo tiene conflictos después de una combinación


342
2017-07-26 09:26



Pero para ver los archivos cambiados entre su rama y su ancestro común con otra rama (digamos origen / maestro):

git diff --name-only `git merge-base origin/master HEAD`

41
2018-03-20 17:10



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(-)

27
2017-10-19 21:50



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 la rama más nueva primero, mostraría los archivos como eliminados en lugar de agregados.

Agregar un grep puede refinar más cosas:

git diff --name-status mybranch..myotherbranch | grep "A\t"

Eso luego mostrará solo los archivos agregados en myotherbranch.


17
2017-10-22 10:42



Agregue un alias debajo de su ~/.bash_profile, entonces corre, source ~/.bash_profile; ahora, cada vez que necesite ver los archivos actualizados en la última confirmación, ejecute, showfiles de tu repositorio git.

alias showfiles='git show --pretty="format:" --name-only'

8
2018-04-10 19:38



Esto mostrará los cambios en los archivos:

git diff --word-diff SHA1 SHA2

7
2017-12-04 15:10



Utilizar git log --pretty = oneline> C: \ filename.log

que registrará solo una línea en línea (--pretty = oneline) ese es el nombre del archivo cambiado. También registrará todos los detalles en su archivo de salida.


3
2017-09-10 10:59



También tenga en cuenta, si solo desea ver los archivos modificados entre el último compromiso y el anterior. Esto funciona bien: git show --name-only


2
2017-10-01 20:42



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

1
2018-05-03 12:37



Residencia en git diff --name-status Yo escribí el git-diffview git extensión que representa una vista de árbol jerárquica de lo que cambió entre dos rutas.


0
2017-11-03 09:39