git log --pretty=short | git shortlog [-h] [-n] [-s] [-e] [-w] git shortlog [-n|--numbered] [-s|--summary] [-e|--email] [-w[<width>[,<indent1>[,<indent2>]]]] [<committish>…]


Summarizes git-log output in a format suitable for inclusion in release announcements. Each commit will be grouped by author and the first line of the commit message will be shown.

Additionally, "[PATCH]" will be stripped from the commit description.



Print a short usage message and exit.


Sort output according to the number of commits per author instead of author alphabetic order.


Suppress commit description and provide a commit count summary only.


Show the email address of each author.


Linewrap the output by wrapping each line at width. The first line of each entry is indented by indent1 spaces, and the second and subsequent lines are indented by indent2 spaces. width, indent1, and indent2 default to 76, 6 and 9 respectively.


If a file .mailmap exists at the toplevel of the repository, it is used to map an author email address to a canonical real name. This can be used to coalesce together commits by the same person where their name was spelled differently (whether with the same email address or not).

Each line in the file consists, in this order, of the canonical real name of an author, whitespace, and an email address (enclosed by < and >) to map to the name. Use hash # for comments, either on their own line, or after the email address.

A canonical name may appear in more than one line, associated with different email addresses, but it doesn’t make sense for a given address to appear more than once (if that happens, a later line overrides the earlier ones).

So, for example, if your history contains commits by two authors, Jane and Joe, whose names appear in the repository under several forms:

Joe Developer <>
Joe R. Developer <>
Jane Doe <>
Jane Doe <jane@laptop.(none)>
Jane D. <jane@desktop.(none)>

Then, supposing Joe wants his middle name initial used, and Jane prefers her family name fully spelled out, a proper .mailmap file would look like:

# Note how we don't need an entry for <jane@laptop.(none)>, because the
# real name of that author is correct already, and coalesced directly.
Jane Doe <jane@desktop.(none)>
Joe R. Developer <>


Written by Jeff Garzik <>


Documentation by Junio C Hamano.


Part of the git(1) suite