'\" t
.\"     Title: git-show
.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
.\"      Date: 02/19/2019
.\"    Manual: Git Manual
.\"    Source: Git 2.21.0.rc2
.\"  Language: English
.\"
.TH "GIT\-SHOW" "1" "02/19/2019" "Git 2\&.21\&.0\&.rc2" "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-show \- Show various types of objects
.SH "SYNOPSIS"
.sp
.nf
\fIgit show\fR [<options>] [<object>\&...]
.fi
.sp
.SH "DESCRIPTION"
.sp
Shows one or more objects (blobs, trees, tags and commits)\&.
.sp
For commits it shows the log message and textual diff\&. It also presents the merge commit in a special format as produced by \fIgit diff\-tree \-\-cc\fR\&.
.sp
For tags, it shows the tag message and the referenced objects\&.
.sp
For trees, it shows the names (equivalent to \fIgit ls\-tree\fR with \-\-name\-only)\&.
.sp
For plain blobs, it shows the plain contents\&.
.sp
The command takes options applicable to the \fIgit diff\-tree\fR command to control how the changes the commit introduces are shown\&.
.sp
This manual page describes only the most frequently used options\&.
.SH "OPTIONS"
.PP
<object>\&...
.RS 4
The names of objects to show (defaults to
\fIHEAD\fR)\&. For a more complete list of ways to spell object names, see "SPECIFYING REVISIONS" section in
\fBgitrevisions\fR(7)\&.
.RE
.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
.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%S\fR: ref name given on the command line by which the commit was reached (like
\fBgit log \-\-source\fR), only works with
\fBgit log\fR
.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,\&.\&.\&.)\fR
will show the colors even when color is not otherwise enabled (though consider just using
\fB\-\-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
\-\-no\-color\-moved
.RS 4
Turn off move detection\&. This can be used to override configuration settings\&. It is the same as
\fB\-\-color\-moved=no\fR\&.
.RE
.PP
\-\-color\-moved\-ws=<modes>
.RS 4
This configures how whitespace is ignored when performing the move detection for
\fB\-\-color\-moved\fR\&. These modes can be given as a comma separated list:
.PP
no
.RS 4
Do not ignore whitespace when performing move detection\&.
.RE
.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 whitespace 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
\-\-no\-color\-moved\-ws
.RS 4
Do not ignore whitespace when performing move detection\&. This can be used to override configuration settings\&. It is the same as
\fB\-\-color\-moved\-ws=no\fR\&.
.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 show v1\&.0\&.0\fR
.RS 4
Shows the tag
\fBv1\&.0\&.0\fR, along with the object the tags points at\&.
.RE
.PP
\fBgit show v1\&.0\&.0^{tree}\fR
.RS 4
Shows the tree pointed to by the tag
\fBv1\&.0\&.0\fR\&.
.RE
.PP
\fBgit show \-s \-\-format=%s v1\&.0\&.0^{commit}\fR
.RS 4
Shows the subject of the commit pointed to by the tag
\fBv1\&.0\&.0\fR\&.
.RE
.PP
\fBgit show next~10:Documentation/README\fR
.RS 4
Shows the contents of the file
\fBDocumentation/README\fR
as they were current in the 10th last commit of the branch
\fBnext\fR\&.
.RE
.PP
\fBgit show master:Makefile master:t/Makefile\fR
.RS 4
Concatenates the contents of said Makefiles in the head of the branch
\fBmaster\fR\&.
.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 "GIT"
.sp
Part of the \fBgit\fR(1) suite
