ver tipos tag remove modificados log etiquetas crear archivos git

tipos - git ver archivos modificados



¿Cómo obtener una lista de todos los archivos que cambiaron entre dos confirmaciones de Git? (7)

Debido a la burocracia, necesito obtener una lista de todos los archivos modificados en mi repositorio para un informe (comencé con el código fuente existente).

¿Qué debería ejecutar para obtener esta lista?


Con git show puedes obtener un resultado similar. Para ver la confirmación (como se ve en la vista de git log ) con la lista de archivos incluidos, use:

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

Donde [commit-id_A] es la confirmación inicial y [commit-id_B] es la última confirmación que desea mostrar.

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


Cuando agregué / modifiqué / borré muchos archivos (desde la última confirmación), me gusta ver esas modificaciones en orden cronológico.

Para eso uso:

  • Para enumerar todos los archivos no escalonados:

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

  • Para obtener la última fecha de modificación para 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 lo hace 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:

username@hostname:~> 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, desde la más antigua a la más reciente.


La lista de modificaciones sin instancia se puede obtener usando el git status y el comando grep como a continuación. Algo así como el git status -s | grep M git status -s | grep M :

root@user-ubuntu:~/project-repo-directory# git status -s | grep ''^ M'' M src/.../file1.js M src/.../file2.js M src/.../file3.js ....


Para encontrar los nombres de todos los archivos modificados desde su última confirmación:

git diff --name-only

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

git status


Para los archivos modificados entre un SHA determinado y su confirmación actual:

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

o si desea incluir archivos modificados pero no comprometidos:

git diff --name-only <starting SHA>

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

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


Si desea verificar los archivos modificados, debe ocuparse de muchas cosas pequeñas, como cuál será el mejor para usar, por ejemplo, si desea verificar cuál de los archivos cambió, escriba

estado de git: mostrará los archivos con cambios

entonces, si quiere saber qué cambios se deben hacer, puede verificarse de distintas formas,

git diff - mostrará todos los cambios en todos los archivos

solo es bueno cuando solo se modifica un archivo

y si quiere verificar un archivo particular, use

git diff


  • Para enumerar todos los archivos cambiados con seguimiento no registrados:

    git diff --name-only

  • Para enumerar todos los archivos modificados con seguimiento escalonado :

    git diff --name-only --staged

  • Para enumerar todos los archivos modificados con seguimiento escalonados y sin instanciar :

    { git diff --name-only ; git diff --name-only --staged ; } | sort | uniq

  • Para enumerar todos los archivos sin seguimiento (los listados por git status , por lo que no incluye ningún archivo ignorado):

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

Si está utilizando esto en un script de shell, y desea verificar mediante programación si estos comandos devolvieron algo, le interesará la opción git diff --exit-code .