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

NAME
----
git-shortlog - Summarize `git log` output

SYNOPSIS
--------
[synopsis]
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`.
+
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.

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

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
