Sé cómo recuperar la última fecha de modificación de un solo archivo en un repositorio git:
git log -1 --format="%ad" -- path/to/file
¿Existe una manera simple y eficiente de hacer lo mismo para todos los archivos actualmente presentes en el repositorio?
git ls-tree -r --name-only HEAD | while read filename; do echo "$(git log -1 --format="%ai" -- $filename) $filename"; done | sort
Este enfoque también funciona con nombres de archivo que contienen espacios:
Salida de ejemplo:
La salida se puede ordenar por marca de tiempo de modificación agregando
| sort
al final:fuente
Este es un pequeño ajuste de la respuesta de Andrew M. (No pude comentar su respuesta).
Envuelva el primer $ nombre de archivo entre comillas dobles , para admitir nombres de archivo con espacios incrustados.
Salida de muestra:
¡Aprecio que la solución de Andrew (basada en ls-tree ) funciona con repositorios desnudos! (Esto no es cierto para las soluciones que usan archivos ls).
fuente
Aquí está la versión de concha de pescado de la respuesta de Andrew M, para aquellos que usan pescado.
Lo guardo como una función de pez para facilitar el acceso.
fuente
Para aquellos de nosotros que usamos Windows y PowerShell, la respuesta de Andrew M, con el ajuste legible por computadora:
Salida de ejemplo:
fuente