2011-02-23 16 views

Respuesta

151

Para los archivos cambiados entre un SHA dado y su actual cometer:

git diff --name-only <starting SHA> HEAD 

o si desea incluir archivos cambiado, pero-todavía-no-comprometidos:

git diff --name-only <starting SHA> 

De manera más general, la siguiente sintaxis siempre le dirá qué archivos cambiaron entre dos commits (especificados por sus SHA u otros nombres):

git diff --name-only <commit1> <commit2> 
+1

y si desea saber los archivos modificados para una confirmación concreta do: 'git diff --name-only ^' – thebugfinder

+1

Usar el indicador '--name-status' en lugar de' --name-only' es útil para obtener un lista de archivos y ver su estado de modificación, como Agregado o Modificado. –

+0

@Amber debería mencionar las notas de @Thane Plummer de que '--name-status' muestra lo que les sucedió –

47

para encontrar los nombres de todos los archivos modificados desde el último commit:

git diff --name-only 

O (un poco más de información, incluyendo los archivos sin seguimiento):

git status 
39
  • para listar todos los unstaged rastreó archivos cambiados:

    git diff --name-only 
    
  • para listar todos los por etapas rastreados archivos cambiados:

    git diff --name-only --staged 
    
  • para listar todos los por etapas y no escénica de orugas archivos cambiados:

    { git diff --name-only ; git diff --name-only --staged ; } | sort | uniq 
    
  • a la lista de todos los sin seguimiento archivos (las enumeradas por git status, por lo que no incluye ningún archivo ignorado):

    git ls-files --other --exclude-standard 
    

Si está usando esto en un script de shell, y que desea comprobar mediante programación si estos comandos devuelven nada, usted estará interesado en la opción git diff 's --exit-code.

9

Cuando he agregado/modificado/eliminado muchos archivos (desde la última confirmación), me gusta ver esas modificaciones en orden cronológico.

Para que utilizo:

  • para listar todos los archivos que no son etapas:

    git ls-files --other --modified --exclude-standard 
    
  • Para obtener la última fecha de modificación de cada archivo:

    while read filename; do echo -n "$(stat -c%y -- $filename 2> /dev/null) "; echo $filename; done 
    
  • Para ordenarlos de más antiguo a más reciente:

    sort 
    

Un alias hace que sea más fácil de usar:

alias gstlast='git ls-files --other --modified --exclude-standard|while read filename; do echo -n "$(stat -c%y -- $filename 2> /dev/null) "; echo $filename; done|sort' 

Por ejemplo:

[email protected]:~> gstlast 
2015-01-20 11:40:05.000000000 +0000 .cpl/params/libelf 
2015-01-21 09:02:58.435823000 +0000 .cpl/params/glib 
2015-01-21 09:07:32.744336000 +0000 .cpl/params/libsecret 
2015-01-21 09:10:01.294778000 +0000 .cpl/_deps 
2015-01-21 09:17:42.846372000 +0000 .cpl/params/npth 
2015-01-21 12:12:19.002718000 +0000 sbin/git-rcd 

ahora puedo revisar mis modificaciones, del más antiguo al más reciente.

1

Con git show puede obtener un resultado similar. Para mirar el commit (como se ve en git log vista) con la lista de archivos incluidos en, uso:

git show --name-only [commit-id_A]^..[commit-id_B] 

Dónde [commit-id_A] es la inicial y se comprometen [commit-id_B] es la última confirmación de lo que desea mostrar.

Atención especial con ^ símbolo. Si no lo incluye, la información de commit-id_A no se implementará.

1

Esto se puede hacer utilizando git status y el comando grep como a continuación. Algo así como git status -s | grep M:

[email protected]:~/project-repo-directory# git status -s | grep M 
M src/.../file1.js 
M src/.../file2.js 
M src/.../file3.js 
.... 
0

Si desea comprobar los archivos modificados que hay que tener cuidado de muchas cosas pequeñas como que será mejor utilizar, como si desea comprobar cuál de los archivos simplemente cambió el tipo de

estado

GIT - mostrará los archivos con los cambios

luego si quieres saber qué cambios se deben hacer se puede comprobar de forma,

git diff - mostrará todos los ch anges en todos los archivos

es bueno sólo cuando sólo un archivo se modifica

y si desea comprobar archivo en particular a continuación, utilizar

git diff

Cuestiones relacionadas