Vous voulez le --stat
option de git diff
ou si vous cherchez à l'analyser dans un script, la fonction --numstat
option.
git diff --stat <commit-ish> <commit-ish>
--stat
produit la sortie lisible par l'homme que vous avez l'habitude de voir après les fusions ; --numstat
produit un joli tableau que les scripts peuvent facilement interpréter.
Je n'ai pas vu que vous cherchiez à faire cela sur plusieurs commits en même temps - c'est une tâche à confier à git log
. Ron DeVera en parle, mais vous pouvez en fait faire beaucoup plus que ce qu'il mentionne. Depuis git log
appelle en interne la machine diff afin d'imprimer les informations demandées, vous pouvez lui donner n'importe laquelle des options de la stat diff - pas seulement --shortstat
. Ce que vous voulez probablement utiliser est :
git log --author="Your name" --stat <commit1>..<commit2>
mais vous pouvez utiliser --numstat
o --shortstat
également. git log
peut également sélectionner des commits de diverses autres façons - jetez un coup d'œil à la section documentation . Vous pourriez être intéressé par des choses comme --since
(plutôt que de spécifier des plages de commits, il suffit de sélectionner les commits depuis la semaine dernière) et --no-merges
(les commits de fusion n'introduisent pas réellement de changements), ainsi que les jolies options de sortie ( --pretty=oneline, short, medium, full...
).
Voici une ligne simple pour obtenir les changements totaux au lieu des changements par commit à partir du journal git (changez les options de sélection des commits comme vous le souhaitez - ce sont les commits par vous, de commit1 à commit2) :
git log --numstat --pretty="%H" --author="Your Name" commit1..commit2 | awk 'NF==3 {plus+=$1; minus+=$2} END {printf("+%d, -%d\n", plus, minus)}'
(vous devez laisser git log imprimer des informations d'identification sur le commit ; j'ai choisi arbitrairement le hash, puis j'ai utilisé awk pour ne retenir que les lignes avec trois champs, qui sont celles avec les informations stat)