blob: bed09bb09e52c6ddc0923e6173f6f5b5dceceb4a [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
46doesn't match any of the patterns given to `--decorate-refs`.
47
Junio C Hamano28363492008-11-14 08:26:3148--source::
49Print out the ref name given on the command line by which each
50commit was reached.
51
Junio C Hamano36594952019-07-25 22:26:5252--[no-]use-mailmap::
Junio C Hamanoce836cc2013-01-21 02:01:5353Use mailmap file to map author and committer names and email
Junio C Hamanob73af6c2013-12-03 22:07:1154addresses to canonical real names and email addresses. See
Junio C Hamanoce836cc2013-01-21 02:01:5355linkgit:git-shortlog[1].
56
Junio C Hamanoee695f22007-06-21 00:35:3657--full-diff::
Junio C Hamanob73af6c2013-12-03 22:07:1158Without this flag, `git log -p <path>...` shows commits that
Junio C Hamanoee695f22007-06-21 00:35:3659touch the specified paths, and diffs about the same specified
60paths. With this, the full diff is shown for commits that touch
Junio C Hamano9e395072008-07-31 22:11:2161the specified paths; this means that "<path>..." limits only
Junio C Hamanoee695f22007-06-21 00:35:3662commits, and doesn't limit diff for those commits.
Junio C Hamanoe85e36f2010-08-10 05:30:1463+
64Note that this affects all diff-based output types, e.g. those
Junio C Hamanob73af6c2013-12-03 22:07:1165produced by `--stat`, etc.
Junio C Hamanoea5dae62007-05-10 23:25:0866
Junio C Hamano024b6c62007-08-14 09:43:0867--log-size::
Junio C Hamanob73af6c2013-12-03 22:07:1168Include a line ``log size <number>'' in the output for each commit,
69where <number> is the length of that commit's message in bytes.
70Intended to speed up tools that read log messages from `git log`
71output by allowing them to allocate space in advance.
Junio C Hamano024b6c62007-08-14 09:43:0872
Junio C Hamano8eac2682013-09-09 22:35:2073-L <start>,<end>:<file>::
Junio C Hamanodd5004a2015-05-06 19:33:3274-L :<funcname>:<file>::
Junio C Hamano7e590a12013-06-02 23:46:5275Trace the evolution of the line range given by "<start>,<end>"
Junio C Hamanodd5004a2015-05-06 19:33:3276(or the function name regex <funcname>) within the <file>. You may
Junio C Hamano7e590a12013-06-02 23:46:5277not give any pathspec limiters. This is currently limited to
78a walk starting from a single revision, i.e., you may only
Junio C Hamano68793842020-01-06 23:07:0979give zero or one positive revision arguments, and
80<start> and <end> (or <funcname>) must exist in the starting revision.
81You can specify this option more than once. Implies `--patch`.
82Patch output can be suppressed using `--no-patch`, but other diff formats
83(namely `--raw`, `--numstat`, `--shortstat`, `--dirstat`, `--summary`,
84`--name-only`, `--name-status`, `--check`) are not currently implemented.
Junio C Hamano7e590a12013-06-02 23:46:5285+
Junio C Hamano7e590a12013-06-02 23:46:5286include::line-range-format.txt[]
87
Junio C Hamanof26c77e2013-04-27 00:06:0488<revision range>::
89Show only commits in the specified revision range. When no
90<revision range> is specified, it defaults to `HEAD` (i.e. the
91whole history leading to the current commit). `origin..HEAD`
92specifies all the commits reachable from the current commit
93(i.e. `HEAD`), but not from `origin`. For a complete list of
Junio C Hamanob73af6c2013-12-03 22:07:1194ways to spell <revision range>, see the 'Specifying Ranges'
Junio C Hamanof26c77e2013-04-27 00:06:0495section of linkgit:gitrevisions[7].
96
Junio C Hamanoccb82522018-05-08 07:52:0997[--] <path>...::
Junio C Hamano5723afa2011-08-31 00:49:2398Show only commits that are enough to explain how the files
Junio C Hamanob73af6c2013-12-03 22:07:1199that match the specified paths came to be. See 'History
100Simplification' below for details and other simplification
Junio C Hamano5723afa2011-08-31 00:49:23101modes.
102+
Junio C Hamanoccb82522018-05-08 07:52:09103Paths may need to be prefixed with `--` to separate them from
Junio C Hamanof26c77e2013-04-27 00:06:04104options or the revision range, when confusion arises.
Junio C Hamanoba7c8d82006-04-15 06:17:42105
Junio C Hamanob0e02952008-01-19 08:02:00106include::rev-list-options.txt[]
107
Junio C Hamano0430e3a2007-05-15 03:13:17108include::pretty-formats.txt[]
109
Junio C Hamano58f587a2013-07-22 19:20:59110COMMON DIFF OPTIONS
Junio C Hamanod2c978f2011-03-20 19:42:22111-------------------
112
113:git-log: 1
114include::diff-options.txt[]
115
Junio C Hamano00b8b632007-12-07 09:50:49116include::diff-generate-patch.txt[]
Junio C Hamano0430e3a2007-05-15 03:13:17117
Junio C Hamano58f587a2013-07-22 19:20:59118EXAMPLES
Junio C Hamano1a4e8412005-12-27 08:17:23119--------
Junio C Hamano16ebcd02011-08-05 00:05:45120`git log --no-merges`::
Junio C Hamano1a4e8412005-12-27 08:17:23121
122Show the whole commit history, but skip any merges
123
Junio C Hamano16ebcd02011-08-05 00:05:45124`git log v2.6.12.. include/scsi drivers/scsi`::
Junio C Hamano1a4e8412005-12-27 08:17:23125
126Show all commits since version 'v2.6.12' that changed any file
Junio C Hamanob73af6c2013-12-03 22:07:11127in the `include/scsi` or `drivers/scsi` subdirectories
Junio C Hamano1a4e8412005-12-27 08:17:23128
Junio C Hamanob76a6862012-05-02 22:02:46129`git log --since="2 weeks ago" -- gitk`::
Junio C Hamano1a4e8412005-12-27 08:17:23130
131Show the changes during the last two weeks to the file 'gitk'.
Junio C Hamanoccb82522018-05-08 07:52:09132The `--` is necessary to avoid confusion with the *branch* named
Junio C Hamano1a4e8412005-12-27 08:17:23133'gitk'
134
Junio C Hamano16ebcd02011-08-05 00:05:45135`git log --name-status release..test`::
Junio C Hamanoba7c8d82006-04-15 06:17:42136
137Show the commits that are in the "test" branch but not yet
138in the "release" branch, along with the list of paths
139each commit modifies.
Junio C Hamano1a4e8412005-12-27 08:17:23140
Junio C Hamano3a3357e2013-06-26 23:20:56141`git log --follow builtin/rev-list.c`::
Junio C Hamano235d53f2007-07-13 00:25:15142
Junio C Hamanob73af6c2013-12-03 22:07:11143Shows the commits that changed `builtin/rev-list.c`, including
Junio C Hamano235d53f2007-07-13 00:25:15144those commits that occurred before the file was given its
145present name.
146
Junio C Hamano16ebcd02011-08-05 00:05:45147`git log --branches --not --remotes=origin`::
Junio C Hamano57827fb2010-01-23 03:02:50148
149Shows all commits that are in any of local branches but not in
Junio C Hamano97bcb482010-11-25 03:16:07150any of remote-tracking branches for 'origin' (what you have that
Junio C Hamano57827fb2010-01-23 03:02:50151origin doesn't).
152
Junio C Hamano16ebcd02011-08-05 00:05:45153`git log master --not --remotes=*/master`::
Junio C Hamano57827fb2010-01-23 03:02:50154
155Shows all commits that are in local master but not in any remote
156repository master branches.
157
Junio C Hamano16ebcd02011-08-05 00:05:45158`git log -p -m --first-parent`::
Junio C Hamano31667362010-03-25 00:38:53159
160Shows the history including change diffs, but only from the
Junio C Hamanob73af6c2013-12-03 22:07:11161``main branch'' perspective, skipping commits that come from merged
Junio C Hamano31667362010-03-25 00:38:53162branches, and showing full diffs of changes introduced by the merges.
163This makes sense only when following a strict policy of merging all
164topic branches when staying on a single integration branch.
165
Junio C Hamano24b68352013-07-18 02:15:20166`git log -L '/int main/',/^}/:main.c`::
Junio C Hamano7e590a12013-06-02 23:46:52167
Junio C Hamanob73af6c2013-12-03 22:07:11168Shows how the function `main()` in the file `main.c` evolved
Junio C Hamano7e590a12013-06-02 23:46:52169over time.
170
Junio C Hamano693e7092012-09-12 22:56:53171`git log -3`::
Junio C Hamanob73af6c2013-12-03 22:07:11172
Junio C Hamano693e7092012-09-12 22:56:53173Limits the number of commits to show to 3.
Junio C Hamano31667362010-03-25 00:38:53174
Junio C Hamano58f587a2013-07-22 19:20:59175DISCUSSION
Junio C Hamano775a0f42006-12-31 01:19:14176----------
177
178include::i18n.txt[]
179
Junio C Hamano58f587a2013-07-22 19:20:59180CONFIGURATION
Junio C Hamanoa574a092010-06-13 19:57:10181-------------
182
183See linkgit:git-config[1] for core variables and linkgit:git-diff[1]
184for settings related to diff generation.
185
186format.pretty::
Junio C Hamanob73af6c2013-12-03 22:07:11187Default for the `--format` option. (See 'Pretty Formats' above.)
188Defaults to `medium`.
Junio C Hamanoa574a092010-06-13 19:57:10189
190i18n.logOutputEncoding::
Junio C Hamanob73af6c2013-12-03 22:07:11191Encoding to use when displaying logs. (See 'Discussion' above.)
192Defaults to the value of `i18n.commitEncoding` if set, and UTF-8
Junio C Hamanoa574a092010-06-13 19:57:10193otherwise.
194
195log.date::
196Default format for human-readable dates. (Compare the
197`--date` option.) Defaults to "default", which means to write
198dates like `Sat May 8 19:35:34 2010 -0500`.
Junio C Hamano23168ef2019-02-07 07:20:47199+
200If the format is set to "auto:foo" and the pager is in use, format
201"foo" will be the used for the date format. Otherwise "default" will
202be used.
Junio C Hamanoa574a092010-06-13 19:57:10203
Junio C Hamanod7ed4042015-08-03 19:43:00204log.follow::
Junio C Hamanob0a1e832015-10-15 23:08:31205If `true`, `git log` will act as if the `--follow` option was used when
206a single <path> is given. This has the same limitations as `--follow`,
207i.e. it cannot be used to follow multiple files and does not work well
208on non-linear history.
Junio C Hamanod7ed4042015-08-03 19:43:00209
Junio C Hamano322c6242015-03-23 21:32:46210log.showRoot::
Junio C Hamanob73af6c2013-12-03 22:07:11211If `false`, `git log` and related commands will not treat the
Junio C Hamanoa574a092010-06-13 19:57:10212initial commit as a big creation event. Any root commits in
213`git log -p` output would be shown without a diff attached.
214The default is `true`.
215
Junio C Hamano48931e22016-07-11 20:08:47216log.showSignature::
217If `true`, `git log` and related commands will act as if the
218`--show-signature` option was passed to them.
219
Junio C Hamanoabad6da2013-01-06 09:06:32220mailmap.*::
Junio C Hamanoa574a092010-06-13 19:57:10221See linkgit:git-shortlog[1].
222
223notes.displayRef::
224Which refs, in addition to the default set by `core.notesRef`
Junio C Hamano042f2142016-06-27 18:05:05225or `GIT_NOTES_REF`, to read notes from when showing commit
Junio C Hamanob73af6c2013-12-03 22:07:11226messages with the `log` family of commands. See
Junio C Hamanoa574a092010-06-13 19:57:10227linkgit:git-notes[1].
228+
229May be an unabbreviated ref name or a glob and may be specified
230multiple times. A warning will be issued for refs that do not exist,
231but a glob that does not match any refs is silently ignored.
232+
Junio C Hamano60033462011-05-03 00:48:43233This setting can be disabled by the `--no-notes` option,
Junio C Hamano042f2142016-06-27 18:05:05234overridden by the `GIT_NOTES_DISPLAY_REF` environment variable,
Junio C Hamano60033462011-05-03 00:48:43235and overridden by the `--notes=<ref>` option.
Junio C Hamano775a0f42006-12-31 01:19:14236
Junio C Hamano1a4e8412005-12-27 08:17:23237GIT
238---
Junio C Hamanof7c042d2008-06-06 22:50:53239Part of the linkgit:git[1] suite