Question Comment faire pour que git log affiche les noms de fichiers comme svn log -v


Le journal de SVN a un mode "-v" qui sort les noms de fichiers des fichiers modifiés dans chaque commit, 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 / ÉVOLUTION
   A / INSTALLER
   A / MacOSX

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


768
2017-08-04 21:46


origine


Réponses:


Pour les noms de chemin d'accès complet des fichiers modifiés:

git log --name-only

Pour les noms de chemin d'accès complet et l'état des fichiers modifiés:

git log --name-status

Pour les chemins abrégés et un diffstat de fichiers modifiés:

git log --stat

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


1215
2017-08-04 21:48



REMARQUE:  git whatchanged est obsolète, utilisez git log au lieu


134
2017-08-04 21:48



git show est aussi une excellente commande.

C'est un peu comme svn diff, mais vous pouvez lui passer un guid guid et voir que diff.


46
2018-03-22 00:02



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

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

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

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

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

Une chose à noter lors de l'utilisation de cette méthode est qu'il y a des lignes vides dans la sortie qui devront être ignorées. L'utilisation de ceci peut être utile si vous souhaitez voir les fichiers qui ont été modifiés sur une branche locale, mais qui ne sont pas encore envoyés à une branche distante et il n'y a aucune garantie que la dernière version de la télécommande a déjà été tirée. :

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

Affiche tous les fichiers qui ont été modifiés sur la branche locale, mais pas encore fusionnés avec la branche principale de la télécommande.


37
2017-07-11 02:06



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

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

Pour rester bref, ajoutez un alias dans votre .gitconfig en faisant:

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

29
2018-05-25 00:24



J'utilise ceci:

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

qui produit une liste de fichiers seulement et leur état (ajouté, modifié, supprimé):

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

12
2017-09-30 13:18



git diff --stat HEAD^! affiche les fichiers modifiés et ajoute / supprime les comptes de ligne pour la dernière validation (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 de nombre de lignes ajoutées et supprimées pour plusieurs validations à la fois, donc j'ai 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

Pour être appelé par exemple. ./changed_files 99 pour obtenir les changements dans un formulaire concis de HEAD à HEAD~99. Peut être canalisé par exemple. à less.


7
2017-11-25 01:08