blob: dec379b3e2bd58c74dba61a2a5207a38e702278c [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 Hamanof26c77e2013-04-27 00:06:0412'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 Hamano28363492008-11-14 08:26:3141--source::
42Print out the ref name given on the command line by which each
43commit was reached.
44
Junio C Hamanoce836cc2013-01-21 02:01:5345--use-mailmap::
46Use mailmap file to map author and committer names and email
Junio C Hamanob73af6c2013-12-03 22:07:1147addresses to canonical real names and email addresses. See
Junio C Hamanoce836cc2013-01-21 02:01:5348linkgit:git-shortlog[1].
49
Junio C Hamanoee695f22007-06-21 00:35:3650--full-diff::
Junio C Hamanob73af6c2013-12-03 22:07:1151Without this flag, `git log -p <path>...` shows commits that
Junio C Hamanoee695f22007-06-21 00:35:3652touch the specified paths, and diffs about the same specified
53paths. With this, the full diff is shown for commits that touch
Junio C Hamano9e395072008-07-31 22:11:2154the specified paths; this means that "<path>..." limits only
Junio C Hamanoee695f22007-06-21 00:35:3655commits, and doesn't limit diff for those commits.
Junio C Hamanoe85e36f2010-08-10 05:30:1456+
57Note that this affects all diff-based output types, e.g. those
Junio C Hamanob73af6c2013-12-03 22:07:1158produced by `--stat`, etc.
Junio C Hamanoea5dae62007-05-10 23:25:0859
Junio C Hamano024b6c62007-08-14 09:43:0860--log-size::
Junio C Hamanob73af6c2013-12-03 22:07:1161Include a line ``log size <number>'' in the output for each commit,
62where <number> is the length of that commit's message in bytes.
63Intended to speed up tools that read log messages from `git log`
64output by allowing them to allocate space in advance.
Junio C Hamano024b6c62007-08-14 09:43:0865
Junio C Hamano8eac2682013-09-09 22:35:2066-L <start>,<end>:<file>::
Junio C Hamanodd5004a2015-05-06 19:33:3267-L :<funcname>:<file>::
Junio C Hamano7e590a12013-06-02 23:46:5268Trace the evolution of the line range given by "<start>,<end>"
Junio C Hamanodd5004a2015-05-06 19:33:3269(or the function name regex <funcname>) within the <file>. You may
Junio C Hamano7e590a12013-06-02 23:46:5270not give any pathspec limiters. This is currently limited to
71a walk starting from a single revision, i.e., you may only
72give zero or one positive revision arguments.
73You can specify this option more than once.
74+
Junio C Hamano7e590a12013-06-02 23:46:5275include::line-range-format.txt[]
76
Junio C Hamanof26c77e2013-04-27 00:06:0477<revision range>::
78Show only commits in the specified revision range. When no
79<revision range> is specified, it defaults to `HEAD` (i.e. the
80whole history leading to the current commit). `origin..HEAD`
81specifies all the commits reachable from the current commit
82(i.e. `HEAD`), but not from `origin`. For a complete list of
Junio C Hamanob73af6c2013-12-03 22:07:1183ways to spell <revision range>, see the 'Specifying Ranges'
Junio C Hamanof26c77e2013-04-27 00:06:0484section of linkgit:gitrevisions[7].
85
Junio C Hamanoa476efa2008-10-10 15:31:4286[\--] <path>...::
Junio C Hamano5723afa2011-08-31 00:49:2387Show only commits that are enough to explain how the files
Junio C Hamanob73af6c2013-12-03 22:07:1188that match the specified paths came to be. See 'History
89Simplification' below for details and other simplification
Junio C Hamano5723afa2011-08-31 00:49:2390modes.
91+
Junio C Hamanob73af6c2013-12-03 22:07:1192Paths may need to be prefixed with ``\-- '' to separate them from
Junio C Hamanof26c77e2013-04-27 00:06:0493options or the revision range, when confusion arises.
Junio C Hamanoba7c8d82006-04-15 06:17:4294
Junio C Hamanob0e02952008-01-19 08:02:0095include::rev-list-options.txt[]
96
Junio C Hamano0430e3a2007-05-15 03:13:1797include::pretty-formats.txt[]
98
Junio C Hamano58f587a2013-07-22 19:20:5999COMMON DIFF OPTIONS
Junio C Hamanod2c978f2011-03-20 19:42:22100-------------------
101
102:git-log: 1
103include::diff-options.txt[]
104
Junio C Hamano00b8b632007-12-07 09:50:49105include::diff-generate-patch.txt[]
Junio C Hamano0430e3a2007-05-15 03:13:17106
Junio C Hamano58f587a2013-07-22 19:20:59107EXAMPLES
Junio C Hamano1a4e8412005-12-27 08:17:23108--------
Junio C Hamano16ebcd02011-08-05 00:05:45109`git log --no-merges`::
Junio C Hamano1a4e8412005-12-27 08:17:23110
111Show the whole commit history, but skip any merges
112
Junio C Hamano16ebcd02011-08-05 00:05:45113`git log v2.6.12.. include/scsi drivers/scsi`::
Junio C Hamano1a4e8412005-12-27 08:17:23114
115Show all commits since version 'v2.6.12' that changed any file
Junio C Hamanob73af6c2013-12-03 22:07:11116in the `include/scsi` or `drivers/scsi` subdirectories
Junio C Hamano1a4e8412005-12-27 08:17:23117
Junio C Hamanob76a6862012-05-02 22:02:46118`git log --since="2 weeks ago" -- gitk`::
Junio C Hamano1a4e8412005-12-27 08:17:23119
120Show the changes during the last two weeks to the file 'gitk'.
Junio C Hamanob73af6c2013-12-03 22:07:11121The ``--'' is necessary to avoid confusion with the *branch* named
Junio C Hamano1a4e8412005-12-27 08:17:23122'gitk'
123
Junio C Hamano16ebcd02011-08-05 00:05:45124`git log --name-status release..test`::
Junio C Hamanoba7c8d82006-04-15 06:17:42125
126Show the commits that are in the "test" branch but not yet
127in the "release" branch, along with the list of paths
128each commit modifies.
Junio C Hamano1a4e8412005-12-27 08:17:23129
Junio C Hamano3a3357e2013-06-26 23:20:56130`git log --follow builtin/rev-list.c`::
Junio C Hamano235d53f2007-07-13 00:25:15131
Junio C Hamanob73af6c2013-12-03 22:07:11132Shows the commits that changed `builtin/rev-list.c`, including
Junio C Hamano235d53f2007-07-13 00:25:15133those commits that occurred before the file was given its
134present name.
135
Junio C Hamano16ebcd02011-08-05 00:05:45136`git log --branches --not --remotes=origin`::
Junio C Hamano57827fb2010-01-23 03:02:50137
138Shows all commits that are in any of local branches but not in
Junio C Hamano97bcb482010-11-25 03:16:07139any of remote-tracking branches for 'origin' (what you have that
Junio C Hamano57827fb2010-01-23 03:02:50140origin doesn't).
141
Junio C Hamano16ebcd02011-08-05 00:05:45142`git log master --not --remotes=*/master`::
Junio C Hamano57827fb2010-01-23 03:02:50143
144Shows all commits that are in local master but not in any remote
145repository master branches.
146
Junio C Hamano16ebcd02011-08-05 00:05:45147`git log -p -m --first-parent`::
Junio C Hamano31667362010-03-25 00:38:53148
149Shows the history including change diffs, but only from the
Junio C Hamanob73af6c2013-12-03 22:07:11150``main branch'' perspective, skipping commits that come from merged
Junio C Hamano31667362010-03-25 00:38:53151branches, and showing full diffs of changes introduced by the merges.
152This makes sense only when following a strict policy of merging all
153topic branches when staying on a single integration branch.
154
Junio C Hamano24b68352013-07-18 02:15:20155`git log -L '/int main/',/^}/:main.c`::
Junio C Hamano7e590a12013-06-02 23:46:52156
Junio C Hamanob73af6c2013-12-03 22:07:11157Shows how the function `main()` in the file `main.c` evolved
Junio C Hamano7e590a12013-06-02 23:46:52158over time.
159
Junio C Hamano693e7092012-09-12 22:56:53160`git log -3`::
Junio C Hamanob73af6c2013-12-03 22:07:11161
Junio C Hamano693e7092012-09-12 22:56:53162Limits the number of commits to show to 3.
Junio C Hamano31667362010-03-25 00:38:53163
Junio C Hamano58f587a2013-07-22 19:20:59164DISCUSSION
Junio C Hamano775a0f42006-12-31 01:19:14165----------
166
167include::i18n.txt[]
168
Junio C Hamano58f587a2013-07-22 19:20:59169CONFIGURATION
Junio C Hamanoa574a092010-06-13 19:57:10170-------------
171
172See linkgit:git-config[1] for core variables and linkgit:git-diff[1]
173for settings related to diff generation.
174
175format.pretty::
Junio C Hamanob73af6c2013-12-03 22:07:11176Default for the `--format` option. (See 'Pretty Formats' above.)
177Defaults to `medium`.
Junio C Hamanoa574a092010-06-13 19:57:10178
179i18n.logOutputEncoding::
Junio C Hamanob73af6c2013-12-03 22:07:11180Encoding to use when displaying logs. (See 'Discussion' above.)
181Defaults to the value of `i18n.commitEncoding` if set, and UTF-8
Junio C Hamanoa574a092010-06-13 19:57:10182otherwise.
183
184log.date::
185Default format for human-readable dates. (Compare the
186`--date` option.) Defaults to "default", which means to write
187dates like `Sat May 8 19:35:34 2010 -0500`.
188
Junio C Hamanod7ed4042015-08-03 19:43:00189log.follow::
Junio C Hamanob0a1e832015-10-15 23:08:31190If `true`, `git log` will act as if the `--follow` option was used when
191a single <path> is given. This has the same limitations as `--follow`,
192i.e. it cannot be used to follow multiple files and does not work well
193on non-linear history.
Junio C Hamanod7ed4042015-08-03 19:43:00194
Junio C Hamano322c6242015-03-23 21:32:46195log.showRoot::
Junio C Hamanob73af6c2013-12-03 22:07:11196If `false`, `git log` and related commands will not treat the
Junio C Hamanoa574a092010-06-13 19:57:10197initial commit as a big creation event. Any root commits in
198`git log -p` output would be shown without a diff attached.
199The default is `true`.
200
Junio C Hamanoabad6da2013-01-06 09:06:32201mailmap.*::
Junio C Hamanoa574a092010-06-13 19:57:10202See linkgit:git-shortlog[1].
203
204notes.displayRef::
205Which refs, in addition to the default set by `core.notesRef`
206or 'GIT_NOTES_REF', to read notes from when showing commit
Junio C Hamanob73af6c2013-12-03 22:07:11207messages with the `log` family of commands. See
Junio C Hamanoa574a092010-06-13 19:57:10208linkgit:git-notes[1].
209+
210May be an unabbreviated ref name or a glob and may be specified
211multiple times. A warning will be issued for refs that do not exist,
212but a glob that does not match any refs is silently ignored.
213+
Junio C Hamano60033462011-05-03 00:48:43214This setting can be disabled by the `--no-notes` option,
Junio C Hamanoa574a092010-06-13 19:57:10215overridden by the 'GIT_NOTES_DISPLAY_REF' environment variable,
Junio C Hamano60033462011-05-03 00:48:43216and overridden by the `--notes=<ref>` option.
Junio C Hamano775a0f42006-12-31 01:19:14217
Junio C Hamano1a4e8412005-12-27 08:17:23218GIT
219---
Junio C Hamanof7c042d2008-06-06 22:50:53220Part of the linkgit:git[1] suite