Comment avoir git log afficher les noms de fichiers comme svn log -v

Le journal de SVN a un mode “-v” qui produit les noms de fichiers des fichiers modifiés dans chaque validation, comme ceci:

  jes5199 $ svn log -v
 -------------------------------------------------- ----------------------
 r1 |  jes5199 |  2007-01-03 14:39:41 -0800 (mer. 03 janv. 2007) |  1 ligne
 Chemins modifiés:
    A / AUTEURS
    A / COPIE
    A / ChangeLog
    A / EVOLUTION
    A / INSTALL
    A / MacOSX

Existe-t-il un moyen rapide d’obtenir une liste des fichiers modifiés dans chaque validation dans git?

Pour les noms de chemin d’access complets des fichiers modifiés:

 git log --name-only 

Pour les noms de chemin d’access complets et l’état des fichiers modifiés:

 git log --name-status 

Pour les chemins d’access abrégés et un différent des fichiers modifiés:

 git log --stat 

Il y a beaucoup plus d’options, consultez les documents .

REMARQUE: git whatchanged est obsolète, utilisez plutôt git log

Les nouveaux utilisateurs sont invités à utiliser git-log [1] à la place. La commande whatchanged est essentiellement la même que git-log [1] mais affiche par défaut la sortie du format brut et ignore les fusions.

La commande est conservée principalement pour des raisons historiques; Les doigts de nombreuses personnes qui ont appris Git bien avant que Git git log été inventé en lisant la liste de diffusion du kernel Linux sont formés pour le taper.


Vous pouvez utiliser la commande git whatchanged --stat pour obtenir une liste des fichiers modifiés dans chaque validation (avec le message de validation).

Les références

git show est aussi une excellente commande.

C’est un peu comme svn diff , mais vous pouvez lui passer un commit-comm et voir ce diff.

Si vous souhaitez obtenir les noms de fichiers uniquement sans le rest du message de validation, vous pouvez utiliser:

 git log --name-only --pretty=format:  

Cela peut ensuite être étendu pour utiliser les différentes options qui contiennent le nom de fichier:

 git log --name-status --pretty=format:  git log --stat --pretty=format:  

Une chose à noter lorsque vous utilisez cette méthode est qu’il y a des lignes vierges dans la sortie qui devront être ignorées. Utiliser ceci peut être utile si vous souhaitez voir les fichiers qui ont été modifiés sur une twig locale, mais qui ne sont pas encore transférés dans une twig distante et que rien ne garantit que la dernière version de la télécommande est déjà installée. Par exemple :

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

Montrerait tous les fichiers qui ont été modifiés sur la twig locale, mais pas encore fusionnés à la twig principale de la télécommande.

Je l’utilise quotidiennement pour afficher l’historique avec des fichiers modifiés:

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

Pour faire court, ajoutez un alias dans votre .gitconfig en procédant comme .gitconfig :

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

J’utilise ceci:

 git log --name-status .. | grep -E '^[AZ]\b' | sort | uniq 

qui génère une liste de fichiers uniquement et leur état (ajouté, modifié, supprimé):

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

git diff --stat HEAD^! affiche les fichiers modifiés et le nombre de lignes ajouté / supprimé pour le dernier commit ( HEAD ).

Il me semble qu’il n’y a pas de commande unique pour obtenir une sortie concise constituée uniquement de noms de fichiers et que le nombre de lignes ajoutées et supprimées pour plusieurs commits à la fois, j’ai donc créé mon propre script bash pour cela:

 #!/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 

Être appelé par exemple. ./changed_files 99 pour obtenir les modifications sous une forme concise de HEAD à HEAD~99 . Peut être canalisé par exemple. à less