'\" t
.\"     Title: git-shortlog
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets v1.79.2 <http://docbook.sf.net/>
.\"      Date: 2025-07-24
.\"    Manual: Git Manual
.\"    Source: Git 2.50.1.461.ge4ef0485fd
.\"  Language: English
.\"
.TH "GIT\-SHORTLOG" "1" "2025-07-24" "Git 2\&.50\&.1\&.461\&.ge4ef04" "Git Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
git-shortlog \- Summarize \*(Aqgit log\*(Aq output
.SH "SYNOPSIS"
.sp
.nf
\fIgit shortlog\fR [<options>] [<revision\-range>] [[\-\-] <path>\&...\:]
git log \-\-pretty=short | \fIgit shortlog\fR [<options>]
.fi
.SH "DESCRIPTION"
.sp
Summarizes \fIgit log\fR output in a format suitable for inclusion in release announcements\&. Each commit will be grouped by author and title\&.
.sp
Additionally, "[PATCH]" will be stripped from the commit description\&.
.sp
If no revisions are passed on the command line and either standard input is not a terminal or there is no current branch, \fIgit shortlog\fR will output a summary of the log read from standard input, without reference to the current repository\&.
.SH "OPTIONS"
.PP
\-n, \-\-numbered
.RS 4
Sort output according to the number of commits per author instead of author alphabetic order\&.
.RE
.PP
\-s, \-\-summary
.RS 4
Suppress commit description and provide a commit count summary only\&.
.RE
.PP
\-e, \-\-email
.RS 4
Show the email address of each author\&.
.RE
.PP
\-\-format[=<format>]
.RS 4
Instead of the commit subject, use some other information to describe each commit\&.
\fI<format>\fR
can be any string accepted by the
\fB\-\-format\fR
option of
\fIgit log\fR, such as
\fI* [%h] %s\fR\&. (See the "PRETTY FORMATS" section of
\fBgit-log\fR(1)\&.)
.sp
.if n \{\
.RS 4
.\}
.nf
Each pretty\-printed commit will be rewrapped before it is shown\&.
.fi
.if n \{\
.RE
.\}
.RE
.PP
\-\-date=<format>
.RS 4
Show dates formatted according to the given date string\&. (See the
\fB\-\-date\fR
option in the "Commit Formatting" section of
\fBgit-log\fR(1))\&. Useful with
\fB\-\-group=format:\fR\fI<format>\fR\&.
.RE
.PP
\-\-group=<type>
.RS 4
Group commits based on
\fI<type>\fR\&. If no
\fB\-\-group\fR
option is specified, the default is
\fBauthor\fR\&.
\fI<type>\fR
is one of:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBauthor\fR, commits are grouped by author
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBcommitter\fR, commits are grouped by committer (the same as
\fB\-c\fR)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBtrailer:\fR\fI<field>\fR, the
\fI<field>\fR
is interpreted as a case\-insensitive commit message trailer (see
\fBgit-interpret-trailers\fR(1))\&. For example, if your project uses
\fBReviewed\-by\fR
trailers, you might want to see who has been reviewing with
\fBgit\fR
\fBshortlog\fR
\fB\-ns\fR
\fB\-\-group=trailer:reviewed\-by\fR\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBformat:\fR\fI<format>\fR, any string accepted by the
\fB\-\-format\fR
option of
\fIgit log\fR\&. (See the "PRETTY FORMATS" section of
\fBgit-log\fR(1)\&.)
.sp
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)\&.
.sp
Shortlog will attempt to parse each trailer value as a
\fBname\fR
\fI<email>\fR
identity\&. If successful, the mailmap is applied and the email is omitted unless the
\fB\-\-email\fR
option is specified\&. If the value cannot be parsed as an identity, it will be taken literally and completely\&.
.RE
.sp
If
\fB\-\-group\fR
is specified multiple times, commits are counted under each value (but again, only once per unique value in that commit)\&. For example,
\fBgit\fR
\fBshortlog\fR
\fB\-\-group=author\fR
\fB\-\-group=trailer:co\-authored\-by\fR
counts both authors and co\-authors\&.
.RE
.PP
\-c, \-\-committer
.RS 4
This is an alias for
\fB\-\-group=committer\fR\&.
.RE
.PP
\-w[<width>[,<indent1>[,<indent2>]]]
.RS 4
Linewrap the output by wrapping each line at
\fBwidth\fR\&. The first line of each entry is indented by
\fBindent1\fR
spaces, and the second and subsequent lines are indented by
\fBindent2\fR
spaces\&.
\fBwidth\fR,
\fBindent1\fR, and
\fBindent2\fR
default to 76, 6 and 9 respectively\&.
.sp
If width is
\fB0\fR
(zero) then indent the lines of the output without wrapping them\&.
.RE
.PP
<revision\-range>
.RS 4
Show only commits in the specified revision range\&. When no <revision\-range> is specified, it defaults to
\fBHEAD\fR
(i\&.e\&. the whole history leading to the current commit)\&.
\fBorigin\fR\fB\&.\&.\fR\fBHEAD\fR
specifies all the commits reachable from the current commit (i\&.e\&.
\fBHEAD\fR), but not from
\fBorigin\fR\&. For a complete list of ways to spell <revision\-range>, see the "Specifying Ranges" section of
\fBgitrevisions\fR(7)\&.
.RE
.PP
[\-\-] <path>\&...\:
.RS 4
Consider only commits that are enough to explain how the files that match the specified paths came to be\&.
.sp
Paths may need to be prefixed with
\fB\-\-\fR
to separate them from options or the revision range, when confusion arises\&.
.RE
.SS "Commit Limiting"
.sp
Besides specifying a range of commits that should be listed using the special notations explained in the description, additional commit limiting may be applied\&.
.sp
Using more options generally further limits the output (e\&.g\&. \fB\-\-since=\fR\fI<date1>\fR limits to commits newer than \fI<date1>\fR, and using it with \fB\-\-grep=\fR\fI<pattern>\fR further limits to commits whose log message has a line that matches \fI<pattern>\fR), unless otherwise noted\&.
.sp
Note that these are applied before commit ordering and formatting options, such as \fB\-\-reverse\fR\&.
.PP
\fB\-\fR\fI<number>\fR, \fB\-n\fR \fI<number>\fR, \fB\-\-max\-count=\fR\fI<number>\fR
.RS 4
Limit the output to
\fI<number>\fR
commits\&.
.RE
.PP
\fB\-\-skip=\fR\fI<number>\fR
.RS 4
Skip
\fI<number>\fR
commits before starting to show the commit output\&.
.RE
.PP
\fB\-\-since=\fR\fI<date>\fR, \fB\-\-after=\fR\fI<date>\fR
.RS 4
Show commits more recent than
\fI<date>\fR\&.
.RE
.PP
\fB\-\-since\-as\-filter=\fR\fI<date>\fR
.RS 4
Show all commits more recent than
\fI<date>\fR\&. This visits all commits in the range, rather than stopping at the first commit which is older than
\fI<date>\fR\&.
.RE
.PP
\fB\-\-until=\fR\fI<date>\fR, \fB\-\-before=\fR\fI<date>\fR
.RS 4
Show commits older than
\fI<date>\fR\&.
.RE
.PP
\fB\-\-author=\fR\fI<pattern>\fR, \fB\-\-committer=\fR\fI<pattern>\fR
.RS 4
Limit the commits output to ones with author/committer header lines that match the
\fI<pattern>\fR
regular expression\&. With more than one
\fB\-\-author=\fR\fI<pattern>\fR, commits whose author matches any of the
\fI<pattern>\fR
are chosen (similarly for multiple
\fB\-\-committer=\fR\fI<pattern>\fR)\&.
.RE
.PP
\fB\-\-grep\-reflog=\fR\fI<pattern>\fR
.RS 4
Limit the commits output to ones with reflog entries that match the
\fI<pattern>\fR
regular expression\&. With more than one
\fB\-\-grep\-reflog\fR, commits whose reflog message matches any of the given patterns are chosen\&. It is an error to use this option unless
\fB\-\-walk\-reflogs\fR
is in use\&.
.RE
.PP
\fB\-\-grep=\fR\fI<pattern>\fR
.RS 4
Limit the commits output to ones with a log message that matches the
\fI<pattern>\fR
regular expression\&. With more than one
\fB\-\-grep=\fR\fI<pattern>\fR, commits whose message matches any of the
\fI<pattern>\fR
are chosen (but see
\fB\-\-all\-match\fR)\&.
.sp
When
\fB\-\-notes\fR
is in effect, the message from the notes is matched as if it were part of the log message\&.
.RE
.PP
\fB\-\-all\-match\fR
.RS 4
Limit the commits output to ones that match all given
\fB\-\-grep\fR, instead of ones that match at least one\&.
.RE
.PP
\fB\-\-invert\-grep\fR
.RS 4
Limit the commits output to ones with a log message that do not match the
\fI<pattern>\fR
specified with
\fB\-\-grep=\fR\fI<pattern>\fR\&.
.RE
.PP
\fB\-i\fR, \fB\-\-regexp\-ignore\-case\fR
.RS 4
Match the regular expression limiting patterns without regard to letter case\&.
.RE
.PP
\fB\-\-basic\-regexp\fR
.RS 4
Consider the limiting patterns to be basic regular expressions; this is the default\&.
.RE
.PP
\fB\-E\fR, \fB\-\-extended\-regexp\fR
.RS 4
Consider the limiting patterns to be extended regular expressions instead of the default basic regular expressions\&.
.RE
.PP
\fB\-F\fR, \fB\-\-fixed\-strings\fR
.RS 4
Consider the limiting patterns to be fixed strings (don\(cqt interpret pattern as a regular expression)\&.
.RE
.PP
\fB\-P\fR, \fB\-\-perl\-regexp\fR
.RS 4
Consider the limiting patterns to be Perl\-compatible regular expressions\&.
.sp
Support for these types of regular expressions is an optional compile\-time dependency\&. If Git wasn\(cqt compiled with support for them providing this option will cause it to die\&.
.RE
.PP
\fB\-\-remove\-empty\fR
.RS 4
Stop when a given path disappears from the tree\&.
.RE
.PP
\fB\-\-merges\fR
.RS 4
Print only merge commits\&. This is exactly the same as
\fB\-\-min\-parents=2\fR\&.
.RE
.PP
\fB\-\-no\-merges\fR
.RS 4
Do not print commits with more than one parent\&. This is exactly the same as
\fB\-\-max\-parents=1\fR\&.
.RE
.PP
\fB\-\-min\-parents=\fR\fI<number>\fR, \fB\-\-max\-parents=\fR\fI<number>\fR, \fB\-\-no\-min\-parents\fR, \fB\-\-no\-max\-parents\fR
.RS 4
Show only commits which have at least (or at most) that many parent commits\&. In particular,
\fB\-\-max\-parents=1\fR
is the same as
\fB\-\-no\-merges\fR,
\fB\-\-min\-parents=2\fR
is the same as
\fB\-\-merges\fR\&.
\fB\-\-max\-parents=0\fR
gives all root commits and
\fB\-\-min\-parents=3\fR
all octopus merges\&.
.sp
\fB\-\-no\-min\-parents\fR
and
\fB\-\-no\-max\-parents\fR
reset these limits (to no limit) again\&. Equivalent forms are
\fB\-\-min\-parents=0\fR
(any commit has 0 or more parents) and
\fB\-\-max\-parents=\-1\fR
(negative numbers denote no upper limit)\&.
.RE
.PP
\fB\-\-first\-parent\fR
.RS 4
When finding commits to include, follow only the first parent commit upon seeing a merge commit\&. This option can give a better overview when viewing the evolution of a particular topic branch, because merges into a topic branch tend to be only about adjusting to updated upstream from time to time, and this option allows you to ignore the individual commits brought in to your history by such a merge\&.
.RE
.PP
\fB\-\-exclude\-first\-parent\-only\fR
.RS 4
When finding commits to exclude (with a
\fI^\fR), follow only the first parent commit upon seeing a merge commit\&. This can be used to find the set of changes in a topic branch from the point where it diverged from the remote branch, given that arbitrary merges can be valid topic branch changes\&.
.RE
.PP
\fB\-\-not\fR
.RS 4
Reverses the meaning of the
\fI^\fR
prefix (or lack thereof) for all following revision specifiers, up to the next
\fB\-\-not\fR\&. When used on the command line before \-\-stdin, the revisions passed through stdin will not be affected by it\&. Conversely, when passed via standard input, the revisions passed on the command line will not be affected by it\&.
.RE
.PP
\fB\-\-all\fR
.RS 4
Pretend as if all the refs in
\fBrefs/\fR, along with
\fBHEAD\fR, are listed on the command line as
\fI<commit>\fR\&.
.RE
.PP
\fB\-\-branches\fR[\fB=\fR\fI<pattern>\fR]
.RS 4
Pretend as if all the refs in
\fBrefs/heads\fR
are listed on the command line as
\fI<commit>\fR\&. If
\fI<pattern>\fR
is given, limit branches to ones matching given shell glob\&. If
\fI<pattern>\fR
lacks
\fI?\fR,
\fI*\fR, or
\fI[\fR,
\fI/*\fR
at the end is implied\&.
.RE
.PP
\fB\-\-tags\fR[\fB=\fR\fI<pattern>\fR]
.RS 4
Pretend as if all the refs in
\fBrefs/tags\fR
are listed on the command line as
\fI<commit>\fR\&. If
\fI<pattern>\fR
is given, limit tags to ones matching given shell glob\&. If pattern lacks
\fI?\fR,
\fI*\fR, or
\fI[\fR,
\fI/*\fR
at the end is implied\&.
.RE
.PP
\fB\-\-remotes\fR[\fB=\fR\fI<pattern>\fR]
.RS 4
Pretend as if all the refs in
\fBrefs/remotes\fR
are listed on the command line as
\fI<commit>\fR\&. If
\fI<pattern>\fR
is given, limit remote\-tracking branches to ones matching given shell glob\&. If pattern lacks
\fI?\fR,
\fI*\fR, or
\fI[\fR,
\fI/*\fR
at the end is implied\&.
.RE
.PP
\fB\-\-glob=\fR\fI<glob\-pattern>\fR
.RS 4
Pretend as if all the refs matching shell glob
\fI<glob\-pattern>\fR
are listed on the command line as
\fI<commit>\fR\&. Leading
\fIrefs/\fR, is automatically prepended if missing\&. If pattern lacks
\fI?\fR,
\fI*\fR, or
\fI[\fR,
\fI/*\fR
at the end is implied\&.
.RE
.PP
\fB\-\-exclude=\fR\fI<glob\-pattern>\fR
.RS 4
Do not include refs matching
\fI<glob\-pattern>\fR
that the next
\fB\-\-all\fR,
\fB\-\-branches\fR,
\fB\-\-tags\fR,
\fB\-\-remotes\fR, or
\fB\-\-glob\fR
would otherwise consider\&. Repetitions of this option accumulate exclusion patterns up to the next
\fB\-\-all\fR,
\fB\-\-branches\fR,
\fB\-\-tags\fR,
\fB\-\-remotes\fR, or
\fB\-\-glob\fR
option (other options or arguments do not clear accumulated patterns)\&.
.sp
The patterns given should not begin with
\fBrefs/heads\fR,
\fBrefs/tags\fR, or
\fBrefs/remotes\fR
when applied to
\fB\-\-branches\fR,
\fB\-\-tags\fR, or
\fB\-\-remotes\fR, respectively, and they must begin with
\fBrefs/\fR
when applied to
\fB\-\-glob\fR
or
\fB\-\-all\fR\&. If a trailing
\fI/*\fR
is intended, it must be given explicitly\&.
.RE
.PP
\fB\-\-exclude\-hidden=\fR(\fBfetch\fR|\fBreceive\fR|\fBuploadpack\fR)
.RS 4
Do not include refs that would be hidden by
\fBgit\-fetch\fR,
\fBgit\-receive\-pack\fR
or
\fBgit\-upload\-pack\fR
by consulting the appropriate
\fBfetch\&.hideRefs\fR,
\fBreceive\&.hideRefs\fR
or
\fBuploadpack\&.hideRefs\fR
configuration along with
\fBtransfer\&.hideRefs\fR
(see
\fBgit-config\fR(1))\&. This option affects the next pseudo\-ref option
\fB\-\-all\fR
or
\fB\-\-glob\fR
and is cleared after processing them\&.
.RE
.PP
\fB\-\-reflog\fR
.RS 4
Pretend as if all objects mentioned by reflogs are listed on the command line as
\fI<commit>\fR\&.
.RE
.PP
\fB\-\-alternate\-refs\fR
.RS 4
Pretend as if all objects mentioned as ref tips of alternate repositories were listed on the command line\&. An alternate repository is any repository whose object directory is specified in
\fBobjects/info/alternates\fR\&. The set of included objects may be modified by
\fBcore\&.alternateRefsCommand\fR, etc\&. See
\fBgit-config\fR(1)\&.
.RE
.PP
\fB\-\-single\-worktree\fR
.RS 4
By default, all working trees will be examined by the following options when there are more than one (see
\fBgit-worktree\fR(1)):
\fB\-\-all\fR,
\fB\-\-reflog\fR
and
\fB\-\-indexed\-objects\fR\&. This option forces them to examine the current working tree only\&.
.RE
.PP
\fB\-\-ignore\-missing\fR
.RS 4
Upon seeing an invalid object name in the input, pretend as if the bad input was not given\&.
.RE
.PP
\fB\-\-bisect\fR
.RS 4
Pretend as if the bad bisection ref
\fBrefs/bisect/bad\fR
was listed and as if it was followed by
\fB\-\-not\fR
and the good bisection refs
\fBrefs/bisect/good\-*\fR
on the command line\&.
.RE
.PP
\fB\-\-stdin\fR
.RS 4
In addition to getting arguments from the command line, read them from standard input as well\&. This accepts commits and pseudo\-options like
\fB\-\-all\fR
and
\fB\-\-glob=\fR\&. When a
\fB\-\-\fR
separator is seen, the following input is treated as paths and used to limit the result\&. Flags like
\fB\-\-not\fR
which are read via standard input are only respected for arguments passed in the same way and will not influence any subsequent command line arguments\&.
.RE
.PP
\fB\-\-cherry\-mark\fR
.RS 4
Like
\fB\-\-cherry\-pick\fR
(see below) but mark equivalent commits with
\fB=\fR
rather than omitting them, and inequivalent ones with
\fB+\fR\&.
.RE
.PP
\fB\-\-cherry\-pick\fR
.RS 4
Omit any commit that introduces the same change as another commit on the
\(lqother side\(rq
when the set of commits are limited with symmetric difference\&.
.sp
For example, if you have two branches,
\fBA\fR
and
\fBB\fR, a usual way to list all commits on only one side of them is with
\fB\-\-left\-right\fR
(see the example below in the description of the
\fB\-\-left\-right\fR
option)\&. However, it shows the commits that were cherry\-picked from the other branch (for example,
\(lq3rd on b\(rq
may be cherry\-picked from branch A)\&. With this option, such pairs of commits are excluded from the output\&.
.RE
.PP
\fB\-\-left\-only\fR, \fB\-\-right\-only\fR
.RS 4
List only commits on the respective side of a symmetric difference, i\&.e\&. only those which would be marked < resp\&. > by
\fB\-\-left\-right\fR\&.
.sp
For example,
\fB\-\-cherry\-pick\fR
\fB\-\-right\-only\fR
\fBA\fR\fB\&.\&.\&.\fR\fBB\fR
omits those commits from
\fBB\fR
which are in
\fBA\fR
or are patch\-equivalent to a commit in
\fBA\fR\&. In other words, this lists the
\fB+\fR
commits from
\fBgit\fR
\fBcherry\fR
\fBA\fR
\fBB\fR\&. More precisely,
\fB\-\-cherry\-pick\fR
\fB\-\-right\-only\fR
\fB\-\-no\-merges\fR
gives the exact list\&.
.RE
.PP
\fB\-\-cherry\fR
.RS 4
A synonym for
\fB\-\-right\-only\fR
\fB\-\-cherry\-mark\fR
\fB\-\-no\-merges\fR; useful to limit the output to the commits on our side and mark those that have been applied to the other side of a forked history with
\fBgit\fR
\fBlog\fR
\fB\-\-cherry\fR
\fBupstream\fR\fB\&.\&.\&.\fR\fBmybranch\fR, similar to
\fBgit\fR
\fBcherry\fR
\fBupstream\fR
\fBmybranch\fR\&.
.RE
.PP
\fB\-g\fR, \fB\-\-walk\-reflogs\fR
.RS 4
Instead of walking the commit ancestry chain, walk reflog entries from the most recent one to older ones\&. When this option is used you cannot specify commits to exclude (that is,
\fB^\fR\fI<commit>\fR,
\fI<commit1>\fR\fB\&.\&.\fR\fI<commit2>\fR, and
\fI<commit1>\fR\fB\&.\&.\&.\fR\fI<commit2>\fR
notations cannot be used)\&.
.sp
With
\fB\-\-pretty\fR
format other than
\fBoneline\fR
and
\fBreference\fR
(for obvious reasons), this causes the output to have two extra lines of information taken from the reflog\&. The reflog designator in the output may be shown as
\fBref@\fR{\fI<Nth>\fR} (where
\fI<Nth>\fR
is the reverse\-chronological index in the reflog) or as
\fBref@\fR{\fI<timestamp>\fR} (with the
\fI<timestamp>\fR
for that entry), depending on a few rules:
.sp
.RS 4
.ie n \{\
\h'-04' 1.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  1." 4.2
.\}
If the starting point is specified as
\fBref@\fR{\fI<Nth>\fR}, show the index format\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 2.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  2." 4.2
.\}
If the starting point was specified as
\fBref@\fR{now}, show the timestamp format\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 3.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  3." 4.2
.\}
If neither was used, but
\fB\-\-date\fR
was given on the command line, show the timestamp in the format requested by
\fB\-\-date\fR\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 4.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  4." 4.2
.\}
Otherwise, show the index format\&.
.RE
.sp
Under
\fB\-\-pretty=oneline\fR, the commit message is prefixed with this information on the same line\&. This option cannot be combined with
\fB\-\-reverse\fR\&. See also
\fBgit-reflog\fR(1)\&.
.sp
Under
\fB\-\-pretty=reference\fR, this information will not be shown at all\&.
.RE
.PP
\fB\-\-merge\fR
.RS 4
Show commits touching conflicted paths in the range
\fBHEAD\fR\fB\&.\&.\&.\fR\fI<other>\fR, where
\fI<other>\fR
is the first existing pseudoref in
\fBMERGE_HEAD\fR,
\fBCHERRY_PICK_HEAD\fR,
\fBREVERT_HEAD\fR
or
\fBREBASE_HEAD\fR\&. Only works when the index has unmerged entries\&. This option can be used to show relevant commits when resolving conflicts from a 3\-way merge\&.
.RE
.PP
\fB\-\-boundary\fR
.RS 4
Output excluded boundary commits\&. Boundary commits are prefixed with
\fB\-\fR\&.
.RE
.SS "History Simplification"
.sp
Sometimes you are only interested in parts of the history, for example the commits modifying a particular <path>\&. But there are two parts of \fIHistory Simplification\fR, one part is selecting the commits and the other is how to do it, as there are various strategies to simplify the history\&.
.sp
The following options select the commits to be shown:
.PP
\fI<paths>\fR
.RS 4
Commits modifying the given <paths> are selected\&.
.RE
.PP
\fB\-\-simplify\-by\-decoration\fR
.RS 4
Commits that are referred by some branch or tag are selected\&.
.RE
.sp
Note that extra commits can be shown to give a meaningful history\&.
.sp
The following options affect the way the simplification is performed:
.PP
\fBDefault\fR \fBmode\fR
.RS 4
Simplifies the history to the simplest history explaining the final state of the tree\&. Simplest because it prunes some side branches if the end result is the same (i\&.e\&. merging branches with the same content)
.RE
.PP
\fB\-\-show\-pulls\fR
.RS 4
Include all commits from the default mode, but also any merge commits that are not TREESAME to the first parent but are TREESAME to a later parent\&. This mode is helpful for showing the merge commits that "first introduced" a change to a branch\&.
.RE
.PP
\fB\-\-full\-history\fR
.RS 4
Same as the default mode, but does not prune some history\&.
.RE
.PP
\fB\-\-dense\fR
.RS 4
Only the selected commits are shown, plus some to have a meaningful history\&.
.RE
.PP
\fB\-\-sparse\fR
.RS 4
All commits in the simplified history are shown\&.
.RE
.PP
\fB\-\-simplify\-merges\fR
.RS 4
Additional option to
\fB\-\-full\-history\fR
to remove some needless merges from the resulting history, as there are no selected commits contributing to this merge\&.
.RE
.PP
\fB\-\-ancestry\-path\fR[\fB=\fR\fI<commit>\fR]
.RS 4
When given a range of commits to display (e\&.g\&.
\fI<commit1>\fR\fB\&.\&.\fR\fI<commit2>\fR
or
\fI<commit2>\fR
\fB^\fR\fI<commit1>\fR), and a commit
\fI<commit>\fR
in that range, only display commits in that range that are ancestors of
\fI<commit>\fR, descendants of
\fI<commit>\fR, or
\fI<commit>\fR
itself\&. If no commit is specified, use
\fI<commit1>\fR
(the excluded part of the range) as
\fI<commit>\fR\&. Can be passed multiple times; if so, a commit is included if it is any of the commits given or if it is an ancestor or descendant of one of them\&.
.RE
.sp
A more detailed explanation follows\&.
.sp
Suppose you specified \fBfoo\fR as the \fI<paths>\fR\&. We shall call commits that modify \fBfoo\fR !TREESAME, and the rest TREESAME\&. (In a diff filtered for \fBfoo\fR, they look different and equal, respectively\&.)
.sp
In the following, we will always refer to the same example history to illustrate the differences between simplification settings\&. We assume that you are filtering for a file \fBfoo\fR in this commit graph:
.sp
.if n \{\
.RS 4
.\}
.nf
          \&.\-A\-\-\-M\-\-\-N\-\-\-O\-\-\-P\-\-\-Q
         /     /   /   /   /   /
        I     B   C   D   E   Y
         \e   /   /   /   /   /
          `\-\-\-\-\-\-\-\-\-\-\-\-\-\*(Aq   X
.fi
.if n \{\
.RE
.\}
.sp
The horizontal line of history A\-\-\-Q is taken to be the first parent of each merge\&. The commits are:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBI\fR
is the initial commit, in which
\fBfoo\fR
exists with contents
\fBasdf\fR, and a file
\fBquux\fR
exists with contents
\fBquux\fR\&. Initial commits are compared to an empty tree, so
\fBI\fR
is !TREESAME\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
In
\fBA\fR,
\fBfoo\fR
contains just
\fBfoo\fR\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBB\fR
contains the same change as
\fBA\fR\&. Its merge
\fBM\fR
is trivial and hence TREESAME to all parents\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBC\fR
does not change
\fBfoo\fR, but its merge
\fBN\fR
changes it to
\fBfoobar\fR, so it is not TREESAME to any parent\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBD\fR
sets
\fBfoo\fR
to
\fBbaz\fR\&. Its merge
\fBO\fR
combines the strings from
\fBN\fR
and
\fBD\fR
to
\fBfoobarbaz\fR; i\&.e\&., it is not TREESAME to any parent\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBE\fR
changes
\fBquux\fR
to
\fBxyzzy\fR, and its merge
\fBP\fR
combines the strings to
\fBquux\fR
\fBxyzzy\fR\&.
\fBP\fR
is TREESAME to
\fBO\fR, but not to
\fBE\fR\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBX\fR
is an independent root commit that added a new file
\fBside\fR, and
\fBY\fR
modified it\&.
\fBY\fR
is TREESAME to
\fBX\fR\&. Its merge
\fBQ\fR
added
\fBside\fR
to
\fBP\fR, and
\fBQ\fR
is TREESAME to
\fBP\fR, but not to
\fBY\fR\&.
.RE
.sp
\fBrev\-list\fR walks backwards through history, including or excluding commits based on whether \fB\-\-full\-history\fR and/or parent rewriting (via \fB\-\-parents\fR or \fB\-\-children\fR) are used\&. The following settings are available\&.
.PP
Default mode
.RS 4
Commits are included if they are not TREESAME to any parent (though this can be changed, see
\fB\-\-sparse\fR
below)\&. If the commit was a merge, and it was TREESAME to one parent, follow only that parent\&. (Even if there are several TREESAME parents, follow only one of them\&.) Otherwise, follow all parents\&.
.sp
This results in:
.sp
.if n \{\
.RS 4
.\}
.nf
          \&.\-A\-\-\-N\-\-\-O
         /     /   /
        I\-\-\-\-\-\-\-\-\-D
.fi
.if n \{\
.RE
.\}
.sp
Note how the rule to only follow the TREESAME parent, if one is available, removed
\fBB\fR
from consideration entirely\&.
\fBC\fR
was considered via
\fBN\fR, but is TREESAME\&. Root commits are compared to an empty tree, so
\fBI\fR
is !TREESAME\&.
.sp
Parent/child relations are only visible with
\fB\-\-parents\fR, but that does not affect the commits selected in default mode, so we have shown the parent lines\&.
.RE
.PP
\fB\-\-full\-history\fR without parent rewriting
.RS 4
This mode differs from the default in one point: always follow all parents of a merge, even if it is TREESAME to one of them\&. Even if more than one side of the merge has commits that are included, this does not imply that the merge itself is! In the example, we get
.sp
.if n \{\
.RS 4
.\}
.nf
        I  A  B  N  D  O  P  Q
.fi
.if n \{\
.RE
.\}
.sp
\fBM\fR
was excluded because it is TREESAME to both parents\&.
\fBE\fR,
\fBC\fR
and
\fBB\fR
were all walked, but only
\fBB\fR
was !TREESAME, so the others do not appear\&.
.sp
Note that without parent rewriting, it is not really possible to talk about the parent/child relationships between the commits, so we show them disconnected\&.
.RE
.PP
\fB\-\-full\-history\fR with parent rewriting
.RS 4
Ordinary commits are only included if they are !TREESAME (though this can be changed, see
\fB\-\-sparse\fR
below)\&.
.sp
Merges are always included\&. However, their parent list is rewritten: Along each parent, prune away commits that are not included themselves\&. This results in
.sp
.if n \{\
.RS 4
.\}
.nf
          \&.\-A\-\-\-M\-\-\-N\-\-\-O\-\-\-P\-\-\-Q
         /     /   /   /   /
        I     B   /   D   /
         \e   /   /   /   /
          `\-\-\-\-\-\-\-\-\-\-\-\-\-\*(Aq
.fi
.if n \{\
.RE
.\}
.sp
Compare to
\fB\-\-full\-history\fR
without rewriting above\&. Note that
\fBE\fR
was pruned away because it is TREESAME, but the parent list of P was rewritten to contain
\fBE\fR\*(Aqs parent
\fBI\fR\&. The same happened for
\fBC\fR
and
\fBN\fR, and
\fBX\fR,
\fBY\fR
and
\fBQ\fR\&.
.RE
.sp
In addition to the above settings, you can change whether TREESAME affects inclusion:
.PP
\fB\-\-dense\fR
.RS 4
Commits that are walked are included if they are not TREESAME to any parent\&.
.RE
.PP
\fB\-\-sparse\fR
.RS 4
All commits that are walked are included\&.
.sp
Note that without
\fB\-\-full\-history\fR, this still simplifies merges: if one of the parents is TREESAME, we follow only that one, so the other sides of the merge are never walked\&.
.RE
.PP
\fB\-\-simplify\-merges\fR
.RS 4
First, build a history graph in the same way that
\fB\-\-full\-history\fR
with parent rewriting does (see above)\&.
.sp
Then simplify each commit
\fBC\fR
to its replacement
\fBC\fR\*(Aq in the final history according to the following rules:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Set
\fBC\fR\*(Aq to
\fBC\fR\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Replace each parent
\fBP\fR
of
\fBC\fR\*(Aq with its simplification
\fBP\fR\*(Aq\&. In the process, drop parents that are ancestors of other parents or that are root commits TREESAME to an empty tree, and remove duplicates, but take care to never drop all parents that we are TREESAME to\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
If after this parent rewriting,
\fBC\fR\*(Aq is a root or merge commit (has zero or >1 parents), a boundary commit, or !TREESAME, it remains\&. Otherwise, it is replaced with its only parent\&.
.RE
.sp
The effect of this is best shown by way of comparing to
\fB\-\-full\-history\fR
with parent rewriting\&. The example turns into:
.sp
.if n \{\
.RS 4
.\}
.nf
          \&.\-A\-\-\-M\-\-\-N\-\-\-O
         /     /       /
        I     B       D
         \e   /       /
          `\-\-\-\-\-\-\-\-\-\*(Aq
.fi
.if n \{\
.RE
.\}
.sp
Note the major differences in
\fBN\fR,
\fBP\fR, and
\fBQ\fR
over
\fB\-\-full\-history\fR:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBN\fR\*(Aqs parent list had
\fBI\fR
removed, because it is an ancestor of the other parent
\fBM\fR\&. Still,
\fBN\fR
remained because it is !TREESAME\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBP\fR\*(Aqs parent list similarly had
\fBI\fR
removed\&.
\fBP\fR
was then removed completely, because it had one parent and is TREESAME\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBQ\fR\*(Aqs parent list had
\fBY\fR
simplified to
\fBX\fR\&.
\fBX\fR
was then removed, because it was a TREESAME root\&.
\fBQ\fR
was then removed completely, because it had one parent and is TREESAME\&.
.RE
.RE
.sp
There is another simplification mode available:
.PP
\fB\-\-ancestry\-path\fR[\fB=\fR\fI<commit>\fR]
.RS 4
Limit the displayed commits to those which are an ancestor of
\fI<commit>\fR, or which are a descendant of
\fI<commit>\fR, or are
\fI<commit>\fR
itself\&.
.sp
As an example use case, consider the following commit history:
.sp
.if n \{\
.RS 4
.\}
.nf
            D\-\-\-E\-\-\-\-\-\-\-F
           /     \e       \e
          B\-\-\-C\-\-\-G\-\-\-H\-\-\-I\-\-\-J
         /                     \e
        A\-\-\-\-\-\-\-K\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-L\-\-M
.fi
.if n \{\
.RE
.\}
.sp
A regular
\fID\&.\&.M\fR
computes the set of commits that are ancestors of
\fBM\fR, but excludes the ones that are ancestors of
\fBD\fR\&. This is useful to see what happened to the history leading to
\fBM\fR
since
\fBD\fR, in the sense that "what does
\fBM\fR
have that did not exist in
\fBD\fR"\&. The result in this example would be all the commits, except
\fBA\fR
and
\fBB\fR
(and
\fBD\fR
itself, of course)\&.
.sp
When we want to find out what commits in
\fBM\fR
are contaminated with the bug introduced by
\fBD\fR
and need fixing, however, we might want to view only the subset of
\fBD\fR\fB\&.\&.\fR\fBM\fR
that are actually descendants of
\fBD\fR, i\&.e\&. excluding
\fBC\fR
and
\fBK\fR\&. This is exactly what the
\fB\-\-ancestry\-path\fR
option does\&. Applied to the
\fBD\fR\fB\&.\&.\fR\fBM\fR
range, it results in:
.sp
.if n \{\
.RS 4
.\}
.nf
                E\-\-\-\-\-\-\-F
                 \e       \e
                  G\-\-\-H\-\-\-I\-\-\-J
                               \e
                                L\-\-M
.fi
.if n \{\
.RE
.\}
.sp
We can also use
\fB\-\-ancestry\-path=D\fR
instead of
\fB\-\-ancestry\-path\fR
which means the same thing when applied to the
\fBD\fR\fB\&.\&.\fR\fBM\fR
range but is just more explicit\&.
.sp
If we instead are interested in a given topic within this range, and all commits affected by that topic, we may only want to view the subset of
\fBD\fR\fB\&.\&.\fR\fBM\fR
which contain that topic in their ancestry path\&. So, using
\fB\-\-ancestry\-path=H\fR
\fBD\fR\fB\&.\&.\fR\fBM\fR
for example would result in:
.sp
.if n \{\
.RS 4
.\}
.nf
                E
                 \e
              C\-\-\-G\-\-\-H\-\-\-I\-\-\-J
                               \e
                                L\-\-M
.fi
.if n \{\
.RE
.\}
.sp
Whereas
\fB\-\-ancestry\-path=K\fR
\fBD\fR\fB\&.\&.\fR\fBM\fR
would result in
.sp
.if n \{\
.RS 4
.\}
.nf
                K\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-L\-\-M
.fi
.if n \{\
.RE
.\}
.RE
.sp
Before discussing another option, \fB\-\-show\-pulls\fR, we need to create a new example history\&.
.sp
A common problem users face when looking at simplified history is that a commit they know changed a file somehow does not appear in the file\(cqs simplified history\&. Let\(cqs demonstrate a new example and show how options such as \fB\-\-full\-history\fR and \fB\-\-simplify\-merges\fR works in that case:
.sp
.if n \{\
.RS 4
.\}
.nf
          \&.\-A\-\-\-M\-\-\-\-\-C\-\-N\-\-\-O\-\-\-P
         /     / \e  \e  \e/   /   /
        I     B   \e  R\-\*(Aq`\-Z\*(Aq   /
         \e   /     \e/         /
          \e /      /\e        /
           `\-\-\-X\-\-\*(Aq  `\-\-\-Y\-\-\*(Aq
.fi
.if n \{\
.RE
.\}
.sp
For this example, suppose \fBI\fR created \fBfile\&.txt\fR which was modified by \fBA\fR, \fBB\fR, and \fBX\fR in different ways\&. The single\-parent commits \fBC\fR, \fBZ\fR, and \fBY\fR do not change \fBfile\&.txt\fR\&. The merge commit \fBM\fR was created by resolving the merge conflict to include both changes from \fBA\fR and \fBB\fR and hence is not TREESAME to either\&. The merge commit \fBR\fR, however, was created by ignoring the contents of \fBfile\&.txt\fR at \fBM\fR and taking only the contents of \fBfile\&.txt\fR at \fBX\fR\&. Hence, \fBR\fR is TREESAME to \fBX\fR but not \fBM\fR\&. Finally, the natural merge resolution to create \fBN\fR is to take the contents of \fBfile\&.txt\fR at \fBR\fR, so \fBN\fR is TREESAME to \fBR\fR but not \fBC\fR\&. The merge commits \fBO\fR and \fBP\fR are TREESAME to their first parents, but not to their second parents, \fBZ\fR and \fBY\fR respectively\&.
.sp
When using the default mode, \fBN\fR and \fBR\fR both have a TREESAME parent, so those edges are walked and the others are ignored\&. The resulting history graph is:
.sp
.if n \{\
.RS 4
.\}
.nf
        I\-\-\-X
.fi
.if n \{\
.RE
.\}
.sp
When using \fB\-\-full\-history\fR, Git walks every edge\&. This will discover the commits \fBA\fR and \fBB\fR and the merge \fBM\fR, but also will reveal the merge commits \fBO\fR and \fBP\fR\&. With parent rewriting, the resulting graph is:
.sp
.if n \{\
.RS 4
.\}
.nf
          \&.\-A\-\-\-M\-\-\-\-\-\-\-\-N\-\-\-O\-\-\-P
         /     / \e  \e  \e/   /   /
        I     B   \e  R\-\*(Aq`\-\-\*(Aq   /
         \e   /     \e/         /
          \e /      /\e        /
           `\-\-\-X\-\-\*(Aq  `\-\-\-\-\-\-\*(Aq
.fi
.if n \{\
.RE
.\}
.sp
Here, the merge commits \fBO\fR and \fBP\fR contribute extra noise, as they did not actually contribute a change to \fBfile\&.txt\fR\&. They only merged a topic that was based on an older version of \fBfile\&.txt\fR\&. This is a common issue in repositories using a workflow where many contributors work in parallel and merge their topic branches along a single trunk: many unrelated merges appear in the \fB\-\-full\-history\fR results\&.
.sp
When using the \fB\-\-simplify\-merges\fR option, the commits \fBO\fR and \fBP\fR disappear from the results\&. This is because the rewritten second parents of \fBO\fR and \fBP\fR are reachable from their first parents\&. Those edges are removed and then the commits look like single\-parent commits that are TREESAME to their parent\&. This also happens to the commit \fBN\fR, resulting in a history view as follows:
.sp
.if n \{\
.RS 4
.\}
.nf
          \&.\-A\-\-\-M\-\-\&.
         /     /    \e
        I     B      R
         \e   /      /
          \e /      /
           `\-\-\-X\-\-\*(Aq
.fi
.if n \{\
.RE
.\}
.sp
In this view, we see all of the important single\-parent changes from \fBA\fR, \fBB\fR, and \fBX\fR\&. We also see the carefully\-resolved merge \fBM\fR and the not\-so\-carefully\-resolved merge \fBR\fR\&. This is usually enough information to determine why the commits \fBA\fR and \fBB\fR "disappeared" from history in the default view\&. However, there are a few issues with this approach\&.
.sp
The first issue is performance\&. Unlike any previous option, the \fB\-\-simplify\-merges\fR option requires walking the entire commit history before returning a single result\&. This can make the option difficult to use for very large repositories\&.
.sp
The second issue is one of auditing\&. When many contributors are working on the same repository, it is important which merge commits introduced a change into an important branch\&. The problematic merge \fBR\fR above is not likely to be the merge commit that was used to merge into an important branch\&. Instead, the merge \fBN\fR was used to merge \fBR\fR and \fBX\fR into the important branch\&. This commit may have information about why the change \fBX\fR came to override the changes from \fBA\fR and \fBB\fR in its commit message\&.
.PP
\fB\-\-show\-pulls\fR
.RS 4
In addition to the commits shown in the default history, show each merge commit that is not TREESAME to its first parent but is TREESAME to a later parent\&.
.sp
When a merge commit is included by
\fB\-\-show\-pulls\fR, the merge is treated as if it "pulled" the change from another branch\&. When using
\fB\-\-show\-pulls\fR
on this example (and no other options) the resulting graph is:
.sp
.if n \{\
.RS 4
.\}
.nf
        I\-\-\-X\-\-\-R\-\-\-N
.fi
.if n \{\
.RE
.\}
.sp
Here, the merge commits
\fBR\fR
and
\fBN\fR
are included because they pulled the commits
\fBX\fR
and
\fBR\fR
into the base branch, respectively\&. These merges are the reason the commits
\fBA\fR
and
\fBB\fR
do not appear in the default history\&.
.sp
When
\fB\-\-show\-pulls\fR
is paired with
\fB\-\-simplify\-merges\fR, the graph includes all of the necessary information:
.sp
.if n \{\
.RS 4
.\}
.nf
          \&.\-A\-\-\-M\-\-\&.   N
         /     /    \e /
        I     B      R
         \e   /      /
          \e /      /
           `\-\-\-X\-\-\*(Aq
.fi
.if n \{\
.RE
.\}
.sp
Notice that since
\fBM\fR
is reachable from
\fBR\fR, the edge from
\fBN\fR
to
\fBM\fR
was simplified away\&. However,
\fBN\fR
still appears in the history as an important commit because it "pulled" the change
\fBR\fR
into the main branch\&.
.RE
.sp
The \fB\-\-simplify\-by\-decoration\fR option allows you to view only the big picture of the topology of the history, by omitting commits that are not referenced by tags\&. Commits are marked as !TREESAME (in other words, kept after history simplification rules described above) if (1) they are referenced by tags, or (2) they change the contents of the paths given on the command line\&. All other commits are marked as TREESAME (subject to be simplified away)\&.
.SH "MAPPING AUTHORS"
.sp
See \fBgitmailmap\fR(5)\&.
.sp
Note that if \fBgit\fR \fBshortlog\fR is run outside of a repository (to process log contents on standard input), it will look for a \&.\fBmailmap\fR file in the current directory\&.
.SH "GIT"
.sp
Part of the \fBgit\fR(1) suite
