'\" 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-08-21
.\"    Manual: Git Manual
.\"    Source: Git 2.51.0.68.g954d33a975
.\"  Language: English
.\"
.TH "GIT\-SHORTLOG" "1" "2025-08-21" "Git 2\&.51\&.0\&.68\&.g954d33a" "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
