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

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


SYNOPSIS
--------
'git-log' <option>...

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

The command takes options applicable to the gitlink:git-rev-list[1]
command to control what is shown and how, and options applicable to
the gitlink:git-diff-tree[1] commands to control how the changes
each commit introduces are shown.

This manual page describes only the most frequently used options.


OPTIONS
-------

include::pretty-options.txt[]

-<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 "SPECIFYING REVISIONS" section in
	gitlink:git-rev-parse[1].

--first-parent::
	Follow only the first parent commit upon seeing a merge
	commit.  This  option gives a better overview of the
	evolution of a particular branch.

-p::
	Show the change the commit introduces in a patch form.

-g, \--walk-reflogs::
	Show commits as they were recorded in the reflog. The log contains
	a record about how the tip of a reference was changed.
	See also gitlink:git-reflog[1].

--decorate::
	Print out the ref names of any commits that are shown.

--full-diff::
	Without this flag, "git log -p <paths>..." 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 "<paths>..." limits only
	commits, and doesn't limit diff for those commits.

--follow::
	Continue listing the history of a file beyond renames.

--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.

<paths>...::
	Show only commits that affect the specified paths.


include::pretty-formats.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 -r --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.

Discussion
----------

include::i18n.txt[]


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 gitlink:git[7] suite
