working - Cómo tener git log mostrar nombres de archivos como svn log-v




unable to determine upstream svn information from working tree history (5)

El registro de SVN tiene un modo "-v" que genera nombres de archivos de archivos cambiados en cada confirmación, de esta manera:

jes5199$ svn log -v
------------------------------------------------------------------------
r1 |   jes5199 | 2007-01-03 14:39:41 -0800 (Wed, 03 Jan 2007) | 1 line
Changed paths:
   A /AUTHORS
   A /COPYING
   A /ChangeLog
   A /EVOLUTION
   A /INSTALL
   A /MacOSX

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


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

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

Para que sea breve, agregue un alias en su .gitconfig haciendo:

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

Para nombres de ruta completos de archivos modificados:

git log --name-only

Para los nombres de ruta completos y el estado de los archivos modificados:

git log --name-status

Para nombres de rutas abreviados y una diferencia de archivos modificados:

git log --stat

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


Yo uso esto:

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

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

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

git diff --stat HEAD^! muestra los archivos modificados y los conteos de líneas agregados / eliminados para el último compromiso ( HEAD ).

Me parece que no hay un solo comando para obtener resultados concisos que consistan solo en nombres de archivos y sumas de líneas agregadas y eliminadas para varios confirmaciones a la vez, así que creé mi propio script de 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

Para ser llamado por ejemplo. ./changed_files 99 para obtener los cambios en forma concisa de HEAD a HEAD~99 . Se puede canalizar por ejemplo. a less


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

Se recomienda a los nuevos usuarios que usen git-log [1] en su lugar. El comando whatchanged es esencialmente el mismo que git-log [1], pero por defecto muestra la salida del formato en bruto diff y omite las fusiones.

El comando se mantiene principalmente por razones históricas; los dedos de muchas personas que aprendieron Git mucho antes de que Git git log fuera inventado leyendo la lista de correo del kernel de Linux están capacitados para escribirlo.

Puede 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





logging