Je sais comment récupérer la date de dernière modification d'un seul fichier dans un référentiel git:
git log -1 --format="%ad" -- path/to/file
Existe-t-il un moyen simple et efficace de procéder de la même manière pour tous les fichiers présents dans le référentiel?
git ls-tree -r --name-only HEAD | while read filename; do echo "$(git log -1 --format="%ai" -- $filename) $filename"; done | sort
Cette approche fonctionne également avec les noms de fichiers contenant des espaces:
Exemple de sortie:
La sortie peut être triée par horodatage de modification en ajoutant
| sort
à la fin:la source
Ceci est un petit tweak de la réponse de Andrew M.. (Je n'ai pas pu commenter sa réponse.)
Placez le premier $ nom de fichier entre guillemets doubles , afin de prendre en charge les noms de fichiers avec des espaces incorporés.
Exemple de sortie:
J'apprécie que la solution d'Andrew (basée sur ls-tree ) fonctionne avec des référentiels nus! (Ce n'est pas le cas des solutions utilisant les fichiers ls.)
la source
Voici la version en coquille de poisson de la réponse d'Andrew M, pour ceux qui utilisent du poisson.
Je stocke cela comme une fonction de poisson pour un accès facile.
la source
Pour ceux d'entre nous qui utilisent Windows et PowerShell, la réponse d'Andrew M, avec le tweak lisible par ordinateur:
Exemple de sortie:
la source