El registro de SVN tiene un modo "-v" que genera nombres de archivos modificados en cada confirmación, de esta manera:
jes5199 $ svn log -v -------------------------------------------------- ---------------------- r1 | jes5199 | 2007-01-03 14:39:41 -0800 (mié, 03 de enero de 2007) | 1 linea Caminos cambiados: A / AUTORES A / COPIA A / ChangeLog A / EVOLUCIÓN A / INSTALAR A / MacOSX
¿Hay una manera rápida de obtener una lista de archivos modificados en cada commit en git?
git log
no solo admite un-v
interruptor como muchos esperan / quieren? </gripe>Respuestas:
Para nombres de ruta completos de archivos modificados:
Para nombres completos de ruta y estado de archivos modificados:
Para nombres de ruta abreviados y un diffstat de archivos modificados:
Hay muchas más opciones, mira los documentos .
fuente
git log --numstat
. Vergit help log
para más opciones.git log --name-only --oneline
también es bastante elegante: una línea de color para la confirmación y un archivo por línea. stackoverflow.com/a/14227496/1995714git log --name-status --find-renames
para mostrar archivos renombrados en lugar de adición + eliminación.--stat
abrevia caminos largos; El ancho es configurable, pero los histogramas envueltos son más difíciles de leer. Otros formatos como--numstat
siempre imprimen rutas completas.--numstat
está en la línea 946 de esa página de manual a partir de git 2.22.00. Esas son muchas más opciones de las que la mayoría de la gente necesita.NOTA: está en desuso, use en su lugar
git whatchanged
git log
Puedes usar el comando
git whatchanged --stat
para obtener una lista de archivos que cambiaron en cada confirmación (junto con el mensaje de confirmación).Referencias
fuente
git show
También es un gran comando.Es algo así como
svn diff
, pero puedes pasarle un guid de compromiso y ver esa diferencia.fuente
Si desea obtener los nombres de archivo solo sin el resto del mensaje de confirmación, puede usar:
Esto se puede extender para usar las diversas opciones que contienen el nombre del archivo:
Una cosa a tener en cuenta al usar este método es que hay algunas líneas en blanco en la salida que deberán ignorarse. Usar esto puede ser útil si desea ver los archivos que se han cambiado en una sucursal local, pero aún no se ha enviado a una sucursal remota y no hay ninguna garantía de que lo último del remoto ya se haya incorporado. Por ejemplo :
Mostraría todos los archivos que se han cambiado en la rama local, pero que aún no se han fusionado con la rama maestra en el control remoto.
fuente
git log --stat --pretty="format:" $branchName
,. Entonces, por ejemplogit log --stat --pretty="format:" $(git rev-parse --abbrev-ref HEAD)
,. Mientras lo hago, aquí está el encantamiento exacto que terminó siendo relevante para mi propósito:git log --name-only --pretty="format: " master..$(git rev-parse --abbrev-ref HEAD)
Lo uso a diario para mostrar el historial con archivos que cambiaron:
Para que sea breve, agregue un alias en su
.gitconfig
haciendo:fuente
Yo uso esto:
que genera solo una lista de archivos y su estado (agregado, modificado, eliminado):
fuente
git diff --stat HEAD^!
muestra los archivos modificados y los recuentos de líneas agregados / eliminados para el último commit (HEAD
).Me parece que no hay un solo comando para obtener resultados concisos que consisten solo en nombres de archivos y recuentos de líneas agregados y eliminados para varias confirmaciones a la vez, por lo que creé mi propio script bash para eso:
Para ser llamado, por ejemplo.
./changed_files 99
para obtener los cambios de forma concisa deHEAD
aHEAD~99
. Se puede canalizar, por ejemplo. aless
.fuente
git diff --stat HEAD..master
para mostrar la diferencia entre HEAD y master, o no existía esto cuando publicaste tu respuesta en 2012?HEAD
ymaster
. Esas son dos cosas diferentes.Creo que la siguiente es la pantalla ideal para enumerar qué archivos cambiaron por confirmación en un formato conciso:
fuente
Un resumen de respuestas con salida de ejemplo
Esto está utilizando un repositorio local con cinco confirmaciones simples.
Créditos a @ CB-Bailey @ Peter-Suwara @Gaurav @ Omer-Dagan @xsor @Hazok @nrz @ptc
fuente
Otro comando útil sería
git diff-tree <hash>
donde el hash puede ser también un rango de hash (denotado por<old>..<new>
notación). Un ejemplo de salida:Los campos son:
modo fuente, modo dest, hash fuente, hash dest, estado, nombre de archivo
Los estados son los que esperaría: D (eliminado), A (agregado), M (modificado), etc. Consulte la página del manual para obtener una descripción completa.
fuente
Generalmente uso estos para obtener los registros:
fuente