git-log(1)
==========

NAME
----
git-log - Show commit logs


SYNOPSIS
--------
'git log' [<options>] [<since>..<until>] [[\--] <path>...]

DESCRIPTION
-----------
Shows the commit logs.

The command takes options applicable to the 'git rev-list'
command to control what is shown and how, and options applicable to
the 'git diff-*' commands to control how the changes
each commit introduces are shown.


OPTIONS
-------

-<n>::
	Limits the number of commits to show.

<since>..<until>::
	Show only commits between the named two commits.  When
	either <since> or <until> is omitted, it defaults to
	`HEAD`, i.e. the tip of the current branch.
	For a more complete list of ways to spell <since>
	and <until>, see linkgit:gitrevisions[7].

--follow::
	Continue listing the history of a file beyond renames
	(works only for a single file).

--no-decorate::
--decorate[=short|full|no]::
	Print out the ref names of any commits that are shown. If 'short' is
	specified, the ref name prefixes 'refs/heads/', 'refs/tags/' and
	'refs/remotes/' will not be printed. If 'full' is specified, the
	full ref name (including prefix) will be printed. The default option
	is 'short'.

--source::
	Print out the ref name given on the command line by which each
	commit was reached.

--full-diff::
	Without this flag, "git log -p <path>..." 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't limit diff for those commits.
+
Note that this affects all diff-based output types, e.g. those
produced by --stat etc.

--log-size::
	Before the log message print out its size in bytes. Intended
	mainly for porcelain tools consumption. If git is unable to
	produce a valid value size is set to zero.
	Note that only message is considered, if also a diff is shown
	its size is not included.

[\--] <path>...::
	Show only commits that affect any of the specified paths. To
	prevent confusion with options and branch names, paths may need
	to be prefixed with "\-- " to separate them from options or
	refnames.

Common diff options
~~~~~~~~~~~~~~~~~~~

:git-log: 1
include::diff-options.txt[]

include::rev-list-options.txt[]

include::pretty-formats.txt[]

include::diff-generate-patch.txt[]

Examples
--------
git log --no-merges::

	Show the whole commit history, but skip any merges

git log v2.6.12.. include/scsi drivers/scsi::

	Show all commits since version 'v2.6.12' that changed any file
	in the include/scsi or drivers/scsi subdirectories

git log --since="2 weeks ago" \-- gitk::

	Show the changes during the last two weeks to the file 'gitk'.
	The "--" is necessary to avoid confusion with the *branch* named
	'gitk'

git log --name-status release..test::

	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.

git log --follow builtin-rev-list.c::

	Shows the commits that changed builtin-rev-list.c, including
	those commits that occurred before the file was given its
	present name.

git log --branches --not --remotes=origin::

	Shows all commits that are in any of local branches but not in
	any of remote-tracking branches for 'origin' (what you have that
	origin doesn't).

git log master --not --remotes=*/master::

	Shows all commits that are in local master but not in any remote
	repository master branches.

git log -p -m --first-parent::

	Shows the history including change diffs, but only from the
	"main branch" 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.


Discussion
----------

include::i18n.txt[]

Configuration
-------------

See linkgit:git-config[1] for core variables and linkgit:git-diff[1]
for settings related to diff generation.

format.pretty::
	Default for the `--format` option.  (See "PRETTY FORMATS" above.)
	Defaults to "medium".

i18n.logOutputEncoding::
	Encoding to use when displaying logs.  (See "Discussion", above.)
	Defaults to the value of `i18n.commitEncoding` if set, UTF-8
	otherwise.

log.date::
	Default format for human-readable dates.  (Compare the
	`--date` option.)  Defaults to "default", which means to write
	dates like `Sat May 8 19:35:34 2010 -0500`.

log.showroot::
	If `false`, 'git log' and related commands will not treat the
	initial commit as a big creation event.  Any root commits in
	`git log -p` output would be shown without a diff attached.
	The default is `true`.

mailmap.file::
	See linkgit:git-shortlog[1].

notes.displayRef::
	Which refs, in addition to the default set by `core.notesRef`
	or 'GIT_NOTES_REF', to read notes from when showing commit
	messages with the 'log' family of commands.  See
	linkgit:git-notes[1].
+
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.
+
This setting can be disabled by the `--no-standard-notes` option,
overridden by the 'GIT_NOTES_DISPLAY_REF' environment variable,
and supplemented by the `--show-notes` option.

Author
------
Written by Linus Torvalds <torvalds@osdl.org>

Documentation
--------------
Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.

GIT
---
Part of the linkgit:git[1] suite
