884 votes

Comment calculer le nombre de lignes modifiées entre deux commits dans Git ?

Existe-t-il un moyen simple de calculer le nombre de lignes modifiées entre deux commits dans Git ?

Je sais que je peux faire un git diff et compter les lignes, mais cela semble fastidieux. J'aimerais également savoir comment je peux faire cela, en incluant uniquement mes propres commits dans le décompte des lignes.

18voto

nmtri Points 314

Une autre façon d'obtenir tous les journaux de modifications dans une période de temps donnée.

git log --author="Tri Nguyen" --oneline --shortstat --before="2017-03-20" --after="2017-03-10"

Sortie :

2637cc736 Revert changed code
 1 file changed, 5 insertions(+), 5 deletions(-)
ba8d29402 Fix review
 2 files changed, 4 insertions(+), 11 deletions(-)

Avec un long contenu de sortie, vous pouvez exporter vers un fichier pour une meilleure lisibilité.

git log --author="Tri Nguyen" --oneline --shortstat --before="2017-03-20" --after="2017-03-10" > /mnt/MyChangeLog.txt

16voto

Brian Mortenson Points 2355

Je viens de résoudre ce problème pour moi-même, je vais donc partager ce que j'ai trouvé. Voici le résultat final :

> git summary --since=yesterday
total: 114 file changes, 13800 insertions(+) 638 deletions(-)

La commande sous-jacente ressemble à ceci :

git log --numstat --format="" "$@" | awk '{files += 1}{ins += $1}{del += $2} END{print "total: "files" files, "ins" insertions(+) "del" deletions(-)"}'

Notez le $@ dans la commande log pour transmettre vos arguments tels que --author="Brian" o --since=yesterday .

Echapper à l'awk pour le mettre dans un alias git était désordonné, donc à la place, je l'ai mis dans un exécutable script sur mon chemin ( ~/bin/git-stat-sum ), puis utilisé le script dans l'alias dans mon .gitconfig :

[alias]
    summary = !git-stat-sum \"$@\"

Et ça marche très bien. Une dernière chose à noter est que file changes est le nombre de modifications apportées aux fichiers, et non le nombre de fichiers uniques modifiés. C'est ce que je cherchais, mais ce n'est peut-être pas ce que vous attendez.

Voici un ou deux autres exemples

git summary --author=brian
git summary master..dev
# combine them as you like
git summary --author=brian master..dev
git summary --all

Vraiment, vous devriez être capable de remplacer n'importe quel git log avec git summary .

7voto

Spyryto Points 350

De brèves statistiques sur le dernier engagement :

git diff --shortstat HEAD~1 HEAD

Dans mon cas, cela me donne les informations suivantes :

 254 files changed, 37 insertions(+), 10773 deletions(-)

Les insertions et les suppressions sont des lignes affectées.

6voto

nibinbhaskar Points 77
git log --numstat 

ne vous donne que les chiffres

4voto

sinsadmim Points 21

Si vous voulez voir les changements incluant le nombre de lignes qui ont changé entre votre branche et une autre branche,

git diff the_other_branch_name --stat

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