Sie wollen die --stat
Option von git diff
oder, wenn Sie dies in einem Skript auswerten wollen, die --numstat
Option.
git diff --stat <commit-ish> <commit-ish>
--stat
erzeugt die für den Menschen lesbare Ausgabe, die Sie nach Zusammenführungen gewohnt sind; --numstat
erzeugt ein schönes Tabellenlayout, das Skripte leicht interpretieren können.
Ich habe irgendwie übersehen, dass Sie dies für mehrere Commits gleichzeitig tun wollten - das ist eine Aufgabe für git log
. Ron DeVera geht darauf ein, aber man kann noch viel mehr tun als das, was er erwähnt. Seit git log
intern die diff-Maschinerie aufruft, um die angeforderten Informationen zu drucken, können Sie ihr jede der diff stat-Optionen geben - nicht nur --shortstat
. Was Sie wahrscheinlich verwenden möchten, ist:
git log --author="Your name" --stat <commit1>..<commit2>
aber Sie können --numstat
o --shortstat
auch. git log
kann Commits auch auf andere Weise auswählen - sehen Sie sich die Dokumentation . Sie könnten an folgenden Dingen interessiert sein --since
(anstatt Commit-Bereiche anzugeben, wählen Sie einfach Commits seit letzter Woche aus) und --no-merges
(Merge-Commits führen eigentlich keine Änderungen ein), sowie die hübschen Ausgabeoptionen ( --pretty=oneline, short, medium, full...
).
Hier ist ein Einzeiler, um die gesamten Änderungen anstelle der Änderungen pro Commit aus dem Git-Protokoll zu erhalten (ändern Sie die Optionen für die Commit-Auswahl wie gewünscht - dies sind die Commits von Ihnen, von Commit1 bis 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)}'
(Sie müssen git log einige identifizierende Informationen über die Übergabe ausgeben lassen; ich habe den Hash willkürlich gewählt und dann awk benutzt, um nur die Zeilen mit drei Feldern herauszufiltern, die die Statistikinformationen enthalten)