1162 votes

Comment faire pour avoir la commande git log afficher les noms de fichier comme svn log -v

SVN log "-v" mode qui affiche les noms de fichier les fichiers modifiés dans chaque commit, comme suit:

jes5199$ svn log -v
------------------------------------------------------------------------
r1 | jes5199 | 2007-01-03 14:39:41 -0800 (Wed, 03 Jan 2007) | 1 ligne
Changé chemins:
 UN /DES AUTEURS
 A /COPIER
 A /ChangeLog
 A /EVOLUTION
 A /INSTALLER
 A /MacOSX

Est-il un moyen rapide pour obtenir une liste des fichiers modifiés dans chaque commit dans git?

1807voto

Charles Bailey Points 244082

Essayez l'une des opérations suivantes.

git log --name-status

ou

git log --name-only

ou

git log --stat

143voto

mipadi Points 135410

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

58voto

ptc Points 519

git show est également d'une grande maîtrise.

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

53voto

Hazok Points 825

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

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

Cela peut ensuite être étendu à utiliser les diverses 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 doivent être ignorés. L'utilisation de ce peut être utile si vous souhaitez voir les fichiers qui ont été modifiés sur une branche locale, mais n'est pas encore poussé à une branche distante et il n'y a aucune garantie de la plus récente à partir de la télécommande a déjà été tiré. Par exemple:

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

Serait de voir tous les fichiers qui ont été modifiés sur la branche locale, mais pas encore fusionnée à la branche master sur la télécommande.

9voto

nrz Points 6599

git diff --stat HEAD^! montre les fichiers modifiés et ajoutés/supprimés en ligne de compte pour le dernier commit (HEAD).

Il me semble qu'il n'y a pas de commande unique pour obtenir concis de sortie comprenant uniquement des noms de fichier et l'ajout et le retrait de la ligne de compte pour plusieurs engage à la fois, j'ai donc créé mon propre script bash pour que:

#!/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 une forme concise d' HEAD de HEAD~99. Peut être canalisée par exemple. d' less.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X