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[]

:git-log: 1
include::diff-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 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.

-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.
	Cannot be combined with --reverse.
	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[]

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.

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
