git-shortlog(1)
===============

NAME
----
git-shortlog - Summarize 'git log' output

SYNOPSIS
--------
[verse]
'git shortlog' [<options>] [<revision range>] [[--] <path>...]
git log --pretty=short | 'git shortlog' [<options>]

DESCRIPTION
-----------
Summarizes 'git log' output in a format suitable for inclusion
in release announcements. Each commit will be grouped by author and title.

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

If no revisions are passed on the command line and either standard input
is not a terminal or there is no current branch, 'git shortlog' will
output a summary of the log read from standard input, without
reference to the current repository.

OPTIONS
-------

-n::
--numbered::
	Sort output according to the number of commits per author instead
	of author alphabetic order.

-s::
--summary::
	Suppress commit description and provide a commit count summary only.

-e::
--email::
	Show the email address of each author.

--format[=<format>]::
	Instead of the commit subject, use some other information to
	describe each commit.  '<format>' can be any string accepted
	by the `--format` option of 'git log', such as '* [%h] %s'.
	(See the "PRETTY FORMATS" section of linkgit:git-log[1].)

	Each pretty-printed commit will be rewrapped before it is shown.

--group=<type>::
	Group commits based on `<type>`. If no `--group` option is
	specified, the default is `author`. `<type>` is one of:
+
--
 - `author`, commits are grouped by author
 - `committer`, commits are grouped by committer (the same as `-c`)
 - `trailer:<field>`, the `<field>` is interpreted as a case-insensitive
   commit message trailer (see linkgit:git-interpret-trailers[1]). For
   example, if your project uses `Reviewed-by` trailers, you might want
   to see who has been reviewing with
   `git shortlog -ns --group=trailer:reviewed-by`.
+
Note that commits that do not include the trailer will not be counted.
Likewise, commits with multiple trailers (e.g., multiple signoffs) may
be counted more than once (but only once per unique trailer value in
that commit).
+
Shortlog will attempt to parse each trailer value as a `name <email>`
identity. If successful, the mailmap is applied and the email is omitted
unless the `--email` option is specified. If the value cannot be parsed
as an identity, it will be taken literally and completely.
--
+
If `--group` is specified multiple times, commits are counted under each
value (but again, only once per unique value in that commit). For
example, `git shortlog --group=author --group=trailer:co-authored-by`
counts both authors and co-authors.

-c::
--committer::
	This is an alias for `--group=committer`.

-w[<width>[,<indent1>[,<indent2>]]]::
	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 width is `0` (zero) then indent the lines of the output without wrapping
them.

<revision range>::
	Show only commits in the specified revision range.  When no
	<revision range> is specified, it defaults to `HEAD` (i.e. the
	whole history leading to the current commit).  `origin..HEAD`
	specifies all the commits reachable from the current commit
	(i.e. `HEAD`), but not from `origin`. For a complete list of
	ways to spell <revision range>, see the "Specifying Ranges"
	section of linkgit:gitrevisions[7].

[--] <path>...::
	Consider only commits that are enough to explain how the files
	that match the specified paths came to be.
+
Paths may need to be prefixed with `--` to separate them from
options or the revision range, when confusion arises.

:git-shortlog: 1
include::rev-list-options.txt[]

MAPPING AUTHORS
---------------

See linkgit:gitmailmap[5].

Note that if `git shortlog` is run outside of a repository (to process
log contents on standard input), it will look for a `.mailmap` file in
the current directory.

GIT
---
Part of the linkgit:git[1] suite
