Documentation / git-log.txton commit Merge "checkout ambiguous ref bugfix" into maint (d12d8ec)
   1git-log(1)
   2==========
   3
   4NAME
   5----
   6git-log - Show commit logs
   7
   8
   9SYNOPSIS
  10--------
  11'git log' [<options>] [<since>..<until>] [[\--] <path>...]
  12
  13DESCRIPTION
  14-----------
  15Shows the commit logs.
  16
  17The command takes options applicable to the 'git rev-list'
  18command to control what is shown and how, and options applicable to
  19the 'git diff-*' commands to control how the changes
  20each commit introduces are shown.
  21
  22
  23OPTIONS
  24-------
  25
  26-<n>::
  27        Limits the number of commits to show.
  28
  29<since>..<until>::
  30        Show only commits between the named two commits.  When
  31        either <since> or <until> is omitted, it defaults to
  32        `HEAD`, i.e. the tip of the current branch.
  33        For a more complete list of ways to spell <since>
  34        and <until>, see linkgit:gitrevisions[7].
  35
  36--follow::
  37        Continue listing the history of a file beyond renames
  38        (works only for a single file).
  39
  40--no-decorate::
  41--decorate[=short|full|no]::
  42        Print out the ref names of any commits that are shown. If 'short' is
  43        specified, the ref name prefixes 'refs/heads/', 'refs/tags/' and
  44        'refs/remotes/' will not be printed. If 'full' is specified, the
  45        full ref name (including prefix) will be printed. The default option
  46        is 'short'.
  47
  48--source::
  49        Print out the ref name given on the command line by which each
  50        commit was reached.
  51
  52--full-diff::
  53        Without this flag, "git log -p <path>..." shows commits that
  54        touch the specified paths, and diffs about the same specified
  55        paths.  With this, the full diff is shown for commits that touch
  56        the specified paths; this means that "<path>..." limits only
  57        commits, and doesn't limit diff for those commits.
  58+
  59Note that this affects all diff-based output types, e.g. those
  60produced by --stat etc.
  61
  62--log-size::
  63        Before the log message print out its size in bytes. Intended
  64        mainly for porcelain tools consumption. If git is unable to
  65        produce a valid value size is set to zero.
  66        Note that only message is considered, if also a diff is shown
  67        its size is not included.
  68
  69[\--] <path>...::
  70        Show only commits that affect any of the specified paths. To
  71        prevent confusion with options and branch names, paths may need
  72        to be prefixed with "\-- " to separate them from options or
  73        refnames.
  74
  75Common diff options
  76~~~~~~~~~~~~~~~~~~~
  77
  78:git-log: 1
  79include::diff-options.txt[]
  80
  81include::rev-list-options.txt[]
  82
  83include::pretty-formats.txt[]
  84
  85include::diff-generate-patch.txt[]
  86
  87Examples
  88--------
  89git log --no-merges::
  90
  91        Show the whole commit history, but skip any merges
  92
  93git log v2.6.12.. include/scsi drivers/scsi::
  94
  95        Show all commits since version 'v2.6.12' that changed any file
  96        in the include/scsi or drivers/scsi subdirectories
  97
  98git log --since="2 weeks ago" \-- gitk::
  99
 100        Show the changes during the last two weeks to the file 'gitk'.
 101        The "--" is necessary to avoid confusion with the *branch* named
 102        'gitk'
 103
 104git log --name-status release..test::
 105
 106        Show the commits that are in the "test" branch but not yet
 107        in the "release" branch, along with the list of paths
 108        each commit modifies.
 109
 110git log --follow builtin-rev-list.c::
 111
 112        Shows the commits that changed builtin-rev-list.c, including
 113        those commits that occurred before the file was given its
 114        present name.
 115
 116git log --branches --not --remotes=origin::
 117
 118        Shows all commits that are in any of local branches but not in
 119        any of remote-tracking branches for 'origin' (what you have that
 120        origin doesn't).
 121
 122git log master --not --remotes=*/master::
 123
 124        Shows all commits that are in local master but not in any remote
 125        repository master branches.
 126
 127git log -p -m --first-parent::
 128
 129        Shows the history including change diffs, but only from the
 130        "main branch" perspective, skipping commits that come from merged
 131        branches, and showing full diffs of changes introduced by the merges.
 132        This makes sense only when following a strict policy of merging all
 133        topic branches when staying on a single integration branch.
 134
 135
 136Discussion
 137----------
 138
 139include::i18n.txt[]
 140
 141Configuration
 142-------------
 143
 144See linkgit:git-config[1] for core variables and linkgit:git-diff[1]
 145for settings related to diff generation.
 146
 147format.pretty::
 148        Default for the `--format` option.  (See "PRETTY FORMATS" above.)
 149        Defaults to "medium".
 150
 151i18n.logOutputEncoding::
 152        Encoding to use when displaying logs.  (See "Discussion", above.)
 153        Defaults to the value of `i18n.commitEncoding` if set, UTF-8
 154        otherwise.
 155
 156log.date::
 157        Default format for human-readable dates.  (Compare the
 158        `--date` option.)  Defaults to "default", which means to write
 159        dates like `Sat May 8 19:35:34 2010 -0500`.
 160
 161log.showroot::
 162        If `false`, 'git log' and related commands will not treat the
 163        initial commit as a big creation event.  Any root commits in
 164        `git log -p` output would be shown without a diff attached.
 165        The default is `true`.
 166
 167mailmap.file::
 168        See linkgit:git-shortlog[1].
 169
 170notes.displayRef::
 171        Which refs, in addition to the default set by `core.notesRef`
 172        or 'GIT_NOTES_REF', to read notes from when showing commit
 173        messages with the 'log' family of commands.  See
 174        linkgit:git-notes[1].
 175+
 176May be an unabbreviated ref name or a glob and may be specified
 177multiple times.  A warning will be issued for refs that do not exist,
 178but a glob that does not match any refs is silently ignored.
 179+
 180This setting can be disabled by the `--no-standard-notes` option,
 181overridden by the 'GIT_NOTES_DISPLAY_REF' environment variable,
 182and supplemented by the `--show-notes` option.
 183
 184Author
 185------
 186Written by Linus Torvalds <torvalds@osdl.org>
 187
 188Documentation
 189--------------
 190Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
 191
 192GIT
 193---
 194Part of the linkgit:git[1] suite