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
.