Skip to content

Instantly share code, notes, and snippets.

@Erreur32
Forked from eyecatchup/git-commit-log-stats.md
Created July 19, 2021 09:07
Show Gist options
  • Select an option

  • Save Erreur32/b51e90650f14234701aadcda15925fc4 to your computer and use it in GitHub Desktop.

Select an option

Save Erreur32/b51e90650f14234701aadcda15925fc4 to your computer and use it in GitHub Desktop.
Some commands to get git commit log statistics for a repository on the command line.

git log stats

Some commands to get git commit log statistics for a repository on the command line.

List repository contributors by author name (sorted by name):

$ git log --format='%aN' | sort -u 

Example output:

Jane Bar
John Foo
Steve Baz

List total commits by author (sorted by commit count):

$ git shortlog -sn

Example output:

136 Jane Bar
 41 John Foo
 17 Steve Baz

Ignore merge commits:

$ git shortlog -sn --no-merges

Example output:

121 Jane Bar
 36 John Foo
 14 Steve Baz

List file change stats by author:

$ 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- Ratio (1 add : n del)..  1 : %s\n", inserted, deleted, delta, ratio }' -

Example output:

Commit stats:
- Lines added (total)....  4625
- Lines deleted (total)..  836
- Total lines (delta)....  3789
- Ratio (1 add : n del)..  1 : 0.180757

Include file count:

$ 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- Ratio (1 add : n del)..  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
- Ratio (1 add : n del)..  1 : 0.180757

Filter stats by date:

You can filter the output of the above commands, for example, by adding --until or --since:

$ 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 ...




Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment