|  | git-log(1) | 
|  | ========== | 
|  |  | 
|  | NAME | 
|  | ---- | 
|  | git-log - Show commit logs | 
|  |  | 
|  |  | 
|  | SYNOPSIS | 
|  | -------- | 
|  | [verse] | 
|  | 'git log' [<options>] [<revision range>] [[\--] <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 | 
|  | ------- | 
|  |  | 
|  | --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. | 
|  |  | 
|  | --use-mailmap:: | 
|  | Use mailmap file to map author and committer names and email | 
|  | addresses to canonical real names and email addresses. See | 
|  | linkgit:git-shortlog[1]. | 
|  |  | 
|  | --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:: | 
|  | Include a line ``log size <number>'' in the output for each commit, | 
|  | where <number> is the length of that commit's message in bytes. | 
|  | Intended to speed up tools that read log messages from `git log` | 
|  | output by allowing them to allocate space in advance. | 
|  |  | 
|  | -L <start>,<end>:<file>:: | 
|  | -L :<regex>:<file>:: | 
|  | Trace the evolution of the line range given by "<start>,<end>" | 
|  | (or the funcname regex <regex>) within the <file>.  You may | 
|  | not give any pathspec limiters.  This is currently limited to | 
|  | a walk starting from a single revision, i.e., you may only | 
|  | give zero or one positive revision arguments. | 
|  | You can specify this option more than once. | 
|  | + | 
|  | include::line-range-format.txt[] | 
|  |  | 
|  | <revision range>:: | 
|  | Show only commits in the specified revision range.  When no | 
|  | <revision range> is specified, it defaults to `HEAD` (i.e. the | 
|  | whole history leading to the current commit).  `origin..HEAD` | 
|  | specifies all the commits reachable from the current commit | 
|  | (i.e. `HEAD`), but not from `origin`. For a complete list of | 
|  | ways to spell <revision range>, see the 'Specifying Ranges' | 
|  | section of linkgit:gitrevisions[7]. | 
|  |  | 
|  | [\--] <path>...:: | 
|  | Show only commits that are enough to explain how the files | 
|  | that match the specified paths came to be.  See 'History | 
|  | Simplification' below for details and other simplification | 
|  | modes. | 
|  | + | 
|  | Paths may need to be prefixed with ``\-- '' to separate them from | 
|  | options or the revision range, when confusion arises. | 
|  |  | 
|  | include::rev-list-options.txt[] | 
|  |  | 
|  | include::pretty-formats.txt[] | 
|  |  | 
|  | COMMON DIFF OPTIONS | 
|  | ------------------- | 
|  |  | 
|  | :git-log: 1 | 
|  | include::diff-options.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. | 
|  |  | 
|  | `git log -L '/int main/',/^}/:main.c`:: | 
|  |  | 
|  | Shows how the function `main()` in the file `main.c` evolved | 
|  | over time. | 
|  |  | 
|  | `git log -3`:: | 
|  |  | 
|  | Limits the number of commits to show to 3. | 
|  |  | 
|  | 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, and 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.*:: | 
|  | 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-notes` option, | 
|  | overridden by the 'GIT_NOTES_DISPLAY_REF' environment variable, | 
|  | and overridden by the `--notes=<ref>` option. | 
|  |  | 
|  | GIT | 
|  | --- | 
|  | Part of the linkgit:git[1] suite |