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.

--date=<format>::
	Show dates formatted according to the given date string. (See
	the `--date` option in the "Commit Formatting" section of
	linkgit:git-log[1]). Useful with `--group=format:<format>`.

--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`.
 - `format:<format>`, any string accepted by the `--format` option of
   'git log'. (See the "PRETTY FORMATS" section of
   linkgit:git-log[1].)
+
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
