blob: 20e6d21a74abcd354dbad38ab55e82dd6a3fd869 [file] [log] [blame]
Junio C Hamano1a4e8412005-12-27 08:17:231git-log(1)
2==========
3
4NAME
5----
6git-log - Show commit logs
7
8
9SYNOPSIS
10--------
Junio C Hamano15567bc2011-07-23 00:51:5911[verse]
Junio C Hamanoccb82522018-05-08 07:52:0912'git log' [<options>] [<revision range>] [[--] <path>...]
Junio C Hamano1a4e8412005-12-27 08:17:2313
14DESCRIPTION
15-----------
Junio C Hamanoba7c8d82006-04-15 06:17:4216Shows the commit logs.
Junio C Hamano1a4e8412005-12-27 08:17:2317
Junio C Hamanob73af6c2013-12-03 22:07:1118The command takes options applicable to the `git rev-list`
Junio C Hamanoba7c8d82006-04-15 06:17:4219command to control what is shown and how, and options applicable to
Junio C Hamanob73af6c2013-12-03 22:07:1120the `git diff-*` commands to control how the changes
Junio C Hamanoba7c8d82006-04-15 06:17:4221each commit introduces are shown.
22
Junio C Hamano1a4e8412005-12-27 08:17:2323
24OPTIONS
25-------
Junio C Hamanoa340aaa2006-11-23 02:47:3326
Junio C Hamano78e3a782010-07-15 22:24:4527--follow::
28Continue listing the history of a file beyond renames
29(works only for a single file).
Junio C Hamano1a4e8412005-12-27 08:17:2330
Junio C Hamanocb39aea2010-05-09 07:24:4831--no-decorate::
Junio C Hamano37cf4082016-05-30 01:22:1432--decorate[=short|full|auto|no]::
Junio C Hamanoc276ec72009-08-26 01:35:2233Print out the ref names of any commits that are shown. If 'short' is
34specified, the ref name prefixes 'refs/heads/', 'refs/tags/' and
35'refs/remotes/' will not be printed. If 'full' is specified, the
Junio C Hamano37cf4082016-05-30 01:22:1436full ref name (including prefix) will be printed. If 'auto' is
37specified, then if the output is going to a terminal, the ref names
38are shown as if 'short' were given, otherwise no ref names are
39shown. The default option is 'short'.
Junio C Hamanoee695f22007-06-21 00:35:3640
Junio C Hamano371470a2017-12-13 22:26:4041--decorate-refs=<pattern>::
42--decorate-refs-exclude=<pattern>::
43If no `--decorate-refs` is given, pretend as if all refs were
44included. For each candidate, do not use it for decoration if it
45matches any patterns given to `--decorate-refs-exclude` or if it
Junio C Hamano0dd50942020-04-29 21:21:0546doesn't match any of the patterns given to `--decorate-refs`. The
47`log.excludeDecoration` config option allows excluding refs from
48the decorations, but an explicit `--decorate-refs` pattern will
49override a match in `log.excludeDecoration`.
Junio C Hamano371470a2017-12-13 22:26:4050
Junio C Hamano28363492008-11-14 08:26:3151--source::
52Print out the ref name given on the command line by which each
53commit was reached.
54
Junio C Hamano0dd50942020-04-29 21:21:0555--[no-]mailmap::
Junio C Hamano36594952019-07-25 22:26:5256--[no-]use-mailmap::
Junio C Hamanoce836cc2013-01-21 02:01:5357Use mailmap file to map author and committer names and email
Junio C Hamanob73af6c2013-12-03 22:07:1158addresses to canonical real names and email addresses. See
Junio C Hamanoce836cc2013-01-21 02:01:5359linkgit:git-shortlog[1].
60
Junio C Hamanoee695f22007-06-21 00:35:3661--full-diff::
Junio C Hamanob73af6c2013-12-03 22:07:1162Without this flag, `git log -p <path>...` shows commits that
Junio C Hamanoee695f22007-06-21 00:35:3663touch the specified paths, and diffs about the same specified
64paths. With this, the full diff is shown for commits that touch
Junio C Hamano9e395072008-07-31 22:11:2165the specified paths; this means that "<path>..." limits only
Junio C Hamanoee695f22007-06-21 00:35:3666commits, and doesn't limit diff for those commits.
Junio C Hamanoe85e36f2010-08-10 05:30:1467+
68Note that this affects all diff-based output types, e.g. those
Junio C Hamanob73af6c2013-12-03 22:07:1169produced by `--stat`, etc.
Junio C Hamanoea5dae62007-05-10 23:25:0870
Junio C Hamano024b6c62007-08-14 09:43:0871--log-size::
Junio C Hamanob73af6c2013-12-03 22:07:1172Include a line ``log size <number>'' in the output for each commit,
73where <number> is the length of that commit's message in bytes.
74Intended to speed up tools that read log messages from `git log`
75output by allowing them to allocate space in advance.
Junio C Hamano024b6c62007-08-14 09:43:0876
Junio C Hamano8eac2682013-09-09 22:35:2077-L <start>,<end>:<file>::
Junio C Hamanodd5004a2015-05-06 19:33:3278-L :<funcname>:<file>::
Junio C Hamano7e590a12013-06-02 23:46:5279Trace the evolution of the line range given by "<start>,<end>"
Junio C Hamanodd5004a2015-05-06 19:33:3280(or the function name regex <funcname>) within the <file>. You may
Junio C Hamano7e590a12013-06-02 23:46:5281not give any pathspec limiters. This is currently limited to
82a walk starting from a single revision, i.e., you may only
Junio C Hamano68793842020-01-06 23:07:0983give zero or one positive revision arguments, and
84<start> and <end> (or <funcname>) must exist in the starting revision.
85You can specify this option more than once. Implies `--patch`.
86Patch output can be suppressed using `--no-patch`, but other diff formats
87(namely `--raw`, `--numstat`, `--shortstat`, `--dirstat`, `--summary`,
88`--name-only`, `--name-status`, `--check`) are not currently implemented.
Junio C Hamano7e590a12013-06-02 23:46:5289+
Junio C Hamano7e590a12013-06-02 23:46:5290include::line-range-format.txt[]
91
Junio C Hamanof26c77e2013-04-27 00:06:0492<revision range>::
93Show only commits in the specified revision range. When no
94<revision range> is specified, it defaults to `HEAD` (i.e. the
95whole history leading to the current commit). `origin..HEAD`
96specifies all the commits reachable from the current commit
97(i.e. `HEAD`), but not from `origin`. For a complete list of
Junio C Hamanob73af6c2013-12-03 22:07:1198ways to spell <revision range>, see the 'Specifying Ranges'
Junio C Hamanof26c77e2013-04-27 00:06:0499section of linkgit:gitrevisions[7].
100
Junio C Hamanoccb82522018-05-08 07:52:09101[--] <path>...::
Junio C Hamano5723afa2011-08-31 00:49:23102Show only commits that are enough to explain how the files
Junio C Hamanob73af6c2013-12-03 22:07:11103that match the specified paths came to be. See 'History
104Simplification' below for details and other simplification
Junio C Hamano5723afa2011-08-31 00:49:23105modes.
106+
Junio C Hamanoccb82522018-05-08 07:52:09107Paths may need to be prefixed with `--` to separate them from
Junio C Hamanof26c77e2013-04-27 00:06:04108options or the revision range, when confusion arises.
Junio C Hamanoba7c8d82006-04-15 06:17:42109
Junio C Hamanob0e02952008-01-19 08:02:00110include::rev-list-options.txt[]
111
Junio C Hamano0430e3a2007-05-15 03:13:17112include::pretty-formats.txt[]
113
Junio C Hamano58f587a2013-07-22 19:20:59114COMMON DIFF OPTIONS
Junio C Hamanod2c978f2011-03-20 19:42:22115-------------------
116
117:git-log: 1
118include::diff-options.txt[]
119
Junio C Hamano00b8b632007-12-07 09:50:49120include::diff-generate-patch.txt[]
Junio C Hamano0430e3a2007-05-15 03:13:17121
Junio C Hamano58f587a2013-07-22 19:20:59122EXAMPLES
Junio C Hamano1a4e8412005-12-27 08:17:23123--------
Junio C Hamano16ebcd02011-08-05 00:05:45124`git log --no-merges`::
Junio C Hamano1a4e8412005-12-27 08:17:23125
126Show the whole commit history, but skip any merges
127
Junio C Hamano16ebcd02011-08-05 00:05:45128`git log v2.6.12.. include/scsi drivers/scsi`::
Junio C Hamano1a4e8412005-12-27 08:17:23129
130Show all commits since version 'v2.6.12' that changed any file
Junio C Hamanob73af6c2013-12-03 22:07:11131in the `include/scsi` or `drivers/scsi` subdirectories
Junio C Hamano1a4e8412005-12-27 08:17:23132
Junio C Hamanob76a6862012-05-02 22:02:46133`git log --since="2 weeks ago" -- gitk`::
Junio C Hamano1a4e8412005-12-27 08:17:23134
135Show the changes during the last two weeks to the file 'gitk'.
Junio C Hamanoccb82522018-05-08 07:52:09136The `--` is necessary to avoid confusion with the *branch* named
Junio C Hamano1a4e8412005-12-27 08:17:23137'gitk'
138
Junio C Hamano16ebcd02011-08-05 00:05:45139`git log --name-status release..test`::
Junio C Hamanoba7c8d82006-04-15 06:17:42140
141Show the commits that are in the "test" branch but not yet
142in the "release" branch, along with the list of paths
143each commit modifies.
Junio C Hamano1a4e8412005-12-27 08:17:23144
Junio C Hamano3a3357e2013-06-26 23:20:56145`git log --follow builtin/rev-list.c`::
Junio C Hamano235d53f2007-07-13 00:25:15146
Junio C Hamanob73af6c2013-12-03 22:07:11147Shows the commits that changed `builtin/rev-list.c`, including
Junio C Hamano235d53f2007-07-13 00:25:15148those commits that occurred before the file was given its
149present name.
150
Junio C Hamano16ebcd02011-08-05 00:05:45151`git log --branches --not --remotes=origin`::
Junio C Hamano57827fb2010-01-23 03:02:50152
153Shows all commits that are in any of local branches but not in
Junio C Hamano97bcb482010-11-25 03:16:07154any of remote-tracking branches for 'origin' (what you have that
Junio C Hamano57827fb2010-01-23 03:02:50155origin doesn't).
156
Junio C Hamano16ebcd02011-08-05 00:05:45157`git log master --not --remotes=*/master`::
Junio C Hamano57827fb2010-01-23 03:02:50158
159Shows all commits that are in local master but not in any remote
160repository master branches.
161
Junio C Hamano16ebcd02011-08-05 00:05:45162`git log -p -m --first-parent`::
Junio C Hamano31667362010-03-25 00:38:53163
164Shows the history including change diffs, but only from the
Junio C Hamanob73af6c2013-12-03 22:07:11165``main branch'' perspective, skipping commits that come from merged
Junio C Hamano31667362010-03-25 00:38:53166branches, and showing full diffs of changes introduced by the merges.
167This makes sense only when following a strict policy of merging all
168topic branches when staying on a single integration branch.
169
Junio C Hamano24b68352013-07-18 02:15:20170`git log -L '/int main/',/^}/:main.c`::
Junio C Hamano7e590a12013-06-02 23:46:52171
Junio C Hamanob73af6c2013-12-03 22:07:11172Shows how the function `main()` in the file `main.c` evolved
Junio C Hamano7e590a12013-06-02 23:46:52173over time.
174
Junio C Hamano693e7092012-09-12 22:56:53175`git log -3`::
Junio C Hamanob73af6c2013-12-03 22:07:11176
Junio C Hamano693e7092012-09-12 22:56:53177Limits the number of commits to show to 3.
Junio C Hamano31667362010-03-25 00:38:53178
Junio C Hamano58f587a2013-07-22 19:20:59179DISCUSSION
Junio C Hamano775a0f42006-12-31 01:19:14180----------
181
182include::i18n.txt[]
183
Junio C Hamano58f587a2013-07-22 19:20:59184CONFIGURATION
Junio C Hamanoa574a092010-06-13 19:57:10185-------------
186
187See linkgit:git-config[1] for core variables and linkgit:git-diff[1]
188for settings related to diff generation.
189
190format.pretty::
Junio C Hamanob73af6c2013-12-03 22:07:11191Default for the `--format` option. (See 'Pretty Formats' above.)
192Defaults to `medium`.
Junio C Hamanoa574a092010-06-13 19:57:10193
194i18n.logOutputEncoding::
Junio C Hamanob73af6c2013-12-03 22:07:11195Encoding to use when displaying logs. (See 'Discussion' above.)
196Defaults to the value of `i18n.commitEncoding` if set, and UTF-8
Junio C Hamanoa574a092010-06-13 19:57:10197otherwise.
198
199log.date::
200Default format for human-readable dates. (Compare the
201`--date` option.) Defaults to "default", which means to write
202dates like `Sat May 8 19:35:34 2010 -0500`.
Junio C Hamano23168ef2019-02-07 07:20:47203+
204If the format is set to "auto:foo" and the pager is in use, format
205"foo" will be the used for the date format. Otherwise "default" will
206be used.
Junio C Hamanoa574a092010-06-13 19:57:10207
Junio C Hamanod7ed4042015-08-03 19:43:00208log.follow::
Junio C Hamanob0a1e832015-10-15 23:08:31209If `true`, `git log` will act as if the `--follow` option was used when
210a single <path> is given. This has the same limitations as `--follow`,
211i.e. it cannot be used to follow multiple files and does not work well
212on non-linear history.
Junio C Hamanod7ed4042015-08-03 19:43:00213
Junio C Hamano322c6242015-03-23 21:32:46214log.showRoot::
Junio C Hamanob73af6c2013-12-03 22:07:11215If `false`, `git log` and related commands will not treat the
Junio C Hamanoa574a092010-06-13 19:57:10216initial commit as a big creation event. Any root commits in
217`git log -p` output would be shown without a diff attached.
218The default is `true`.
219
Junio C Hamano48931e22016-07-11 20:08:47220log.showSignature::
221If `true`, `git log` and related commands will act as if the
222`--show-signature` option was passed to them.
223
Junio C Hamanoabad6da2013-01-06 09:06:32224mailmap.*::
Junio C Hamanoa574a092010-06-13 19:57:10225See linkgit:git-shortlog[1].
226
227notes.displayRef::
228Which refs, in addition to the default set by `core.notesRef`
Junio C Hamano042f2142016-06-27 18:05:05229or `GIT_NOTES_REF`, to read notes from when showing commit
Junio C Hamanob73af6c2013-12-03 22:07:11230messages with the `log` family of commands. See
Junio C Hamanoa574a092010-06-13 19:57:10231linkgit:git-notes[1].
232+
233May be an unabbreviated ref name or a glob and may be specified
234multiple times. A warning will be issued for refs that do not exist,
235but a glob that does not match any refs is silently ignored.
236+
Junio C Hamano60033462011-05-03 00:48:43237This setting can be disabled by the `--no-notes` option,
Junio C Hamano042f2142016-06-27 18:05:05238overridden by the `GIT_NOTES_DISPLAY_REF` environment variable,
Junio C Hamano60033462011-05-03 00:48:43239and overridden by the `--notes=<ref>` option.
Junio C Hamano775a0f42006-12-31 01:19:14240
Junio C Hamano1a4e8412005-12-27 08:17:23241GIT
242---
Junio C Hamanof7c042d2008-06-06 22:50:53243Part of the linkgit:git[1] suite