Commands to get commit statistics for a Git repository from the command line -
using git log, git shortlog and friends.
$ git log --format='%aN' | sort -u Example output:
Jane Bar
John Foo
Steve Baz
$ git shortlog -snExample output:
136 Jane Bar
 41 John Foo
 17 Steve Baz
$ git shortlog -sn --no-mergesExample output:
121 Jane Bar
 36 John Foo
 14 Steve Baz
Even though the --no-merges option is not documented for git shortlog, it works exactly as defined for git log.
$ git log --author="Vorname Nachname" --pretty=tformat: --numstat | awk '{inserted+=$1; deleted+=$2; delta+=$1-$2; ratio=deleted/inserted} END {printf "Commit stats:\n- Lines added (total)....  %s\n- Lines deleted (total)..  %s\n- Total lines (delta)....  %s\n- Add./Del. ratio (1:n)..  1 : %s\n", inserted, deleted, delta, ratio }' -Example output:
Commit stats:
- Lines added (total)....  4625
- Lines deleted (total)..  836
- Total lines (delta)....  3789
- Add./Del. ratio (1:n)..  1 : 0.180757
$ git log --shortstat --author="Vorname Nachname" | grep -E "fil(e|es) changed" | awk '{files+=$1; inserted+=$4; deleted+=$6; delta+=$4-$6; ratio=deleted/inserted} END {printf "Commit stats:\n- Files changed (total)..  %s\n- Lines added (total)....  %s\n- Lines deleted (total)..  %s\n- Total lines (delta)....  %s\n- Add./Del. ratio (1:n)..  1 : %s\n", files, inserted, deleted, delta, ratio }' -Example output:
Commit stats:
- Files changed (total)..  439
- Lines added (total)....  4625
- Lines deleted (total)..  836
- Total lines (delta)....  3789
- Add./Del. ratio (1:n)..  1 : 0.180757
Note: Both commands above also count merge commits. But to ignore them, one can simply use the --no-merges option again:
$ git log --author="Vorname Nachname" --pretty=tformat: --numstat --since="1 Jan, 2015" | awk ...
# or
$ git log --shortstat --author="Vorname Nachname" --since="1 Jan, 2015" | grep -E ...You can filter the output of the above commands, for example, by adding --until or --since or --before:
$ git log --author="Vorname Nachname" --pretty=tformat: --numstat --since="1 Jan, 2015" | awk ...
# or
$ git log --shortstat --author="Vorname Nachname" --since="1 Jan, 2015" | grep -E ...
Hey, Thanks for these commands!
I had 1 question though,
$ git log --shortstat --author="Vorname Nachname" --since="1 Jan, 2015" | grep -E ...Does this command give stats for the develop/main branch or the user's created branch?