blob: 00a95e249fe82f2eb3d53dcc541559dceb3e8709 [file] [log] [blame]
Junio C Hamano1a4e8412005-12-27 08:17:231git-rev-list(1)
2===============
3
4NAME
5----
6git-rev-list - Lists commit objects in reverse chronological order
7
8
9SYNOPSIS
10--------
Junio C Hamano235a91e2006-01-07 01:13:5811[verse]
Junio C Hamano1a4e8412005-12-27 08:17:2312'git-rev-list' [ \--max-count=number ]
Junio C Hamano235a91e2006-01-07 01:13:5813 [ \--max-age=timestamp ]
14 [ \--min-age=timestamp ]
15 [ \--sparse ]
16 [ \--no-merges ]
Junio C Hamano9be18972006-01-28 08:54:5717 [ \--remove-empty ]
Junio C Hamano872c5682006-07-07 06:05:4018 [ \--not ]
Junio C Hamano235a91e2006-01-07 01:13:5819 [ \--all ]
Junio C Hamanoc9245d92006-09-06 09:35:4620 [ \--stdin ]
Junio C Hamanodecf50e2006-03-05 10:51:1421 [ \--topo-order ]
Junio C Hamano235a91e2006-01-07 01:13:5822 [ \--parents ]
Junio C Hamano47c1e3c2006-09-25 04:45:5523 [ \--(author|committer|grep)=<pattern> ]
Junio C Hamano5f327762006-03-02 09:14:5124 [ [\--objects | \--objects-edge] [ \--unpacked ] ]
Junio C Hamano235a91e2006-01-07 01:13:5825 [ \--pretty | \--header ]
26 [ \--bisect ]
Junio C Hamano859f3b42006-08-04 10:04:3027 [ \--merge ]
Junio C Hamano235a91e2006-01-07 01:13:5828 <commit>... [ \-- <paths>... ]
Junio C Hamano1a4e8412005-12-27 08:17:2329
30DESCRIPTION
31-----------
Junio C Hamano89e135d2006-09-03 06:18:2532
Junio C Hamano1a4e8412005-12-27 08:17:2333Lists commit objects in reverse chronological order starting at the
34given commit(s), taking ancestry relationship into account. This is
35useful to produce human-readable log output.
36
Junio C Hamano89e135d2006-09-03 06:18:2537Commits which are stated with a preceding '{caret}' cause listing to
38stop at that point. Their parents are implied. Thus the following
39command:
40
41-----------------------------------------------------------------------
42$ git-rev-list foo bar ^baz
43-----------------------------------------------------------------------
44
Junio C Hamano1a4e8412005-12-27 08:17:2345means "list all the commits which are included in 'foo' and 'bar', but
46not in 'baz'".
47
Junio C Hamano89e135d2006-09-03 06:18:2548A special notation "'<commit1>'..'<commit2>'" can be used as a
49short-hand for "{caret}'<commit1>' '<commit2>'". For example, either of
50the following may be used interchangeably:
Junio C Hamano1a4e8412005-12-27 08:17:2351
Junio C Hamano89e135d2006-09-03 06:18:2552-----------------------------------------------------------------------
53$ git-rev-list origin..HEAD
54$ git-rev-list HEAD ^origin
55-----------------------------------------------------------------------
56
57Another special notation is "'<commit1>'...'<commit2>'" which is useful
58for merges. The resulting set of commits is the symmetric difference
Junio C Hamano872c5682006-07-07 06:05:4059between the two operands. The following two commands are equivalent:
60
Junio C Hamano89e135d2006-09-03 06:18:2561-----------------------------------------------------------------------
62$ git-rev-list A B --not $(git-merge-base --all A B)
63$ git-rev-list A...B
64-----------------------------------------------------------------------
65
66gitlink:git-rev-list[1] is a very essential git program, since it
67provides the ability to build and traverse commit ancestry graphs. For
68this reason, it has a lot of different options that enables it to be
69used by commands as different as gitlink:git-bisect[1] and
70gitlink:git-repack[1].
Junio C Hamano1a4e8412005-12-27 08:17:2371
72OPTIONS
73-------
Junio C Hamano89e135d2006-09-03 06:18:2574
75Commit Formatting
76~~~~~~~~~~~~~~~~~
77
78Using these options, gitlink:git-rev-list[1] will act similar to the
79more specialized family of commit log tools: gitlink:git-log[1],
80gitlink:git-show[1], and gitlink:git-whatchanged[1]
81
82--pretty[='<format>']::
83
84Pretty print the contents of the commit logs in a given format,
85where '<format>' can be one of 'raw', 'medium', 'short', 'full',
86and 'oneline'. When left out the format default to 'medium'.
87
88--relative-date::
89
90Show dates relative to the current time, e.g. "2 hours ago".
91Only takes effect for dates shown in human-readable format, such
92as when using "--pretty".
Junio C Hamano1a4e8412005-12-27 08:17:2393
94--header::
Junio C Hamano89e135d2006-09-03 06:18:2595
96Print the contents of the commit in raw-format; each record is
97separated with a NUL character.
Junio C Hamano1a4e8412005-12-27 08:17:2398
Junio C Hamano7ccb9fd2006-07-15 01:38:4099--parents::
Junio C Hamano89e135d2006-09-03 06:18:25100
Junio C Hamano7ccb9fd2006-07-15 01:38:40101Print the parents of the commit.
102
Junio C Hamano89e135d2006-09-03 06:18:25103Diff Formatting
104~~~~~~~~~~~~~~~
Junio C Hamano1a4e8412005-12-27 08:17:23105
Junio C Hamano89e135d2006-09-03 06:18:25106Below are listed options that control the formatting of diff output.
107Some of them are specific to gitlink:git-rev-list[1], however other diff
108options may be given. See gitlink:git-diff-files[1] for more options.
Junio C Hamano5f327762006-03-02 09:14:51109
Junio C Hamano89e135d2006-09-03 06:18:25110-c::
Junio C Hamano1a4e8412005-12-27 08:17:23111
Junio C Hamano89e135d2006-09-03 06:18:25112This flag changes the way a merge commit is displayed. It shows
113the differences from each of the parents to the merge result
114simultaneously instead of showing pairwise diff between a parent
115and the result one at a time. Furthermore, it lists only files
116which were modified from all parents.
Junio C Hamano1a4e8412005-12-27 08:17:23117
Junio C Hamano89e135d2006-09-03 06:18:25118--cc::
119
120This flag implies the '-c' options and further compresses the
121patch output by omitting hunks that show differences from only
122one parent, or show the same change from all but one parent for
123an Octopus merge.
124
125-r::
126
127Show recursive diffs.
128
129-t::
130
131Show the tree objects in the diff output. This implies '-r'.
132
133Commit Limiting
134~~~~~~~~~~~~~~~
135
136Besides specifying a range of commits that should be listed using the
137special notations explained in the description, additional commit
138limiting may be applied.
139
140--
141
142-n 'number', --max-count='number'::
143
Junio C Hamano1a4e8412005-12-27 08:17:23144Limit the number of commits output.
145
Junio C Hamano89e135d2006-09-03 06:18:25146--since='date', --after='date'::
147
148Show commits more recent than a specific date.
149
150--until='date', --before='date'::
151
152Show commits older than a specific date.
153
154--max-age='timestamp', --min-age='timestamp'::
155
Junio C Hamano1a4e8412005-12-27 08:17:23156Limit the commits output to specified time range.
157
Junio C Hamano47c1e3c2006-09-25 04:45:55158--author='pattern', --committer='pattern'::
159
160Limit the commits output to ones with author/committer
161header lines that match the specified pattern.
162
163--grep='pattern'::
164
165Limit the commits output to ones with log message that
166matches the specified pattern.
167
Junio C Hamano9be18972006-01-28 08:54:57168--remove-empty::
Junio C Hamano89e135d2006-09-03 06:18:25169
Junio C Hamano9be18972006-01-28 08:54:57170Stop when a given path disappears from the tree.
171
Junio C Hamano7ccb9fd2006-07-15 01:38:40172--no-merges::
Junio C Hamano89e135d2006-09-03 06:18:25173
Junio C Hamano7ccb9fd2006-07-15 01:38:40174Do not print commits with more than one parent.
175
Junio C Hamano872c5682006-07-07 06:05:40176--not::
Junio C Hamano89e135d2006-09-03 06:18:25177
178Reverses the meaning of the '{caret}' prefix (or lack thereof)
179for all following revision specifiers, up to the next '--not'.
Junio C Hamano872c5682006-07-07 06:05:40180
Junio C Hamano1a4e8412005-12-27 08:17:23181--all::
Junio C Hamano1a4e8412005-12-27 08:17:23182
Junio C Hamano89e135d2006-09-03 06:18:25183Pretend as if all the refs in `$GIT_DIR/refs/` are listed on the
184command line as '<commit>'.
Junio C Hamano1a4e8412005-12-27 08:17:23185
Junio C Hamanoc9245d92006-09-06 09:35:46186--stdin::
187
188In addition to the '<commit>' listed on the command
189line, read them from the standard input.
190
Junio C Hamano859f3b42006-08-04 10:04:30191--merge::
Junio C Hamano89e135d2006-09-03 06:18:25192
Junio C Hamano859f3b42006-08-04 10:04:30193After a failed merge, show refs that touch files having a
194conflict and don't exist on all heads to merge.
195
Junio C Hamano89e135d2006-09-03 06:18:25196--boundary::
197
198Output uninteresting commits at the boundary, which are usually
199not shown.
200
201--dense, --sparse::
202
203When optional paths are given, the default behaviour ('--dense') is to
204only output commits that changes at least one of them, and also ignore
205merges that do not touch the given paths.
206
207Use the '--sparse' flag to makes the command output all eligible commits
208(still subject to count and age limitation), but apply merge
209simplification nevertheless.
210
211--bisect::
212
213Limit output to the one commit object which is roughly halfway between
214the included and excluded commits. Thus, if
215
216-----------------------------------------------------------------------
217$ git-rev-list --bisect foo ^bar ^baz
218-----------------------------------------------------------------------
219
220outputs 'midpoint', the output of the two commands
221
222-----------------------------------------------------------------------
223$ git-rev-list foo ^midpoint
224$ git-rev-list midpoint ^bar ^baz
225-----------------------------------------------------------------------
226
227would be of roughly the same length. Finding the change which
228introduces a regression is thus reduced to a binary search: repeatedly
229generate and test new 'midpoint's until the commit chain is of length
230one.
231
232--
233
234Commit Ordering
235~~~~~~~~~~~~~~~
236
237By default, the commits are shown in reverse chronological order.
238
239--topo-order::
240
241This option makes them appear in topological order (i.e.
242descendant commits are shown before their parents).
243
244--date-order::
245
246This option is similar to '--topo-order' in the sense that no
247parent comes before all of its children, but otherwise things
248are still ordered in the commit timestamp order.
249
250Object Traversal
251~~~~~~~~~~~~~~~~
252
253These options are mostly targeted for packing of git repositories.
254
255--objects::
256
257Print the object IDs of any object referenced by the listed
258commits. 'git-rev-list --objects foo ^bar' thus means "send me
259all object IDs which I need to download if I have the commit
260object 'bar', but not 'foo'".
261
262--objects-edge::
263
264Similar to '--objects', but also print the IDs of excluded
265commits prefixed with a "-" character. This is used by
266gitlink:git-pack-objects[1] to build "thin" pack, which records
267objects in deltified form based on objects contained in these
268excluded commits to reduce network traffic.
269
270--unpacked::
271
272Only useful with '--objects'; print the object IDs that are not
273in packs.
Junio C Hamanoa0778c92006-08-29 04:03:11274
Junio C Hamano1a4e8412005-12-27 08:17:23275Author
276------
277Written by Linus Torvalds <torvalds@osdl.org>
278
Junio C Hamano1a4e8412005-12-27 08:17:23279Documentation
280--------------
Junio C Hamano89e135d2006-09-03 06:18:25281Documentation by David Greaves, Junio C Hamano, Jonas Fonseca
282and the git-list <git@vger.kernel.org>.
Junio C Hamano1a4e8412005-12-27 08:17:23283
284GIT
285---
286Part of the gitlink:git[7] suite