'\" t
.\"     Title: git-log
.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
.\"      Date: 01/18/2019
.\"    Manual: Git Manual
.\"    Source: Git 2.20.1.309.g16a465bc0
.\"  Language: English
.\"
.TH "GIT\-LOG" "1" "01/18/2019" "Git 2\&.20\&.1\&.309\&.g16a465" "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-log \- Show commit logs
.SH "SYNOPSIS"
.sp
.nf
\fIgit log\fR [<options>] [<revision range>] [[\-\-] <path>\&...]
.fi
.sp
.SH "DESCRIPTION"
.sp
Shows the commit logs\&.
.sp
The command takes options applicable to the \fBgit rev\-list\fR command to control what is shown and how, and options applicable to the \fBgit diff\-*\fR commands to control how the changes each commit introduces are shown\&.
.SH "OPTIONS"
.PP
\-\-follow
.RS 4
Continue listing the history of a file beyond renames (works only for a single file)\&.
.RE
.PP
\-\-no\-decorate, \-\-decorate[=short|full|auto|no]
.RS 4
Print out the ref names of any commits that are shown\&. If
\fIshort\fR
is specified, the ref name prefixes
\fIrefs/heads/\fR,
\fIrefs/tags/\fR
and
\fIrefs/remotes/\fR
will not be printed\&. If
\fIfull\fR
is specified, the full ref name (including prefix) will be printed\&. If
\fIauto\fR
is specified, then if the output is going to a terminal, the ref names are shown as if
\fIshort\fR
were given, otherwise no ref names are shown\&. The default option is
\fIshort\fR\&.
.RE
.PP
\-\-decorate\-refs=<pattern>, \-\-decorate\-refs\-exclude=<pattern>
.RS 4
If no
\fB\-\-decorate\-refs\fR
is given, pretend as if all refs were included\&. For each candidate, do not use it for decoration if it matches any patterns given to
\fB\-\-decorate\-refs\-exclude\fR
or if it doesn\(cqt match any of the patterns given to
\fB\-\-decorate\-refs\fR\&.
.RE
.PP
\-\-source
.RS 4
Print out the ref name given on the command line by which each commit was reached\&.
.RE
.PP
\-\-use\-mailmap
.RS 4
Use mailmap file to map author and committer names and email addresses to canonical real names and email addresses\&. See
\fBgit-shortlog\fR(1)\&.
.RE
.PP
\-\-full\-diff
.RS 4
Without this flag,
\fBgit log \-p <path>\&.\&.\&.\fR
shows commits that touch the specified paths, and diffs about the same specified paths\&. With this, the full diff is shown for commits that touch the specified paths; this means that "<path>\&..." limits only commits, and doesn\(cqt limit diff for those commits\&.
.sp
Note that this affects all diff\-based output types, e\&.g\&. those produced by
\fB\-\-stat\fR, etc\&.
.RE
.PP
\-\-log\-size
.RS 4
Include a line \(lqlog size <number>\(rq in the output for each commit, where <number> is the length of that commit\(cqs message in bytes\&. Intended to speed up tools that read log messages from
\fBgit log\fR
output by allowing them to allocate space in advance\&.
.RE
.PP
\-L <start>,<end>:<file>, \-L :<funcname>:<file>
.RS 4
Trace the evolution of the line range given by "<start>,<end>" (or the function name regex <funcname>) within the <file>\&. You may not give any pathspec limiters\&. This is currently limited to a walk starting from a single revision, i\&.e\&., you may only give zero or one positive revision arguments\&. You can specify this option more than once\&.
.sp
<start> and <end> can take one of these forms:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
number
.sp
If <start> or <end> is a number, it specifies an absolute line number (lines count from 1)\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
/regex/
.sp
This form will use the first line matching the given POSIX regex\&. If <start> is a regex, it will search from the end of the previous
\fB\-L\fR
range, if any, otherwise from the start of file\&. If <start> is \(lq^/regex/\(rq, it will search from the start of file\&. If <end> is a regex, it will search starting at the line given by <start>\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
+offset or \-offset
.sp
This is only valid for <end> and will specify a number of lines before or after the line given by <start>\&.
.RE
.sp
If \(lq:<funcname>\(rq is given in place of <start> and <end>, it is a regular expression that denotes the range from the first funcname line that matches <funcname>, up to the next funcname line\&. \(lq:<funcname>\(rq searches from the end of the previous
\fB\-L\fR
range, if any, otherwise from the start of file\&. \(lq^:<funcname>\(rq searches from the start of file\&.
.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\&.\&.HEAD\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
\fISpecifying Ranges\fR
section of
\fBgitrevisions\fR(7)\&.
.RE
.PP
[\-\-] <path>\&...
.RS 4
Show only commits that are enough to explain how the files that match the specified paths came to be\&. See
\fIHistory Simplification\fR
below for details and other simplification modes\&.
.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=<date1>\fR limits to commits newer than \fB<date1>\fR, and using it with \fB\-\-grep=<pattern>\fR further limits to commits whose log message has a line that matches \fB<pattern>\fR), unless otherwise noted\&.
.sp
Note that these are applied before commit ordering and formatting options, such as \fB\-\-reverse\fR\&.
.PP
\-<number>, \-n <number>, \-\-max\-count=<number>
.RS 4
Limit the number of commits to output\&.
.RE
.PP
\-\-skip=<number>
.RS 4
Skip
\fInumber\fR
commits before starting to show the commit output\&.
.RE
.PP
\-\-since=<date>, \-\-after=<date>
.RS 4
Show commits more recent than a specific date\&.
.RE
.PP
\-\-until=<date>, \-\-before=<date>
.RS 4
Show commits older than a specific date\&.
.RE
.PP
\-\-author=<pattern>, \-\-committer=<pattern>
.RS 4
Limit the commits output to ones with author/committer header lines that match the specified pattern (regular expression)\&. With more than one
\fB\-\-author=<pattern>\fR, commits whose author matches any of the given patterns are chosen (similarly for multiple
\fB\-\-committer=<pattern>\fR)\&.
.RE
.PP
\-\-grep\-reflog=<pattern>
.RS 4
Limit the commits output to ones with reflog entries that match the specified pattern (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
\-\-grep=<pattern>
.RS 4
Limit the commits output to ones with log message that matches the specified pattern (regular expression)\&. With more than one
\fB\-\-grep=<pattern>\fR, commits whose message matches any of the given patterns are chosen (but see
\fB\-\-all\-match\fR)\&.
.sp
When
\fB\-\-show\-notes\fR
is in effect, the message from the notes is matched as if it were part of the log message\&.
.RE
.PP
\-\-all\-match
.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
\-\-invert\-grep
.RS 4
Limit the commits output to ones with log message that do not match the pattern specified with
\fB\-\-grep=<pattern>\fR\&.
.RE
.PP
\-i, \-\-regexp\-ignore\-case
.RS 4
Match the regular expression limiting patterns without regard to letter case\&.
.RE
.PP
\-\-basic\-regexp
.RS 4
Consider the limiting patterns to be basic regular expressions; this is the default\&.
.RE
.PP
\-E, \-\-extended\-regexp
.RS 4
Consider the limiting patterns to be extended regular expressions instead of the default basic regular expressions\&.
.RE
.PP
\-F, \-\-fixed\-strings
.RS 4
Consider the limiting patterns to be fixed strings (don\(cqt interpret pattern as a regular expression)\&.
.RE
.PP
\-P, \-\-perl\-regexp
.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
\-\-remove\-empty
.RS 4
Stop when a given path disappears from the tree\&.
.RE
.PP
\-\-merges
.RS 4
Print only merge commits\&. This is exactly the same as
\fB\-\-min\-parents=2\fR\&.
.RE
.PP
\-\-no\-merges
.RS 4
Do not print commits with more than one parent\&. This is exactly the same as
\fB\-\-max\-parents=1\fR\&.
.RE
.PP
\-\-min\-parents=<number>, \-\-max\-parents=<number>, \-\-no\-min\-parents, \-\-no\-max\-parents
.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
\-\-first\-parent
.RS 4
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\&. Cannot be combined with \-\-bisect\&.
.RE
.PP
\-\-not
.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\&.
.RE
.PP
\-\-all
.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
\-\-branches[=<pattern>]
.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 pattern lacks
\fI?\fR,
\fI*\fR, or
\fI[\fR,
\fI/*\fR
at the end is implied\&.
.RE
.PP
\-\-tags[=<pattern>]
.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
\-\-remotes[=<pattern>]
.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
\-\-glob=<glob\-pattern>
.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
\-\-exclude=<glob\-pattern>
.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
\-\-reflog
.RS 4
Pretend as if all objects mentioned by reflogs are listed on the command line as
\fB<commit>\fR\&.
.RE
.PP
\-\-single\-worktree
.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
\-\-ignore\-missing
.RS 4
Upon seeing an invalid object name in the input, pretend as if the bad input was not given\&.
.RE
.PP
\-\-bisect
.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\&. Cannot be combined with \-\-first\-parent\&.
.RE
.PP
\-\-stdin
.RS 4
In addition to the
\fI<commit>\fR
listed on the command line, read them from the standard input\&. If a
\fB\-\-\fR
separator is seen, stop reading commits and start reading paths to limit the result\&.
.RE
.PP
\-\-cherry\-mark
.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
\-\-cherry\-pick
.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
\-\-left\-only, \-\-right\-only
.RS 4
List only commits on the respective side of a symmetric difference, i\&.e\&. only those which would be marked
\fB<\fR
resp\&.
\fB>\fR
by
\fB\-\-left\-right\fR\&.
.sp
For example,
\fB\-\-cherry\-pick \-\-right\-only A\&.\&.\&.B\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 cherry A B\fR\&. More precisely,
\fB\-\-cherry\-pick \-\-right\-only \-\-no\-merges\fR
gives the exact list\&.
.RE
.PP
\-\-cherry
.RS 4
A synonym for
\fB\-\-right\-only \-\-cherry\-mark \-\-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 log \-\-cherry upstream\&.\&.\&.mybranch\fR, similar to
\fBgit cherry upstream mybranch\fR\&.
.RE
.PP
\-g, \-\-walk\-reflogs
.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,
\fI^commit\fR,
\fIcommit1\&.\&.commit2\fR, and
\fIcommit1\&.\&.\&.commit2\fR
notations cannot be used)\&.
.sp
With
\fB\-\-pretty\fR
format other than
\fBoneline\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@{Nth}\fR
(where
\fBNth\fR
is the reverse\-chronological index in the reflog) or as
\fBref@{timestamp}\fR
(with the timestamp 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@{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@{now}\fR, 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)\&.
.RE
.PP
\-\-merge
.RS 4
After a failed merge, show refs that touch files having a conflict and don\(cqt exist on all heads to merge\&.
.RE
.PP
\-\-boundary
.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
<paths>
.RS 4
Commits modifying the given <paths> are selected\&.
.RE
.PP
\-\-simplify\-by\-decoration
.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
Default mode
.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
\-\-full\-history
.RS 4
Same as the default mode, but does not prune some history\&.
.RE
.PP
\-\-dense
.RS 4
Only the selected commits are shown, plus some to have a meaningful history\&.
.RE
.PP
\-\-sparse
.RS 4
All commits in the simplified history are shown\&.
.RE
.PP
\-\-simplify\-merges
.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
\-\-ancestry\-path
.RS 4
When given a range of commits to display (e\&.g\&.
\fIcommit1\&.\&.commit2\fR
or
\fIcommit2 ^commit1\fR), only display commits that exist directly on the ancestry chain between the
\fIcommit1\fR
and
\fIcommit2\fR, i\&.e\&. commits that are both descendants of
\fIcommit1\fR, and ancestors of
\fIcommit2\fR\&.
.RE
.sp
A more detailed explanation follows\&.
.sp
Suppose you specified \fBfoo\fR as the <paths>\&. 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
.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 \(lqasdf\(rq, and a file
\fBquux\fR
exists with contents \(lqquux\(rq\&. 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 \(lqfoo\(rq\&.
.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 \(lqfoobar\(rq, 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 \(lqbaz\(rq\&. Its merge
\fBO\fR
combines the strings from
\fBN\fR
and
\fBD\fR
to \(lqfoobarbaz\(rq; 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 \(lqxyzzy\(rq, and its merge
\fBP\fR
combines the strings to \(lqquux xyzzy\(rq\&.
\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
\-\-full\-history 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
\-\-full\-history 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
\-\-dense
.RS 4
Commits that are walked are included if they are not TREESAME to any parent\&.
.RE
.PP
\-\-sparse
.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
\-\-simplify\-merges
.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\(aq\fR
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\(aq\fR
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\(aq\fR
with its simplification
\fBP\(aq\fR\&. 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\(aq\fR
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
Finally, there is a fifth simplification mode available:
.PP
\-\-ancestry\-path
.RS 4
Limit the displayed commits to those directly on the ancestry chain between the \(lqfrom\(rq and \(lqto\(rq commits in the given commit range\&. I\&.e\&. only display commits that are ancestor of the \(lqto\(rq commit and descendants of the \(lqfrom\(rq commit\&.
.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 \(lqwhat does
\fBM\fR
have that did not exist in
\fBD\fR\(rq\&. 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
\fID\&.\&.M\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
\fID\&.\&.M\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
.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)\&.
.SS "Commit Ordering"
.sp
By default, the commits are shown in reverse chronological order\&.
.PP
\-\-date\-order
.RS 4
Show no parents before all of its children are shown, but otherwise show commits in the commit timestamp order\&.
.RE
.PP
\-\-author\-date\-order
.RS 4
Show no parents before all of its children are shown, but otherwise show commits in the author timestamp order\&.
.RE
.PP
\-\-topo\-order
.RS 4
Show no parents before all of its children are shown, and avoid showing commits on multiple lines of history intermixed\&.
.sp
For example, in a commit history like this:
.sp
.if n \{\
.RS 4
.\}
.nf
    \-\-\-1\-\-\-\-2\-\-\-\-4\-\-\-\-7
        \e              \e
         3\-\-\-\-5\-\-\-\-6\-\-\-\-8\-\-\-
.fi
.if n \{\
.RE
.\}
.sp
where the numbers denote the order of commit timestamps,
\fBgit rev\-list\fR
and friends with
\fB\-\-date\-order\fR
show the commits in the timestamp order: 8 7 6 5 4 3 2 1\&.
.sp
With
\fB\-\-topo\-order\fR, they would show 8 6 5 3 7 4 2 1 (or 8 7 4 2 6 5 3 1); some older commits are shown before newer ones in order to avoid showing the commits from two parallel development track mixed together\&.
.RE
.PP
\-\-reverse
.RS 4
Output the commits chosen to be shown (see Commit Limiting section above) in reverse order\&. Cannot be combined with
\fB\-\-walk\-reflogs\fR\&.
.RE
.SS "Object Traversal"
.sp
These options are mostly targeted for packing of Git repositories\&.
.PP
\-\-no\-walk[=(sorted|unsorted)]
.RS 4
Only show the given commits, but do not traverse their ancestors\&. This has no effect if a range is specified\&. If the argument
\fBunsorted\fR
is given, the commits are shown in the order they were given on the command line\&. Otherwise (if
\fBsorted\fR
or no argument was given), the commits are shown in reverse chronological order by commit time\&. Cannot be combined with
\fB\-\-graph\fR\&.
.RE
.PP
\-\-do\-walk
.RS 4
Overrides a previous
\fB\-\-no\-walk\fR\&.
.RE
.SS "Commit Formatting"
.PP
\-\-pretty[=<format>], \-\-format=<format>
.RS 4
Pretty\-print the contents of the commit logs in a given format, where
\fI<format>\fR
can be one of
\fIoneline\fR,
\fIshort\fR,
\fImedium\fR,
\fIfull\fR,
\fIfuller\fR,
\fIemail\fR,
\fIraw\fR,
\fIformat:<string>\fR
and
\fItformat:<string>\fR\&. When
\fI<format>\fR
is none of the above, and has
\fI%placeholder\fR
in it, it acts as if
\fI\-\-pretty=tformat:<format>\fR
were given\&.
.sp
See the "PRETTY FORMATS" section for some additional details for each format\&. When
\fI=<format>\fR
part is omitted, it defaults to
\fImedium\fR\&.
.sp
Note: you can specify the default pretty format in the repository configuration (see
\fBgit-config\fR(1))\&.
.RE
.PP
\-\-abbrev\-commit
.RS 4
Instead of showing the full 40\-byte hexadecimal commit object name, show only a partial prefix\&. Non default number of digits can be specified with "\-\-abbrev=<n>" (which also modifies diff output, if it is displayed)\&.
.sp
This should make "\-\-pretty=oneline" a whole lot more readable for people using 80\-column terminals\&.
.RE
.PP
\-\-no\-abbrev\-commit
.RS 4
Show the full 40\-byte hexadecimal commit object name\&. This negates
\fB\-\-abbrev\-commit\fR
and those options which imply it such as "\-\-oneline"\&. It also overrides the
\fBlog\&.abbrevCommit\fR
variable\&.
.RE
.PP
\-\-oneline
.RS 4
This is a shorthand for "\-\-pretty=oneline \-\-abbrev\-commit" used together\&.
.RE
.PP
\-\-encoding=<encoding>
.RS 4
The commit objects record the encoding used for the log message in their encoding header; this option can be used to tell the command to re\-code the commit log message in the encoding preferred by the user\&. For non plumbing commands this defaults to UTF\-8\&. Note that if an object claims to be encoded in
\fBX\fR
and we are outputting in
\fBX\fR, we will output the object verbatim; this means that invalid sequences in the original commit may be copied to the output\&.
.RE
.PP
\-\-expand\-tabs=<n>, \-\-expand\-tabs, \-\-no\-expand\-tabs
.RS 4
Perform a tab expansion (replace each tab with enough spaces to fill to the next display column that is multiple of
\fI<n>\fR) in the log message before showing it in the output\&.
\fB\-\-expand\-tabs\fR
is a short\-hand for
\fB\-\-expand\-tabs=8\fR, and
\fB\-\-no\-expand\-tabs\fR
is a short\-hand for
\fB\-\-expand\-tabs=0\fR, which disables tab expansion\&.
.sp
By default, tabs are expanded in pretty formats that indent the log message by 4 spaces (i\&.e\&.
\fImedium\fR, which is the default,
\fIfull\fR, and
\fIfuller\fR)\&.
.RE
.PP
\-\-notes[=<treeish>]
.RS 4
Show the notes (see
\fBgit-notes\fR(1)) that annotate the commit, when showing the commit log message\&. This is the default for
\fBgit log\fR,
\fBgit show\fR
and
\fBgit whatchanged\fR
commands when there is no
\fB\-\-pretty\fR,
\fB\-\-format\fR, or
\fB\-\-oneline\fR
option given on the command line\&.
.sp
By default, the notes shown are from the notes refs listed in the
\fBcore\&.notesRef\fR
and
\fBnotes\&.displayRef\fR
variables (or corresponding environment overrides)\&. See
\fBgit-config\fR(1)
for more details\&.
.sp
With an optional
\fI<treeish>\fR
argument, use the treeish to find the notes to display\&. The treeish can specify the full refname when it begins with
\fBrefs/notes/\fR; when it begins with
\fBnotes/\fR,
\fBrefs/\fR
and otherwise
\fBrefs/notes/\fR
is prefixed to form a full name of the ref\&.
.sp
Multiple \-\-notes options can be combined to control which notes are being displayed\&. Examples: "\-\-notes=foo" will show only notes from "refs/notes/foo"; "\-\-notes=foo \-\-notes" will show both notes from "refs/notes/foo" and from the default notes ref(s)\&.
.RE
.PP
\-\-no\-notes
.RS 4
Do not show notes\&. This negates the above
\fB\-\-notes\fR
option, by resetting the list of notes refs from which notes are shown\&. Options are parsed in the order given on the command line, so e\&.g\&. "\-\-notes \-\-notes=foo \-\-no\-notes \-\-notes=bar" will only show notes from "refs/notes/bar"\&.
.RE
.PP
\-\-show\-notes[=<treeish>], \-\-[no\-]standard\-notes
.RS 4
These options are deprecated\&. Use the above \-\-notes/\-\-no\-notes options instead\&.
.RE
.PP
\-\-show\-signature
.RS 4
Check the validity of a signed commit object by passing the signature to
\fBgpg \-\-verify\fR
and show the output\&.
.RE
.PP
\-\-relative\-date
.RS 4
Synonym for
\fB\-\-date=relative\fR\&.
.RE
.PP
\-\-date=<format>
.RS 4
Only takes effect for dates shown in human\-readable format, such as when using
\fB\-\-pretty\fR\&.
\fBlog\&.date\fR
config variable sets a default value for the log command\(cqs
\fB\-\-date\fR
option\&. By default, dates are shown in the original time zone (either committer\(cqs or author\(cqs)\&. If
\fB\-local\fR
is appended to the format (e\&.g\&.,
\fBiso\-local\fR), the user\(cqs local time zone is used instead\&.
.sp
\fB\-\-date=relative\fR
shows dates relative to the current time, e\&.g\&. \(lq2 hours ago\(rq\&. The
\fB\-local\fR
option has no effect for
\fB\-\-date=relative\fR\&.
.sp
\fB\-\-date=local\fR
is an alias for
\fB\-\-date=default\-local\fR\&.
.sp
\fB\-\-date=iso\fR
(or
\fB\-\-date=iso8601\fR) shows timestamps in a ISO 8601\-like format\&. The differences to the strict ISO 8601 format are:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
a space instead of the
\fBT\fR
date/time delimiter
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
a space between time and time zone
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
no colon between hours and minutes of the time zone
.RE
.sp
\fB\-\-date=iso\-strict\fR
(or
\fB\-\-date=iso8601\-strict\fR) shows timestamps in strict ISO 8601 format\&.
.sp
\fB\-\-date=rfc\fR
(or
\fB\-\-date=rfc2822\fR) shows timestamps in RFC 2822 format, often found in email messages\&.
.sp
\fB\-\-date=short\fR
shows only the date, but not the time, in
\fBYYYY\-MM\-DD\fR
format\&.
.sp
\fB\-\-date=raw\fR
shows the date as seconds since the epoch (1970\-01\-01 00:00:00 UTC), followed by a space, and then the timezone as an offset from UTC (a
\fB+\fR
or
\fB\-\fR
with four digits; the first two are hours, and the second two are minutes)\&. I\&.e\&., as if the timestamp were formatted with
\fBstrftime("%s %z")\fR)\&. Note that the
\fB\-local\fR
option does not affect the seconds\-since\-epoch value (which is always measured in UTC), but does switch the accompanying timezone value\&.
.sp
\fB\-\-date=unix\fR
shows the date as a Unix epoch timestamp (seconds since 1970)\&. As with
\fB\-\-raw\fR, this is always in UTC and therefore
\fB\-local\fR
has no effect\&.
.sp
\fB\-\-date=format:\&.\&.\&.\fR
feeds the format
\fB\&.\&.\&.\fR
to your system
\fBstrftime\fR, except for %z and %Z, which are handled internally\&. Use
\fB\-\-date=format:%c\fR
to show the date in your system locale\(cqs preferred format\&. See the
\fBstrftime\fR
manual for a complete list of format placeholders\&. When using
\fB\-local\fR, the correct syntax is
\fB\-\-date=format\-local:\&.\&.\&.\fR\&.
.sp
\fB\-\-date=default\fR
is the default format, and is similar to
\fB\-\-date=rfc2822\fR, with a few exceptions:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
there is no comma after the day\-of\-week
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
the time zone is omitted when the local time zone is used
.RE
.RE
.PP
\-\-parents
.RS 4
Print also the parents of the commit (in the form "commit parent\&...")\&. Also enables parent rewriting, see
\fIHistory Simplification\fR
above\&.
.RE
.PP
\-\-children
.RS 4
Print also the children of the commit (in the form "commit child\&...")\&. Also enables parent rewriting, see
\fIHistory Simplification\fR
above\&.
.RE
.PP
\-\-left\-right
.RS 4
Mark which side of a symmetric difference a commit is reachable from\&. Commits from the left side are prefixed with
\fB<\fR
and those from the right with
\fB>\fR\&. If combined with
\fB\-\-boundary\fR, those commits are prefixed with
\fB\-\fR\&.
.sp
For example, if you have this topology:
.sp
.if n \{\
.RS 4
.\}
.nf
             y\-\-\-b\-\-\-b  branch B
            / \e /
           /   \&.
          /   / \e
         o\-\-\-x\-\-\-a\-\-\-a  branch A
.fi
.if n \{\
.RE
.\}
.sp
you would get an output like this:
.sp
.if n \{\
.RS 4
.\}
.nf
        $ git rev\-list \-\-left\-right \-\-boundary \-\-pretty=oneline A\&.\&.\&.B

        >bbbbbbb\&.\&.\&. 3rd on b
        >bbbbbbb\&.\&.\&. 2nd on b
        <aaaaaaa\&.\&.\&. 3rd on a
        <aaaaaaa\&.\&.\&. 2nd on a
        \-yyyyyyy\&.\&.\&. 1st on b
        \-xxxxxxx\&.\&.\&. 1st on a
.fi
.if n \{\
.RE
.\}
.sp
.RE
.PP
\-\-graph
.RS 4
Draw a text\-based graphical representation of the commit history on the left hand side of the output\&. This may cause extra lines to be printed in between commits, in order for the graph history to be drawn properly\&. Cannot be combined with
\fB\-\-no\-walk\fR\&.
.sp
This enables parent rewriting, see
\fIHistory Simplification\fR
above\&.
.sp
This implies the
\fB\-\-topo\-order\fR
option by default, but the
\fB\-\-date\-order\fR
option may also be specified\&.
.RE
.PP
\-\-show\-linear\-break[=<barrier>]
.RS 4
When \-\-graph is not used, all history branches are flattened which can make it hard to see that the two consecutive commits do not belong to a linear branch\&. This option puts a barrier in between them in that case\&. If
\fB<barrier>\fR
is specified, it is the string that will be shown instead of the default one\&.
.RE
.SS "Diff Formatting"
.sp
Listed below are options that control the formatting of diff output\&. Some of them are specific to \fBgit-rev-list\fR(1), however other diff options may be given\&. See \fBgit-diff-files\fR(1) for more options\&.
.PP
\-c
.RS 4
With this option, diff output for a merge commit shows the differences from each of the parents to the merge result simultaneously instead of showing pairwise diff between a parent and the result one at a time\&. Furthermore, it lists only files which were modified from all parents\&.
.RE
.PP
\-\-cc
.RS 4
This flag implies the
\fB\-c\fR
option and further compresses the patch output by omitting uninteresting hunks whose contents in the parents have only two variants and the merge result picks one of them without modification\&.
.RE
.PP
\-m
.RS 4
This flag makes the merge commits show the full diff like regular commits; for each merge parent, a separate log entry and diff is generated\&. An exception is that only diff against the first parent is shown when
\fB\-\-first\-parent\fR
option is given; in that case, the output represents the changes the merge brought
\fIinto\fR
the then\-current branch\&.
.RE
.PP
\-r
.RS 4
Show recursive diffs\&.
.RE
.PP
\-t
.RS 4
Show the tree objects in the diff output\&. This implies
\fB\-r\fR\&.
.RE
.SH "PRETTY FORMATS"
.sp
If the commit is a merge, and if the pretty\-format is not \fIoneline\fR, \fIemail\fR or \fIraw\fR, an additional line is inserted before the \fIAuthor:\fR line\&. This line begins with "Merge: " and the sha1s of ancestral commits are printed, separated by spaces\&. Note that the listed commits may not necessarily be the list of the \fBdirect\fR parent commits if you have limited your view of history: for example, if you are only interested in changes related to a certain directory or file\&.
.sp
There are several built\-in formats, and you can define additional formats by setting a pretty\&.<name> config option to either another format name, or a \fIformat:\fR string, as described below (see \fBgit-config\fR(1))\&. Here are the details of the built\-in formats:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fIoneline\fR
.sp
.if n \{\
.RS 4
.\}
.nf
<sha1> <title line>
.fi
.if n \{\
.RE
.\}
.sp
This is designed to be as compact as possible\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fIshort\fR
.sp
.if n \{\
.RS 4
.\}
.nf
commit <sha1>
Author: <author>
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
<title line>
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fImedium\fR
.sp
.if n \{\
.RS 4
.\}
.nf
commit <sha1>
Author: <author>
Date:   <author date>
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
<title line>
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
<full commit message>
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fIfull\fR
.sp
.if n \{\
.RS 4
.\}
.nf
commit <sha1>
Author: <author>
Commit: <committer>
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
<title line>
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
<full commit message>
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fIfuller\fR
.sp
.if n \{\
.RS 4
.\}
.nf
commit <sha1>
Author:     <author>
AuthorDate: <author date>
Commit:     <committer>
CommitDate: <committer date>
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
<title line>
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
<full commit message>
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fIemail\fR
.sp
.if n \{\
.RS 4
.\}
.nf
From <sha1> <date>
From: <author>
Date: <author date>
Subject: [PATCH] <title line>
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
<full commit message>
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fIraw\fR
.sp
The
\fIraw\fR
format shows the entire commit exactly as stored in the commit object\&. Notably, the SHA\-1s are displayed in full, regardless of whether \-\-abbrev or \-\-no\-abbrev are used, and
\fIparents\fR
information show the true parent commits, without taking grafts or history simplification into account\&. Note that this format affects the way commits are displayed, but not the way the diff is shown e\&.g\&. with
\fBgit log \-\-raw\fR\&. To get full object names in a raw diff format, use
\fB\-\-no\-abbrev\fR\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fIformat:<string>\fR
.sp
The
\fIformat:<string>\fR
format allows you to specify which information you want to show\&. It works a little bit like printf format, with the notable exception that you get a newline with
\fI%n\fR
instead of
\fI\en\fR\&.
.sp
E\&.g,
\fIformat:"The author of %h was %an, %ar%nThe title was >>%s<<%n"\fR
would show something like this:
.sp
.if n \{\
.RS 4
.\}
.nf
The author of fe6e0ee was Junio C Hamano, 23 hours ago
The title was >>t4119: test autocomputing \-p<n> for traditional diff input\&.<<
.fi
.if n \{\
.RE
.\}
.sp
The placeholders are:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%H\fR: commit hash
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%h\fR: abbreviated commit hash
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%T\fR: tree hash
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%t\fR: abbreviated tree hash
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%P\fR: parent hashes
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%p\fR: abbreviated parent hashes
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%an\fR: author name
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%aN\fR: author name (respecting \&.mailmap, see
\fBgit-shortlog\fR(1)
or
\fBgit-blame\fR(1))
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%ae\fR: author email
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%aE\fR: author email (respecting \&.mailmap, see
\fBgit-shortlog\fR(1)
or
\fBgit-blame\fR(1))
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%ad\fR: author date (format respects \-\-date= option)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%aD\fR: author date, RFC2822 style
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%ar\fR: author date, relative
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%at\fR: author date, UNIX timestamp
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%ai\fR: author date, ISO 8601\-like format
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%aI\fR: author date, strict ISO 8601 format
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%cn\fR: committer name
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%cN\fR: committer name (respecting \&.mailmap, see
\fBgit-shortlog\fR(1)
or
\fBgit-blame\fR(1))
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%ce\fR: committer email
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%cE\fR: committer email (respecting \&.mailmap, see
\fBgit-shortlog\fR(1)
or
\fBgit-blame\fR(1))
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%cd\fR: committer date (format respects \-\-date= option)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%cD\fR: committer date, RFC2822 style
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%cr\fR: committer date, relative
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%ct\fR: committer date, UNIX timestamp
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%ci\fR: committer date, ISO 8601\-like format
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%cI\fR: committer date, strict ISO 8601 format
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%d\fR: ref names, like the \-\-decorate option of
\fBgit-log\fR(1)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%D\fR: ref names without the " (", ")" wrapping\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%e\fR: encoding
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%s\fR: subject
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%f\fR: sanitized subject line, suitable for a filename
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%b\fR: body
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%B\fR: raw body (unwrapped subject and body)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%N\fR: commit notes
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%GG\fR: raw verification message from GPG for a signed commit
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%G?\fR: show "G" for a good (valid) signature, "B" for a bad signature, "U" for a good signature with unknown validity, "X" for a good signature that has expired, "Y" for a good signature made by an expired key, "R" for a good signature made by a revoked key, "E" if the signature cannot be checked (e\&.g\&. missing key) and "N" for no signature
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%GS\fR: show the name of the signer for a signed commit
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%GK\fR: show the key used to sign a signed commit
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%GF\fR: show the fingerprint of the key used to sign a signed commit
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%GP\fR: show the fingerprint of the primary key whose subkey was used to sign a signed commit
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%gD\fR: reflog selector, e\&.g\&.,
\fBrefs/stash@{1}\fR
or
\fBrefs/stash@{2 minutes ago\fR}; the format follows the rules described for the
\fB\-g\fR
option\&. The portion before the
\fB@\fR
is the refname as given on the command line (so
\fBgit log \-g refs/heads/master\fR
would yield
\fBrefs/heads/master@{0}\fR)\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%gd\fR: shortened reflog selector; same as
\fB%gD\fR, but the refname portion is shortened for human readability (so
\fBrefs/heads/master\fR
becomes just
\fBmaster\fR)\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%gn\fR: reflog identity name
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%gN\fR: reflog identity name (respecting \&.mailmap, see
\fBgit-shortlog\fR(1)
or
\fBgit-blame\fR(1))
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%ge\fR: reflog identity email
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%gE\fR: reflog identity email (respecting \&.mailmap, see
\fBgit-shortlog\fR(1)
or
\fBgit-blame\fR(1))
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%gs\fR: reflog subject
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%Cred\fR: switch color to red
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%Cgreen\fR: switch color to green
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%Cblue\fR: switch color to blue
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%Creset\fR: reset color
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%C(\&...)\fR: color specification, as described under Values in the "CONFIGURATION FILE" section of
\fBgit-config\fR(1)\&. By default, colors are shown only when enabled for log output (by
\fBcolor\&.diff\fR,
\fBcolor\&.ui\fR, or
\fB\-\-color\fR, and respecting the
\fBauto\fR
settings of the former if we are going to a terminal)\&.
\fB%C(auto,\&.\&.\&.)\fR
is accepted as a historical synonym for the default (e\&.g\&.,
\fB%C(auto,red)\fR)\&. Specifying
\fB%C(always,\&.\&.\&.) will show the colors even when color is not otherwise enabled (though consider just using `\-\-color=always\fR
to enable color for the whole output, including this format and anything else git might color)\&.
\fBauto\fR
alone (i\&.e\&.
\fB%C(auto)\fR) will turn on auto coloring on the next placeholders until the color is switched again\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%m\fR: left (\fB<\fR), right (\fB>\fR) or boundary (\fB\-\fR) mark
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%n\fR: newline
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%%\fR: a raw
\fI%\fR
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%x00\fR: print a byte from a hex code
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%w([<w>[,<i1>[,<i2>]]])\fR: switch line wrapping, like the \-w option of
\fBgit-shortlog\fR(1)\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%<(<N>[,trunc|ltrunc|mtrunc])\fR: make the next placeholder take at least N columns, padding spaces on the right if necessary\&. Optionally truncate at the beginning (ltrunc), the middle (mtrunc) or the end (trunc) if the output is longer than N columns\&. Note that truncating only works correctly with N >= 2\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%<|(<N>)\fR: make the next placeholder take at least until Nth columns, padding spaces on the right if necessary
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%>(<N>)\fR,
\fI%>|(<N>)\fR: similar to
\fI%<(<N>)\fR,
\fI%<|(<N>)\fR
respectively, but padding spaces on the left
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%>>(<N>)\fR,
\fI%>>|(<N>)\fR: similar to
\fI%>(<N>)\fR,
\fI%>|(<N>)\fR
respectively, except that if the next placeholder takes more spaces than given and there are spaces on its left, use those spaces
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI%><(<N>)\fR,
\fI%><|(<N>)\fR: similar to
\fI%<(<N>)\fR,
\fI%<|(<N>)\fR
respectively, but padding both sides (i\&.e\&. the text is centered)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
%(trailers[:options]): display the trailers of the body as interpreted by
\fBgit-interpret-trailers\fR(1)\&. The
\fBtrailers\fR
string may be followed by a colon and zero or more comma\-separated options\&. If the
\fBonly\fR
option is given, omit non\-trailer lines from the trailer block\&. If the
\fBunfold\fR
option is given, behave as if interpret\-trailer\(cqs
\fB\-\-unfold\fR
option was given\&. E\&.g\&.,
\fB%(trailers:only,unfold)\fR
to do both\&.
.RE
.RE
.if n \{\
.sp
.\}
.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBNote\fR
.ps -1
.br
.sp
Some placeholders may depend on other options given to the revision traversal engine\&. For example, the \fB%g*\fR reflog options will insert an empty string unless we are traversing reflog entries (e\&.g\&., by \fBgit log \-g\fR)\&. The \fB%d\fR and \fB%D\fR placeholders will use the "short" decoration format if \fB\-\-decorate\fR was not already provided on the command line\&.
.sp .5v
.RE
.sp
If you add a \fB+\fR (plus sign) after \fI%\fR of a placeholder, a line\-feed is inserted immediately before the expansion if and only if the placeholder expands to a non\-empty string\&.
.sp
If you add a \fB\-\fR (minus sign) after \fI%\fR of a placeholder, all consecutive line\-feeds immediately preceding the expansion are deleted if and only if the placeholder expands to an empty string\&.
.sp
If you add a ` ` (space) after \fI%\fR of a placeholder, a space is inserted immediately before the expansion if and only if the placeholder expands to a non\-empty string\&.
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fItformat:\fR
.sp
The
\fItformat:\fR
format works exactly like
\fIformat:\fR, except that it provides "terminator" semantics instead of "separator" semantics\&. In other words, each commit has the message terminator character (usually a newline) appended, rather than a separator placed between entries\&. This means that the final entry of a single\-line format will be properly terminated with a new line, just as the "oneline" format does\&. For example:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git log \-2 \-\-pretty=format:%h 4da45bef \e
  | perl \-pe \(aq$_ \&.= " \-\- NO NEWLINE\en" unless /\en/\(aq
4da45be
7134973 \-\- NO NEWLINE

$ git log \-2 \-\-pretty=tformat:%h 4da45bef \e
  | perl \-pe \(aq$_ \&.= " \-\- NO NEWLINE\en" unless /\en/\(aq
4da45be
7134973
.fi
.if n \{\
.RE
.\}
.sp
In addition, any unrecognized string that has a
\fB%\fR
in it is interpreted as if it has
\fBtformat:\fR
in front of it\&. For example, these two are equivalent:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git log \-2 \-\-pretty=tformat:%h 4da45bef
$ git log \-2 \-\-pretty=%h 4da45bef
.fi
.if n \{\
.RE
.\}
.sp
.RE
.SH "COMMON DIFF OPTIONS"
.PP
\-p, \-u, \-\-patch
.RS 4
Generate patch (see section on generating patches)\&.
.RE
.PP
\-s, \-\-no\-patch
.RS 4
Suppress diff output\&. Useful for commands like
\fBgit show\fR
that show the patch by default, or to cancel the effect of
\fB\-\-patch\fR\&.
.RE
.PP
\-U<n>, \-\-unified=<n>
.RS 4
Generate diffs with <n> lines of context instead of the usual three\&. Implies
\fB\-p\fR\&.
.RE
.PP
\-\-raw
.RS 4
For each commit, show a summary of changes using the raw diff format\&. See the "RAW OUTPUT FORMAT" section of
\fBgit-diff\fR(1)\&. This is different from showing the log itself in raw format, which you can achieve with
\fB\-\-format=raw\fR\&.
.RE
.PP
\-\-patch\-with\-raw
.RS 4
Synonym for
\fB\-p \-\-raw\fR\&.
.RE
.PP
\-\-indent\-heuristic
.RS 4
Enable the heuristic that shifts diff hunk boundaries to make patches easier to read\&. This is the default\&.
.RE
.PP
\-\-no\-indent\-heuristic
.RS 4
Disable the indent heuristic\&.
.RE
.PP
\-\-minimal
.RS 4
Spend extra time to make sure the smallest possible diff is produced\&.
.RE
.PP
\-\-patience
.RS 4
Generate a diff using the "patience diff" algorithm\&.
.RE
.PP
\-\-histogram
.RS 4
Generate a diff using the "histogram diff" algorithm\&.
.RE
.PP
\-\-anchored=<text>
.RS 4
Generate a diff using the "anchored diff" algorithm\&.
.sp
This option may be specified more than once\&.
.sp
If a line exists in both the source and destination, exists only once, and starts with this text, this algorithm attempts to prevent it from appearing as a deletion or addition in the output\&. It uses the "patience diff" algorithm internally\&.
.RE
.PP
\-\-diff\-algorithm={patience|minimal|histogram|myers}
.RS 4
Choose a diff algorithm\&. The variants are as follows:
.PP
\fBdefault\fR, \fBmyers\fR
.RS 4
The basic greedy diff algorithm\&. Currently, this is the default\&.
.RE
.PP
\fBminimal\fR
.RS 4
Spend extra time to make sure the smallest possible diff is produced\&.
.RE
.PP
\fBpatience\fR
.RS 4
Use "patience diff" algorithm when generating patches\&.
.RE
.PP
\fBhistogram\fR
.RS 4
This algorithm extends the patience algorithm to "support low\-occurrence common elements"\&.
.RE
.sp
For instance, if you configured the
\fBdiff\&.algorithm\fR
variable to a non\-default value and want to use the default one, then you have to use
\fB\-\-diff\-algorithm=default\fR
option\&.
.RE
.PP
\-\-stat[=<width>[,<name\-width>[,<count>]]]
.RS 4
Generate a diffstat\&. By default, as much space as necessary will be used for the filename part, and the rest for the graph part\&. Maximum width defaults to terminal width, or 80 columns if not connected to a terminal, and can be overridden by
\fB<width>\fR\&. The width of the filename part can be limited by giving another width
\fB<name\-width>\fR
after a comma\&. The width of the graph part can be limited by using
\fB\-\-stat\-graph\-width=<width>\fR
(affects all commands generating a stat graph) or by setting
\fBdiff\&.statGraphWidth=<width>\fR
(does not affect
\fBgit format\-patch\fR)\&. By giving a third parameter
\fB<count>\fR, you can limit the output to the first
\fB<count>\fR
lines, followed by
\fB\&.\&.\&.\fR
if there are more\&.
.sp
These parameters can also be set individually with
\fB\-\-stat\-width=<width>\fR,
\fB\-\-stat\-name\-width=<name\-width>\fR
and
\fB\-\-stat\-count=<count>\fR\&.
.RE
.PP
\-\-compact\-summary
.RS 4
Output a condensed summary of extended header information such as file creations or deletions ("new" or "gone", optionally "+l" if it\(cqs a symlink) and mode changes ("+x" or "\-x" for adding or removing executable bit respectively) in diffstat\&. The information is put between the filename part and the graph part\&. Implies
\fB\-\-stat\fR\&.
.RE
.PP
\-\-numstat
.RS 4
Similar to
\fB\-\-stat\fR, but shows number of added and deleted lines in decimal notation and pathname without abbreviation, to make it more machine friendly\&. For binary files, outputs two
\fB\-\fR
instead of saying
\fB0 0\fR\&.
.RE
.PP
\-\-shortstat
.RS 4
Output only the last line of the
\fB\-\-stat\fR
format containing total number of modified files, as well as number of added and deleted lines\&.
.RE
.PP
\-\-dirstat[=<param1,param2,\&...>]
.RS 4
Output the distribution of relative amount of changes for each sub\-directory\&. The behavior of
\fB\-\-dirstat\fR
can be customized by passing it a comma separated list of parameters\&. The defaults are controlled by the
\fBdiff\&.dirstat\fR
configuration variable (see
\fBgit-config\fR(1))\&. The following parameters are available:
.PP
\fBchanges\fR
.RS 4
Compute the dirstat numbers by counting the lines that have been removed from the source, or added to the destination\&. This ignores the amount of pure code movements within a file\&. In other words, rearranging lines in a file is not counted as much as other changes\&. This is the default behavior when no parameter is given\&.
.RE
.PP
\fBlines\fR
.RS 4
Compute the dirstat numbers by doing the regular line\-based diff analysis, and summing the removed/added line counts\&. (For binary files, count 64\-byte chunks instead, since binary files have no natural concept of lines)\&. This is a more expensive
\fB\-\-dirstat\fR
behavior than the
\fBchanges\fR
behavior, but it does count rearranged lines within a file as much as other changes\&. The resulting output is consistent with what you get from the other
\fB\-\-*stat\fR
options\&.
.RE
.PP
\fBfiles\fR
.RS 4
Compute the dirstat numbers by counting the number of files changed\&. Each changed file counts equally in the dirstat analysis\&. This is the computationally cheapest
\fB\-\-dirstat\fR
behavior, since it does not have to look at the file contents at all\&.
.RE
.PP
\fBcumulative\fR
.RS 4
Count changes in a child directory for the parent directory as well\&. Note that when using
\fBcumulative\fR, the sum of the percentages reported may exceed 100%\&. The default (non\-cumulative) behavior can be specified with the
\fBnoncumulative\fR
parameter\&.
.RE
.PP
<limit>
.RS 4
An integer parameter specifies a cut\-off percent (3% by default)\&. Directories contributing less than this percentage of the changes are not shown in the output\&.
.RE
.sp
Example: The following will count changed files, while ignoring directories with less than 10% of the total amount of changed files, and accumulating child directory counts in the parent directories:
\fB\-\-dirstat=files,10,cumulative\fR\&.
.RE
.PP
\-\-summary
.RS 4
Output a condensed summary of extended header information such as creations, renames and mode changes\&.
.RE
.PP
\-\-patch\-with\-stat
.RS 4
Synonym for
\fB\-p \-\-stat\fR\&.
.RE
.PP
\-z
.RS 4
Separate the commits with NULs instead of with new newlines\&.
.sp
Also, when
\fB\-\-raw\fR
or
\fB\-\-numstat\fR
has been given, do not munge pathnames and use NULs as output field terminators\&.
.sp
Without this option, pathnames with "unusual" characters are quoted as explained for the configuration variable
\fBcore\&.quotePath\fR
(see
\fBgit-config\fR(1))\&.
.RE
.PP
\-\-name\-only
.RS 4
Show only names of changed files\&.
.RE
.PP
\-\-name\-status
.RS 4
Show only names and status of changed files\&. See the description of the
\fB\-\-diff\-filter\fR
option on what the status letters mean\&.
.RE
.PP
\-\-submodule[=<format>]
.RS 4
Specify how differences in submodules are shown\&. When specifying
\fB\-\-submodule=short\fR
the
\fIshort\fR
format is used\&. This format just shows the names of the commits at the beginning and end of the range\&. When
\fB\-\-submodule\fR
or
\fB\-\-submodule=log\fR
is specified, the
\fIlog\fR
format is used\&. This format lists the commits in the range like
\fBgit-submodule\fR(1)
\fBsummary\fR
does\&. When
\fB\-\-submodule=diff\fR
is specified, the
\fIdiff\fR
format is used\&. This format shows an inline diff of the changes in the submodule contents between the commit range\&. Defaults to
\fBdiff\&.submodule\fR
or the
\fIshort\fR
format if the config option is unset\&.
.RE
.PP
\-\-color[=<when>]
.RS 4
Show colored diff\&.
\fB\-\-color\fR
(i\&.e\&. without
\fI=<when>\fR) is the same as
\fB\-\-color=always\fR\&.
\fI<when>\fR
can be one of
\fBalways\fR,
\fBnever\fR, or
\fBauto\fR\&.
.RE
.PP
\-\-no\-color
.RS 4
Turn off colored diff\&. It is the same as
\fB\-\-color=never\fR\&.
.RE
.PP
\-\-color\-moved[=<mode>]
.RS 4
Moved lines of code are colored differently\&. The <mode> defaults to
\fIno\fR
if the option is not given and to
\fIzebra\fR
if the option with no mode is given\&. The mode must be one of:
.PP
no
.RS 4
Moved lines are not highlighted\&.
.RE
.PP
default
.RS 4
Is a synonym for
\fBzebra\fR\&. This may change to a more sensible mode in the future\&.
.RE
.PP
plain
.RS 4
Any line that is added in one location and was removed in another location will be colored with
\fIcolor\&.diff\&.newMoved\fR\&. Similarly
\fIcolor\&.diff\&.oldMoved\fR
will be used for removed lines that are added somewhere else in the diff\&. This mode picks up any moved line, but it is not very useful in a review to determine if a block of code was moved without permutation\&.
.RE
.PP
blocks
.RS 4
Blocks of moved text of at least 20 alphanumeric characters are detected greedily\&. The detected blocks are painted using either the
\fIcolor\&.diff\&.{old,new}Moved\fR
color\&. Adjacent blocks cannot be told apart\&.
.RE
.PP
zebra
.RS 4
Blocks of moved text are detected as in
\fIblocks\fR
mode\&. The blocks are painted using either the
\fIcolor\&.diff\&.{old,new}Moved\fR
color or
\fIcolor\&.diff\&.{old,new}MovedAlternative\fR\&. The change between the two colors indicates that a new block was detected\&.
.RE
.PP
dimmed\-zebra
.RS 4
Similar to
\fIzebra\fR, but additional dimming of uninteresting parts of moved code is performed\&. The bordering lines of two adjacent blocks are considered interesting, the rest is uninteresting\&.
\fBdimmed_zebra\fR
is a deprecated synonym\&.
.RE
.RE
.PP
\-\-color\-moved\-ws=<modes>
.RS 4
This configures how white spaces are ignored when performing the move detection for
\fB\-\-color\-moved\fR\&. These modes can be given as a comma separated list:
.PP
ignore\-space\-at\-eol
.RS 4
Ignore changes in whitespace at EOL\&.
.RE
.PP
ignore\-space\-change
.RS 4
Ignore changes in amount of whitespace\&. This ignores whitespace at line end, and considers all other sequences of one or more whitespace characters to be equivalent\&.
.RE
.PP
ignore\-all\-space
.RS 4
Ignore whitespace when comparing lines\&. This ignores differences even if one line has whitespace where the other line has none\&.
.RE
.PP
allow\-indentation\-change
.RS 4
Initially ignore any white spaces in the move detection, then group the moved code blocks only into a block if the change in whitespace is the same per line\&. This is incompatible with the other modes\&.
.RE
.RE
.PP
\-\-word\-diff[=<mode>]
.RS 4
Show a word diff, using the <mode> to delimit changed words\&. By default, words are delimited by whitespace; see
\fB\-\-word\-diff\-regex\fR
below\&. The <mode> defaults to
\fIplain\fR, and must be one of:
.PP
color
.RS 4
Highlight changed words using only colors\&. Implies
\fB\-\-color\fR\&.
.RE
.PP
plain
.RS 4
Show words as
\fB[\-removed\-]\fR
and
\fB{+added+}\fR\&. Makes no attempts to escape the delimiters if they appear in the input, so the output may be ambiguous\&.
.RE
.PP
porcelain
.RS 4
Use a special line\-based format intended for script consumption\&. Added/removed/unchanged runs are printed in the usual unified diff format, starting with a
\fB+\fR/\fB\-\fR/` ` character at the beginning of the line and extending to the end of the line\&. Newlines in the input are represented by a tilde
\fB~\fR
on a line of its own\&.
.RE
.PP
none
.RS 4
Disable word diff again\&.
.RE
.sp
Note that despite the name of the first mode, color is used to highlight the changed parts in all modes if enabled\&.
.RE
.PP
\-\-word\-diff\-regex=<regex>
.RS 4
Use <regex> to decide what a word is, instead of considering runs of non\-whitespace to be a word\&. Also implies
\fB\-\-word\-diff\fR
unless it was already enabled\&.
.sp
Every non\-overlapping match of the <regex> is considered a word\&. Anything between these matches is considered whitespace and ignored(!) for the purposes of finding differences\&. You may want to append
\fB|[^[:space:]]\fR
to your regular expression to make sure that it matches all non\-whitespace characters\&. A match that contains a newline is silently truncated(!) at the newline\&.
.sp
For example,
\fB\-\-word\-diff\-regex=\&.\fR
will treat each character as a word and, correspondingly, show differences character by character\&.
.sp
The regex can also be set via a diff driver or configuration option, see
\fBgitattributes\fR(5)
or
\fBgit-config\fR(1)\&. Giving it explicitly overrides any diff driver or configuration setting\&. Diff drivers override configuration settings\&.
.RE
.PP
\-\-color\-words[=<regex>]
.RS 4
Equivalent to
\fB\-\-word\-diff=color\fR
plus (if a regex was specified)
\fB\-\-word\-diff\-regex=<regex>\fR\&.
.RE
.PP
\-\-no\-renames
.RS 4
Turn off rename detection, even when the configuration file gives the default to do so\&.
.RE
.PP
\-\-check
.RS 4
Warn if changes introduce conflict markers or whitespace errors\&. What are considered whitespace errors is controlled by
\fBcore\&.whitespace\fR
configuration\&. By default, trailing whitespaces (including lines that consist solely of whitespaces) and a space character that is immediately followed by a tab character inside the initial indent of the line are considered whitespace errors\&. Exits with non\-zero status if problems are found\&. Not compatible with \-\-exit\-code\&.
.RE
.PP
\-\-ws\-error\-highlight=<kind>
.RS 4
Highlight whitespace errors in the
\fBcontext\fR,
\fBold\fR
or
\fBnew\fR
lines of the diff\&. Multiple values are separated by comma,
\fBnone\fR
resets previous values,
\fBdefault\fR
reset the list to
\fBnew\fR
and
\fBall\fR
is a shorthand for
\fBold,new,context\fR\&. When this option is not given, and the configuration variable
\fBdiff\&.wsErrorHighlight\fR
is not set, only whitespace errors in
\fBnew\fR
lines are highlighted\&. The whitespace errors are colored with
\fBcolor\&.diff\&.whitespace\fR\&.
.RE
.PP
\-\-full\-index
.RS 4
Instead of the first handful of characters, show the full pre\- and post\-image blob object names on the "index" line when generating patch format output\&.
.RE
.PP
\-\-binary
.RS 4
In addition to
\fB\-\-full\-index\fR, output a binary diff that can be applied with
\fBgit\-apply\fR\&.
.RE
.PP
\-\-abbrev[=<n>]
.RS 4
Instead of showing the full 40\-byte hexadecimal object name in diff\-raw format output and diff\-tree header lines, show only a partial prefix\&. This is independent of the
\fB\-\-full\-index\fR
option above, which controls the diff\-patch output format\&. Non default number of digits can be specified with
\fB\-\-abbrev=<n>\fR\&.
.RE
.PP
\-B[<n>][/<m>], \-\-break\-rewrites[=[<n>][/<m>]]
.RS 4
Break complete rewrite changes into pairs of delete and create\&. This serves two purposes:
.sp
It affects the way a change that amounts to a total rewrite of a file not as a series of deletion and insertion mixed together with a very few lines that happen to match textually as the context, but as a single deletion of everything old followed by a single insertion of everything new, and the number
\fBm\fR
controls this aspect of the \-B option (defaults to 60%)\&.
\fB\-B/70%\fR
specifies that less than 30% of the original should remain in the result for Git to consider it a total rewrite (i\&.e\&. otherwise the resulting patch will be a series of deletion and insertion mixed together with context lines)\&.
.sp
When used with \-M, a totally\-rewritten file is also considered as the source of a rename (usually \-M only considers a file that disappeared as the source of a rename), and the number
\fBn\fR
controls this aspect of the \-B option (defaults to 50%)\&.
\fB\-B20%\fR
specifies that a change with addition and deletion compared to 20% or more of the file\(cqs size are eligible for being picked up as a possible source of a rename to another file\&.
.RE
.PP
\-M[<n>], \-\-find\-renames[=<n>]
.RS 4
If generating diffs, detect and report renames for each commit\&. For following files across renames while traversing history, see
\fB\-\-follow\fR\&. If
\fBn\fR
is specified, it is a threshold on the similarity index (i\&.e\&. amount of addition/deletions compared to the file\(cqs size)\&. For example,
\fB\-M90%\fR
means Git should consider a delete/add pair to be a rename if more than 90% of the file hasn\(cqt changed\&. Without a
\fB%\fR
sign, the number is to be read as a fraction, with a decimal point before it\&. I\&.e\&.,
\fB\-M5\fR
becomes 0\&.5, and is thus the same as
\fB\-M50%\fR\&. Similarly,
\fB\-M05\fR
is the same as
\fB\-M5%\fR\&. To limit detection to exact renames, use
\fB\-M100%\fR\&. The default similarity index is 50%\&.
.RE
.PP
\-C[<n>], \-\-find\-copies[=<n>]
.RS 4
Detect copies as well as renames\&. See also
\fB\-\-find\-copies\-harder\fR\&. If
\fBn\fR
is specified, it has the same meaning as for
\fB\-M<n>\fR\&.
.RE
.PP
\-\-find\-copies\-harder
.RS 4
For performance reasons, by default,
\fB\-C\fR
option finds copies only if the original file of the copy was modified in the same changeset\&. This flag makes the command inspect unmodified files as candidates for the source of copy\&. This is a very expensive operation for large projects, so use it with caution\&. Giving more than one
\fB\-C\fR
option has the same effect\&.
.RE
.PP
\-D, \-\-irreversible\-delete
.RS 4
Omit the preimage for deletes, i\&.e\&. print only the header but not the diff between the preimage and
\fB/dev/null\fR\&. The resulting patch is not meant to be applied with
\fBpatch\fR
or
\fBgit apply\fR; this is solely for people who want to just concentrate on reviewing the text after the change\&. In addition, the output obviously lacks enough information to apply such a patch in reverse, even manually, hence the name of the option\&.
.sp
When used together with
\fB\-B\fR, omit also the preimage in the deletion part of a delete/create pair\&.
.RE
.PP
\-l<num>
.RS 4
The
\fB\-M\fR
and
\fB\-C\fR
options require O(n^2) processing time where n is the number of potential rename/copy targets\&. This option prevents rename/copy detection from running if the number of rename/copy targets exceeds the specified number\&.
.RE
.PP
\-\-diff\-filter=[(A|C|D|M|R|T|U|X|B)\&...[*]]
.RS 4
Select only files that are Added (\fBA\fR), Copied (\fBC\fR), Deleted (\fBD\fR), Modified (\fBM\fR), Renamed (\fBR\fR), have their type (i\&.e\&. regular file, symlink, submodule, \&...) changed (\fBT\fR), are Unmerged (\fBU\fR), are Unknown (\fBX\fR), or have had their pairing Broken (\fBB\fR)\&. Any combination of the filter characters (including none) can be used\&. When
\fB*\fR
(All\-or\-none) is added to the combination, all paths are selected if there is any file that matches other criteria in the comparison; if there is no file that matches other criteria, nothing is selected\&.
.sp
Also, these upper\-case letters can be downcased to exclude\&. E\&.g\&.
\fB\-\-diff\-filter=ad\fR
excludes added and deleted paths\&.
.sp
Note that not all diffs can feature all types\&. For instance, diffs from the index to the working tree can never have Added entries (because the set of paths included in the diff is limited by what is in the index)\&. Similarly, copied and renamed entries cannot appear if detection for those types is disabled\&.
.RE
.PP
\-S<string>
.RS 4
Look for differences that change the number of occurrences of the specified string (i\&.e\&. addition/deletion) in a file\&. Intended for the scripter\(cqs use\&.
.sp
It is useful when you\(cqre looking for an exact block of code (like a struct), and want to know the history of that block since it first came into being: use the feature iteratively to feed the interesting block in the preimage back into
\fB\-S\fR, and keep going until you get the very first version of the block\&.
.sp
Binary files are searched as well\&.
.RE
.PP
\-G<regex>
.RS 4
Look for differences whose patch text contains added/removed lines that match <regex>\&.
.sp
To illustrate the difference between
\fB\-S<regex> \-\-pickaxe\-regex\fR
and
\fB\-G<regex>\fR, consider a commit with the following diff in the same file:
.sp
.if n \{\
.RS 4
.\}
.nf
+    return !regexec(regexp, two\->ptr, 1, &regmatch, 0);
\&.\&.\&.
\-    hit = !regexec(regexp, mf2\&.ptr, 1, &regmatch, 0);
.fi
.if n \{\
.RE
.\}
.sp
While
\fBgit log \-G"regexec\e(regexp"\fR
will show this commit,
\fBgit log \-S"regexec\e(regexp" \-\-pickaxe\-regex\fR
will not (because the number of occurrences of that string did not change)\&.
.sp
Unless
\fB\-\-text\fR
is supplied patches of binary files without a textconv filter will be ignored\&.
.sp
See the
\fIpickaxe\fR
entry in
\fBgitdiffcore\fR(7)
for more information\&.
.RE
.PP
\-\-find\-object=<object\-id>
.RS 4
Look for differences that change the number of occurrences of the specified object\&. Similar to
\fB\-S\fR, just the argument is different in that it doesn\(cqt search for a specific string but for a specific object id\&.
.sp
The object can be a blob or a submodule commit\&. It implies the
\fB\-t\fR
option in
\fBgit\-log\fR
to also find trees\&.
.RE
.PP
\-\-pickaxe\-all
.RS 4
When
\fB\-S\fR
or
\fB\-G\fR
finds a change, show all the changes in that changeset, not just the files that contain the change in <string>\&.
.RE
.PP
\-\-pickaxe\-regex
.RS 4
Treat the <string> given to
\fB\-S\fR
as an extended POSIX regular expression to match\&.
.RE
.PP
\-O<orderfile>
.RS 4
Control the order in which files appear in the output\&. This overrides the
\fBdiff\&.orderFile\fR
configuration variable (see
\fBgit-config\fR(1))\&. To cancel
\fBdiff\&.orderFile\fR, use
\fB\-O/dev/null\fR\&.
.sp
The output order is determined by the order of glob patterns in <orderfile>\&. All files with pathnames that match the first pattern are output first, all files with pathnames that match the second pattern (but not the first) are output next, and so on\&. All files with pathnames that do not match any pattern are output last, as if there was an implicit match\-all pattern at the end of the file\&. If multiple pathnames have the same rank (they match the same pattern but no earlier patterns), their output order relative to each other is the normal order\&.
.sp
<orderfile> is parsed as follows:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Blank lines are ignored, so they can be used as separators for readability\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Lines starting with a hash ("\fB#\fR") are ignored, so they can be used for comments\&. Add a backslash ("\fB\e\fR") to the beginning of the pattern if it starts with a hash\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Each other line contains a single pattern\&.
.RE
.sp
Patterns have the same syntax and semantics as patterns used for fnmatch(3) without the FNM_PATHNAME flag, except a pathname also matches a pattern if removing any number of the final pathname components matches the pattern\&. For example, the pattern "\fBfoo*bar\fR" matches "\fBfooasdfbar\fR" and "\fBfoo/bar/baz/asdf\fR" but not "\fBfoobarx\fR"\&.
.RE
.PP
\-R
.RS 4
Swap two inputs; that is, show differences from index or on\-disk file to tree contents\&.
.RE
.PP
\-\-relative[=<path>]
.RS 4
When run from a subdirectory of the project, it can be told to exclude changes outside the directory and show pathnames relative to it with this option\&. When you are not in a subdirectory (e\&.g\&. in a bare repository), you can name which subdirectory to make the output relative to by giving a <path> as an argument\&.
.RE
.PP
\-a, \-\-text
.RS 4
Treat all files as text\&.
.RE
.PP
\-\-ignore\-cr\-at\-eol
.RS 4
Ignore carriage\-return at the end of line when doing a comparison\&.
.RE
.PP
\-\-ignore\-space\-at\-eol
.RS 4
Ignore changes in whitespace at EOL\&.
.RE
.PP
\-b, \-\-ignore\-space\-change
.RS 4
Ignore changes in amount of whitespace\&. This ignores whitespace at line end, and considers all other sequences of one or more whitespace characters to be equivalent\&.
.RE
.PP
\-w, \-\-ignore\-all\-space
.RS 4
Ignore whitespace when comparing lines\&. This ignores differences even if one line has whitespace where the other line has none\&.
.RE
.PP
\-\-ignore\-blank\-lines
.RS 4
Ignore changes whose lines are all blank\&.
.RE
.PP
\-\-inter\-hunk\-context=<lines>
.RS 4
Show the context between diff hunks, up to the specified number of lines, thereby fusing hunks that are close to each other\&. Defaults to
\fBdiff\&.interHunkContext\fR
or 0 if the config option is unset\&.
.RE
.PP
\-W, \-\-function\-context
.RS 4
Show whole surrounding functions of changes\&.
.RE
.PP
\-\-ext\-diff
.RS 4
Allow an external diff helper to be executed\&. If you set an external diff driver with
\fBgitattributes\fR(5), you need to use this option with
\fBgit-log\fR(1)
and friends\&.
.RE
.PP
\-\-no\-ext\-diff
.RS 4
Disallow external diff drivers\&.
.RE
.PP
\-\-textconv, \-\-no\-textconv
.RS 4
Allow (or disallow) external text conversion filters to be run when comparing binary files\&. See
\fBgitattributes\fR(5)
for details\&. Because textconv filters are typically a one\-way conversion, the resulting diff is suitable for human consumption, but cannot be applied\&. For this reason, textconv filters are enabled by default only for
\fBgit-diff\fR(1)
and
\fBgit-log\fR(1), but not for
\fBgit-format-patch\fR(1)
or diff plumbing commands\&.
.RE
.PP
\-\-ignore\-submodules[=<when>]
.RS 4
Ignore changes to submodules in the diff generation\&. <when> can be either "none", "untracked", "dirty" or "all", which is the default\&. Using "none" will consider the submodule modified when it either contains untracked or modified files or its HEAD differs from the commit recorded in the superproject and can be used to override any settings of the
\fIignore\fR
option in
\fBgit-config\fR(1)
or
\fBgitmodules\fR(5)\&. When "untracked" is used submodules are not considered dirty when they only contain untracked content (but they are still scanned for modified content)\&. Using "dirty" ignores all changes to the work tree of submodules, only changes to the commits stored in the superproject are shown (this was the behavior until 1\&.7\&.0)\&. Using "all" hides all changes to submodules\&.
.RE
.PP
\-\-src\-prefix=<prefix>
.RS 4
Show the given source prefix instead of "a/"\&.
.RE
.PP
\-\-dst\-prefix=<prefix>
.RS 4
Show the given destination prefix instead of "b/"\&.
.RE
.PP
\-\-no\-prefix
.RS 4
Do not show any source or destination prefix\&.
.RE
.PP
\-\-line\-prefix=<prefix>
.RS 4
Prepend an additional prefix to every line of output\&.
.RE
.PP
\-\-ita\-invisible\-in\-index
.RS 4
By default entries added by "git add \-N" appear as an existing empty file in "git diff" and a new file in "git diff \-\-cached"\&. This option makes the entry appear as a new file in "git diff" and non\-existent in "git diff \-\-cached"\&. This option could be reverted with
\fB\-\-ita\-visible\-in\-index\fR\&. Both options are experimental and could be removed in future\&.
.RE
.sp
For more detailed explanation on these common options, see also \fBgitdiffcore\fR(7)\&.
.SH "GENERATING PATCHES WITH \-P"
.sp
When "git\-diff\-index", "git\-diff\-tree", or "git\-diff\-files" are run with a \fB\-p\fR option, "git diff" without the \fB\-\-raw\fR option, or "git log" with the "\-p" option, they do not produce the output described above; instead they produce a patch file\&. You can customize the creation of such patches via the \fBGIT_EXTERNAL_DIFF\fR and the \fBGIT_DIFF_OPTS\fR environment variables\&.
.sp
What the \-p option produces is slightly different from the traditional diff format:
.sp
.RS 4
.ie n \{\
\h'-04' 1.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  1." 4.2
.\}
It is preceded with a "git diff" header that looks like this:
.sp
.if n \{\
.RS 4
.\}
.nf
diff \-\-git a/file1 b/file2
.fi
.if n \{\
.RE
.\}
.sp
The
\fBa/\fR
and
\fBb/\fR
filenames are the same unless rename/copy is involved\&. Especially, even for a creation or a deletion,
\fB/dev/null\fR
is
\fInot\fR
used in place of the
\fBa/\fR
or
\fBb/\fR
filenames\&.
.sp
When rename/copy is involved,
\fBfile1\fR
and
\fBfile2\fR
show the name of the source file of the rename/copy and the name of the file that rename/copy produces, respectively\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 2.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  2." 4.2
.\}
It is followed by one or more extended header lines:
.sp
.if n \{\
.RS 4
.\}
.nf
old mode <mode>
new mode <mode>
deleted file mode <mode>
new file mode <mode>
copy from <path>
copy to <path>
rename from <path>
rename to <path>
similarity index <number>
dissimilarity index <number>
index <hash>\&.\&.<hash> <mode>
.fi
.if n \{\
.RE
.\}
.sp
File modes are printed as 6\-digit octal numbers including the file type and file permission bits\&.
.sp
Path names in extended headers do not include the
\fBa/\fR
and
\fBb/\fR
prefixes\&.
.sp
The similarity index is the percentage of unchanged lines, and the dissimilarity index is the percentage of changed lines\&. It is a rounded down integer, followed by a percent sign\&. The similarity index value of 100% is thus reserved for two equal files, while 100% dissimilarity means that no line from the old file made it into the new one\&.
.sp
The index line includes the SHA\-1 checksum before and after the change\&. The <mode> is included if the file mode does not change; otherwise, separate lines indicate the old and the new mode\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 3.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  3." 4.2
.\}
Pathnames with "unusual" characters are quoted as explained for the configuration variable
\fBcore\&.quotePath\fR
(see
\fBgit-config\fR(1))\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 4.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  4." 4.2
.\}
All the
\fBfile1\fR
files in the output refer to files before the commit, and all the
\fBfile2\fR
files refer to files after the commit\&. It is incorrect to apply each change to each file sequentially\&. For example, this patch will swap a and b:
.sp
.if n \{\
.RS 4
.\}
.nf
diff \-\-git a/a b/b
rename from a
rename to b
diff \-\-git a/b b/a
rename from b
rename to a
.fi
.if n \{\
.RE
.\}
.RE
.SH "COMBINED DIFF FORMAT"
.sp
Any diff\-generating command can take the \fB\-c\fR or \fB\-\-cc\fR option to produce a \fIcombined diff\fR when showing a merge\&. This is the default format when showing merges with \fBgit-diff\fR(1) or \fBgit-show\fR(1)\&. Note also that you can give the \fB\-m\fR option to any of these commands to force generation of diffs with individual parents of a merge\&.
.sp
A \fIcombined diff\fR format looks like this:
.sp
.if n \{\
.RS 4
.\}
.nf
diff \-\-combined describe\&.c
index fabadb8,cc95eb0\&.\&.4866510
\-\-\- a/describe\&.c
+++ b/describe\&.c
@@@ \-98,20 \-98,12 +98,20 @@@
        return (a_date > b_date) ? \-1 : (a_date == b_date) ? 0 : 1;
  }

\- static void describe(char *arg)
 \-static void describe(struct commit *cmit, int last_one)
++static void describe(char *arg, int last_one)
  {
 +      unsigned char sha1[20];
 +      struct commit *cmit;
        struct commit_list *list;
        static int initialized = 0;
        struct commit_name *n;

 +      if (get_sha1(arg, sha1) < 0)
 +              usage(describe_usage);
 +      cmit = lookup_commit_reference(sha1);
 +      if (!cmit)
 +              usage(describe_usage);
 +
        if (!initialized) {
                initialized = 1;
                for_each_ref(get_name);
.fi
.if n \{\
.RE
.\}
.sp

.sp
.RS 4
.ie n \{\
\h'-04' 1.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  1." 4.2
.\}
It is preceded with a "git diff" header, that looks like this (when
\fB\-c\fR
option is used):
.sp
.if n \{\
.RS 4
.\}
.nf
diff \-\-combined file
.fi
.if n \{\
.RE
.\}
.sp
or like this (when
\fB\-\-cc\fR
option is used):
.sp
.if n \{\
.RS 4
.\}
.nf
diff \-\-cc file
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 2.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  2." 4.2
.\}
It is followed by one or more extended header lines (this example shows a merge with two parents):
.sp
.if n \{\
.RS 4
.\}
.nf
index <hash>,<hash>\&.\&.<hash>
mode <mode>,<mode>\&.\&.<mode>
new file mode <mode>
deleted file mode <mode>,<mode>
.fi
.if n \{\
.RE
.\}
.sp
The
\fBmode <mode>,<mode>\&.\&.<mode>\fR
line appears only if at least one of the <mode> is different from the rest\&. Extended headers with information about detected contents movement (renames and copying detection) are designed to work with diff of two <tree\-ish> and are not used by combined diff format\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 3.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  3." 4.2
.\}
It is followed by two\-line from\-file/to\-file header
.sp
.if n \{\
.RS 4
.\}
.nf
\-\-\- a/file
+++ b/file
.fi
.if n \{\
.RE
.\}
.sp
Similar to two\-line header for traditional
\fIunified\fR
diff format,
\fB/dev/null\fR
is used to signal created or deleted files\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 4.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  4." 4.2
.\}
Chunk header format is modified to prevent people from accidentally feeding it to
\fBpatch \-p1\fR\&. Combined diff format was created for review of merge commit changes, and was not meant for apply\&. The change is similar to the change in the extended
\fIindex\fR
header:
.sp
.if n \{\
.RS 4
.\}
.nf
@@@ <from\-file\-range> <from\-file\-range> <to\-file\-range> @@@
.fi
.if n \{\
.RE
.\}
.sp
There are (number of parents + 1)
\fB@\fR
characters in the chunk header for combined diff format\&.
.RE
.sp
Unlike the traditional \fIunified\fR diff format, which shows two files A and B with a single column that has \fB\-\fR (minus \(em appears in A but removed in B), \fB+\fR (plus \(em missing in A but added to B), or \fB" "\fR (space \(em unchanged) prefix, this format compares two or more files file1, file2,\&... with one file X, and shows how X differs from each of fileN\&. One column for each of fileN is prepended to the output line to note how X\(cqs line is different from it\&.
.sp
A \fB\-\fR character in the column N means that the line appears in fileN but it does not appear in the result\&. A \fB+\fR character in the column N means that the line appears in the result, and fileN does not have that line (in other words, the line was added, from the point of view of that parent)\&.
.sp
In the above example output, the function signature was changed from both files (hence two \fB\-\fR removals from both file1 and file2, plus \fB++\fR to mean one line that was added does not appear in either file1 or file2)\&. Also eight other lines are the same from file1 but do not appear in file2 (hence prefixed with \fB+\fR)\&.
.sp
When shown by \fBgit diff\-tree \-c\fR, it compares the parents of a merge commit with the merge result (i\&.e\&. file1\&.\&.fileN are the parents)\&. When shown by \fBgit diff\-files \-c\fR, it compares the two unresolved merge parents with the working tree file (i\&.e\&. file1 is stage 2 aka "our version", file2 is stage 3 aka "their version")\&.
.SH "EXAMPLES"
.PP
\fBgit log \-\-no\-merges\fR
.RS 4
Show the whole commit history, but skip any merges
.RE
.PP
\fBgit log v2\&.6\&.12\&.\&. include/scsi drivers/scsi\fR
.RS 4
Show all commits since version
\fIv2\&.6\&.12\fR
that changed any file in the
\fBinclude/scsi\fR
or
\fBdrivers/scsi\fR
subdirectories
.RE
.PP
\fBgit log \-\-since="2 weeks ago" \-\- gitk\fR
.RS 4
Show the changes during the last two weeks to the file
\fIgitk\fR\&. The
\fB\-\-\fR
is necessary to avoid confusion with the
\fBbranch\fR
named
\fIgitk\fR
.RE
.PP
\fBgit log \-\-name\-status release\&.\&.test\fR
.RS 4
Show the commits that are in the "test" branch but not yet in the "release" branch, along with the list of paths each commit modifies\&.
.RE
.PP
\fBgit log \-\-follow builtin/rev\-list\&.c\fR
.RS 4
Shows the commits that changed
\fBbuiltin/rev\-list\&.c\fR, including those commits that occurred before the file was given its present name\&.
.RE
.PP
\fBgit log \-\-branches \-\-not \-\-remotes=origin\fR
.RS 4
Shows all commits that are in any of local branches but not in any of remote\-tracking branches for
\fIorigin\fR
(what you have that origin doesn\(cqt)\&.
.RE
.PP
\fBgit log master \-\-not \-\-remotes=*/master\fR
.RS 4
Shows all commits that are in local master but not in any remote repository master branches\&.
.RE
.PP
\fBgit log \-p \-m \-\-first\-parent\fR
.RS 4
Shows the history including change diffs, but only from the \(lqmain branch\(rq perspective, skipping commits that come from merged branches, and showing full diffs of changes introduced by the merges\&. This makes sense only when following a strict policy of merging all topic branches when staying on a single integration branch\&.
.RE
.PP
\fBgit log \-L \(aq/int main/\(aq,/^}/:main\&.c\fR
.RS 4
Shows how the function
\fBmain()\fR
in the file
\fBmain\&.c\fR
evolved over time\&.
.RE
.PP
\fBgit log \-3\fR
.RS 4
Limits the number of commits to show to 3\&.
.RE
.SH "DISCUSSION"
.sp
Git is to some extent character encoding agnostic\&.
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The contents of the blob objects are uninterpreted sequences of bytes\&. There is no encoding translation at the core level\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Path names are encoded in UTF\-8 normalization form C\&. This applies to tree objects, the index file, ref names, as well as path names in command line arguments, environment variables and config files (\fB\&.git/config\fR
(see
\fBgit-config\fR(1)),
\fBgitignore\fR(5),
\fBgitattributes\fR(5)
and
\fBgitmodules\fR(5))\&.
.sp
Note that Git at the core level treats path names simply as sequences of non\-NUL bytes, there are no path name encoding conversions (except on Mac and Windows)\&. Therefore, using non\-ASCII path names will mostly work even on platforms and file systems that use legacy extended ASCII encodings\&. However, repositories created on such systems will not work properly on UTF\-8\-based systems (e\&.g\&. Linux, Mac, Windows) and vice versa\&. Additionally, many Git\-based tools simply assume path names to be UTF\-8 and will fail to display other encodings correctly\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Commit log messages are typically encoded in UTF\-8, but other extended ASCII encodings are also supported\&. This includes ISO\-8859\-x, CP125x and many others, but
\fInot\fR
UTF\-16/32, EBCDIC and CJK multi\-byte encodings (GBK, Shift\-JIS, Big5, EUC\-x, CP9xx etc\&.)\&.
.RE
.sp
Although we encourage that the commit log messages are encoded in UTF\-8, both the core and Git Porcelain are designed not to force UTF\-8 on projects\&. If all participants of a particular project find it more convenient to use legacy encodings, Git does not forbid it\&. However, there are a few things to keep in mind\&.
.sp
.RS 4
.ie n \{\
\h'-04' 1.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  1." 4.2
.\}
\fIgit commit\fR
and
\fIgit commit\-tree\fR
issues a warning if the commit log message given to it does not look like a valid UTF\-8 string, unless you explicitly say your project uses a legacy encoding\&. The way to say this is to have i18n\&.commitencoding in
\fB\&.git/config\fR
file, like this:
.sp
.if n \{\
.RS 4
.\}
.nf
[i18n]
        commitEncoding = ISO\-8859\-1
.fi
.if n \{\
.RE
.\}
.sp
Commit objects created with the above setting record the value of
\fBi18n\&.commitEncoding\fR
in its
\fBencoding\fR
header\&. This is to help other people who look at them later\&. Lack of this header implies that the commit log message is encoded in UTF\-8\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 2.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  2." 4.2
.\}
\fIgit log\fR,
\fIgit show\fR,
\fIgit blame\fR
and friends look at the
\fBencoding\fR
header of a commit object, and try to re\-code the log message into UTF\-8 unless otherwise specified\&. You can specify the desired output encoding with
\fBi18n\&.logOutputEncoding\fR
in
\fB\&.git/config\fR
file, like this:
.sp
.if n \{\
.RS 4
.\}
.nf
[i18n]
        logOutputEncoding = ISO\-8859\-1
.fi
.if n \{\
.RE
.\}
.sp
If you do not have this configuration variable, the value of
\fBi18n\&.commitEncoding\fR
is used instead\&.
.RE
.sp
Note that we deliberately chose not to re\-code the commit log message when a commit is made to force UTF\-8 at the commit object level, because re\-coding to UTF\-8 is not necessarily a reversible operation\&.
.SH "CONFIGURATION"
.sp
See \fBgit-config\fR(1) for core variables and \fBgit-diff\fR(1) for settings related to diff generation\&.
.PP
format\&.pretty
.RS 4
Default for the
\fB\-\-format\fR
option\&. (See
\fIPretty Formats\fR
above\&.) Defaults to
\fBmedium\fR\&.
.RE
.PP
i18n\&.logOutputEncoding
.RS 4
Encoding to use when displaying logs\&. (See
\fIDiscussion\fR
above\&.) Defaults to the value of
\fBi18n\&.commitEncoding\fR
if set, and UTF\-8 otherwise\&.
.RE
.PP
log\&.date
.RS 4
Default format for human\-readable dates\&. (Compare the
\fB\-\-date\fR
option\&.) Defaults to "default", which means to write dates like
\fBSat May 8 19:35:34 2010 \-0500\fR\&.
.RE
.PP
log\&.follow
.RS 4
If
\fBtrue\fR,
\fBgit log\fR
will act as if the
\fB\-\-follow\fR
option was used when a single <path> is given\&. This has the same limitations as
\fB\-\-follow\fR, i\&.e\&. it cannot be used to follow multiple files and does not work well on non\-linear history\&.
.RE
.PP
log\&.showRoot
.RS 4
If
\fBfalse\fR,
\fBgit log\fR
and related commands will not treat the initial commit as a big creation event\&. Any root commits in
\fBgit log \-p\fR
output would be shown without a diff attached\&. The default is
\fBtrue\fR\&.
.RE
.PP
log\&.showSignature
.RS 4
If
\fBtrue\fR,
\fBgit log\fR
and related commands will act as if the
\fB\-\-show\-signature\fR
option was passed to them\&.
.RE
.PP
mailmap\&.*
.RS 4
See
\fBgit-shortlog\fR(1)\&.
.RE
.PP
notes\&.displayRef
.RS 4
Which refs, in addition to the default set by
\fBcore\&.notesRef\fR
or
\fBGIT_NOTES_REF\fR, to read notes from when showing commit messages with the
\fBlog\fR
family of commands\&. See
\fBgit-notes\fR(1)\&.
.sp
May be an unabbreviated ref name or a glob and may be specified multiple times\&. A warning will be issued for refs that do not exist, but a glob that does not match any refs is silently ignored\&.
.sp
This setting can be disabled by the
\fB\-\-no\-notes\fR
option, overridden by the
\fBGIT_NOTES_DISPLAY_REF\fR
environment variable, and overridden by the
\fB\-\-notes=<ref>\fR
option\&.
.RE
.SH "GIT"
.sp
Part of the \fBgit\fR(1) suite
