Esto también funciona para git show. git show --name-only SHA1.
August Lilleaas el
78
git diff --name-status [TAG|SHA1]muestra qué operaciones se realizaron también en los archivos
reconbot
2
también puede hacer: git diff --name-only HEAD @ {3} HEAD @ {0} para las confirmaciones exactas que desea comparar.
b01
77
@AugustLilleaas en realidad usando show solo mostrará los 2 commits específicos, si tienes commits entre esos 2 se quedarán fuera
chrisan
44
Como se indica a continuación, git diff --name-statusno 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-statusda un poco más de información, pero todavía agradable y denso ... que será mi nuevo comando Goto;)
travc
417
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 logversió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
Resulta que digo git diff --name-status y dio el 'archivo agregado'.
aartista
1
Para git log, debe tener dos puntos entre los SHA, como SHA1..SHA2, y el segundo SHA no es opcional, por lo que debería verse así: git log --name-status --oneline [SHA1 .. SHA2]
twasbrillig
¿Hay alguna manera de excluir ciertos archivos / ciertos tipos de archivos?
agosto
3
La --relative[=<path>]opción puede ayudarte, no estoy seguro. De lo contrario siempre hay | erep -v '(.tmp|.foo|.dontwant)$'...
¡Esto fue realmente útil! Ojalá pudiera decir simplemente git diffstatus mastero similar, que desencadena lo anterior.
oma
3
O git show --pretty=format: --name-only origin/master...
sschuberth
Es posible que no pueda convertirlo en un alias git, pero definitivamente puede ponerlo en su .bashrc.
Fred
3
O incluso más simple: git diff --name-only HEAD...master(tenga en cuenta los tres puntos). Para una explicación detallada, ver aquí .
ostrokach
1
Parece la respuesta correcta en su mayoría! Simple git diff --name-only master..branchno 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-baseque tenga 228 vs 171)
x'ES
21
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 greplata puede refinar aún más las cosas:
Las expresiones regulares son agradables y pueden hacer casi cualquier cosa. Sin embargo, en este caso, también existe el --diff-filterque proporciona esta funcionalidad de forma nativa, lo que significa menos posibilidades de resultados incorrectos (por ejemplo, falsos positivos)
Jasper
8
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, showfilesdesde su repositorio git.
alias showfiles='git show --pretty="format:" --name-only'
También tenga en cuenta que si solo desea ver los archivos modificados entre la última confirmación y la anterior. Esto funciona bien:git show --name-only
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=onelinesolo me da el SHA y el mensaje de confirmación usando git 2.10.1
maldito
3
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
$ 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.
Respuestas:
donde solo necesita incluir suficiente SHA para identificar los commits. También puedes hacer, por ejemplo
para ver las diferencias entre el décimo último commit y el quinto último (más o menos).
fuente
git show --name-only SHA1
.git diff --name-status [TAG|SHA1]
muestra qué operaciones se realizaron también en los archivosgit 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 haciendogit show --name-status
da un poco más de información, pero todavía agradable y denso ... que será mi nuevo comando Goto;)es como --name-only, excepto que obtienes un prefijo simple que te dice qué pasó con el archivo (modificado, eliminado, agregado ...)
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 lagit 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
fuente
--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
:También hay
--numstat
y
--shortstat
fuente
Pero para ver los archivos cambiados entre su rama y su ancestro común con otra rama (por ejemplo, origen / maestro):
fuente
git diffstatus master
o similar, que desencadena lo anterior.git show --pretty=format: --name-only origin/master..
.git diff --name-only HEAD...master
(tenga en cuenta los tres puntos). Para una explicación detallada, ver aquí .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. (sinmerge-base
que tenga 228 vs 171)Para complementar la respuesta de @ artfulrobot, si desea mostrar los archivos modificados entre dos ramas:
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:Eso mostrará solo los archivos agregados
myotherbranch
.fuente
--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 ejecutesource ~/.bash_profile
; ahora cada vez que necesite ver los archivos actualizados en la última confirmación, ejecución,showfiles
desde su repositorio git.fuente
git config --global alias.showfiles 'show --pretty="format:" --name-only'
para hacergit showfiles
.Esto mostrará los cambios en los archivos:
fuente
También tenga en cuenta que si solo desea ver los archivos modificados entre la última confirmación y la anterior. Esto funciona bien:
git show --name-only
fuente
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.
fuente
git log --pretty=oneline
solo me da el SHA y el mensaje de confirmación usando git 2.10.1Como artfulrobot dijo en su respuesta:
Mi ejemplo:
fuente
Solo para alguien que necesita enfocarse solo en archivos Java, esta es mi solución:
fuente
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 deformat:
eliminar el espacio separador entre confirmaciones.fuente
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.fuente