Pregunta Cómo hacer que log log muestre archivos como svn log -v


El registro de SVN tiene un modo "-v" que muestra los nombres de archivo de los archivos modificados en cada confirmación, así:

jes5199 $ svn log -v
-------------------------------------------------- ----------------------
r1 | jes5199 | 2007-01-03 14:39:41 -0800 (mié, 03 de enero de 2007) | 1 línea
Pasos cambiados:
   A / AUTORES
   A / COPIA
   A / ChangeLog
   A / EVOLUCIÓN
   A / INSTALAR
   A / MacOSX

¿Existe una forma rápida de obtener una lista de archivos modificados en cada confirmación en git?


768
2017-08-04 21:46


origen


Respuestas:


Para nombres de ruta completos de archivos modificados:

git log --name-only

Para conocer los nombres completos de las rutas y el estado de los archivos modificados:

git log --name-status

Para nombres de rutas abreviados y un diffstat de archivos modificados:

git log --stat

Hay muchas más opciones, echa un vistazo a los documentos.


1215
2017-08-04 21:48



NOTA:  git whatchanged está en desuso, use git log en lugar


134
2017-08-04 21:48



git show es también un gran comando.

Es algo así como svn diff, pero puedes pasarle una guía de compromiso y ver esa diferencia.


46
2018-03-22 00:02



Si desea obtener los nombres de los archivos solo sin el resto del mensaje de confirmación, puede usar:

git log --name-only --pretty=format: <branch name>

Esto se puede extender para usar las diversas opciones que contienen el nombre del archivo:

git log --name-status --pretty=format: <branch name>

git log --stat --pretty=format: <branch name>

Una cosa a tener en cuenta al usar este método es que hay algunas líneas en blanco en el resultado 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 garantía de que la última versión del control remoto ya se haya extraído. Por ejemplo, :

git log --name-only --pretty=format: my_local_branch --not origin/master

Mostraría todos los archivos que se han cambiado en la rama local, pero que aún no se han fusionado con la rama principal en el control remoto.


37
2017-07-11 02:06



Lo uso a diario para mostrar el historial con los archivos que han cambiado:

git log --stat --pretty=short --graph

Para que quede corto, agrega un alias en tu .gitconfig haciendo:

git config --global alias.ls 'log --stat --pretty=short --graph'

29
2018-05-25 00:24



Yo uso esto:

git log --name-status <branch>..<branch> | grep -E '^[A-Z]\b' | sort | uniq

que genera una lista de archivos solo y su estado (agregado, modificado, eliminado):

A   sites/api/branding/__init__.py
M   sites/api/branding/wtv/mod.py
...

12
2017-09-30 13:18



git diff --stat HEAD^! muestra los archivos modificados y los recuentos de líneas agregados / eliminados para el último compromiso (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 varios commits a la vez, así que creé mi propio script bash para eso:

#!/bin/bash
for ((i=0; i<=$1; i++))
do
    sha1=`git log -1 --skip=$i --pretty=format:%H`
    echo "HEAD~$i $sha1"
    git diff --stat HEAD~$(($i+1)) HEAD~$i 
done

Ser llamado eg. ./changed_files 99 para obtener los cambios en una forma concisa de HEAD a HEAD~99. Puede ser entubado, por ejemplo. a less.


7
2017-11-25 01:08