--pretty[=<format>]::
--format=<format>::

	Pretty-print the contents of the commit logs in a given format,
	where '<format>' can be one of 'oneline', 'short', 'medium',
	'full', 'fuller', 'reference', 'email', 'raw', 'format:<string>'
	and 'tformat:<string>'.  When '<format>' is none of the above,
	and has '%placeholder' in it, it acts as if
	'--pretty=tformat:<format>' were given.
+
See the "PRETTY FORMATS" section for some additional details for each
format.  When '=<format>' part is omitted, it defaults to 'medium'.
+
Note: you can specify the default pretty format in the repository
configuration (see linkgit:git-config[1]).

--abbrev-commit::
	Instead of showing the full 40-byte hexadecimal commit object
	name, show a prefix that names the object uniquely.
	"--abbrev=<n>" (which also modifies diff output, if it is displayed)
	option can be used to specify the minimum length of the prefix.
+
This should make "--pretty=oneline" a whole lot more readable for
people using 80-column terminals.

--no-abbrev-commit::
	Show the full 40-byte hexadecimal commit object name. This negates
	`--abbrev-commit`, either explicit or implied by other options such
	as "--oneline". It also overrides the `log.abbrevCommit` variable.

--oneline::
	This is a shorthand for "--pretty=oneline --abbrev-commit"
	used together.

--encoding=<encoding>::
	Commit objects record the character 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 `X` and we are outputting in `X`, we will output the object
	verbatim; this means that invalid sequences in the original
	commit may be copied to the output. Likewise, if iconv(3) fails
	to convert the commit, we will quietly output the original
	object verbatim.

--expand-tabs=<n>::
--expand-tabs::
--no-expand-tabs::
	Perform a tab expansion (replace each tab with enough spaces
	to fill to the next display column that is a multiple of '<n>')
	in the log message before showing it in the output.
	`--expand-tabs` is a short-hand for `--expand-tabs=8`, and
	`--no-expand-tabs` is a short-hand for `--expand-tabs=0`,
	which disables tab expansion.
+
By default, tabs are expanded in pretty formats that indent the log
message by 4 spaces (i.e.  'medium', which is the default, 'full',
and 'fuller').

ifndef::git-rev-list[]
--notes[=<ref>]::
	Show the notes (see linkgit:git-notes[1]) that annotate the
	commit, when showing the commit log message.  This is the default
	for `git log`, `git show` and `git whatchanged` commands when
	there is no `--pretty`, `--format`, or `--oneline` option given
	on the command line.
+
By default, the notes shown are from the notes refs listed in the
`core.notesRef` and `notes.displayRef` variables (or corresponding
environment overrides). See linkgit:git-config[1] for more details.
+
With an optional '<ref>' argument, use the ref to find the notes
to display.  The ref can specify the full refname when it begins
with `refs/notes/`; when it begins with `notes/`, `refs/` and otherwise
`refs/notes/` is prefixed to form the full name of the ref.
+
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).

--no-notes::
	Do not show notes. This negates the above `--notes` 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".

--show-notes-by-default::
	Show the default notes unless options for displaying specific
	notes are given.

--show-notes[=<ref>]::
--[no-]standard-notes::
	These options are deprecated. Use the above --notes/--no-notes
	options instead.
endif::git-rev-list[]

--show-signature::
	Check the validity of a signed commit object by passing the signature
	to `gpg --verify` and show the output.
