]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-rev-list.txt
t6002: minor spelling fix.
[thirdparty/git.git] / Documentation / git-rev-list.txt
CommitLineData
2cf565c5
DG
1git-rev-list(1)
2===============
2cf565c5
DG
3
4NAME
5----
6git-rev-list - Lists commit objects in reverse chronological order
7
8
9SYNOPSIS
10--------
353ce815 11[verse]
69e0c256 12'git-rev-list' [ \--max-count=number ]
d5db6c9e 13 [ \--skip=number ]
353ce815
JF
14 [ \--max-age=timestamp ]
15 [ \--min-age=timestamp ]
16 [ \--sparse ]
17 [ \--no-merges ]
93b74bca 18 [ \--remove-empty ]
0d2c9d67 19 [ \--not ]
353ce815 20 [ \--all ]
42cabc34 21 [ \--stdin ]
765ac8ec 22 [ \--topo-order ]
353ce815 23 [ \--parents ]
7cbcf4d5 24 [ \--encoding[=<encoding>] ]
bd95fcd3 25 [ \--(author|committer|grep)=<pattern> ]
ec579767 26 [ [\--objects | \--objects-edge] [ \--unpacked ] ]
353ce815
JF
27 [ \--pretty | \--header ]
28 [ \--bisect ]
d249b455 29 [ \--merge ]
9c5e66e9 30 [ \--reverse ]
4d12a471 31 [ \--walk-reflogs ]
353ce815 32 <commit>... [ \-- <paths>... ]
2cf565c5
DG
33
34DESCRIPTION
35-----------
8c02eee2 36
2cf565c5 37Lists commit objects in reverse chronological order starting at the
adcd3512 38given commit(s), taking ancestry relationship into account. This is
2cf565c5
DG
39useful to produce human-readable log output.
40
8c02eee2
JF
41Commits which are stated with a preceding '{caret}' cause listing to
42stop at that point. Their parents are implied. Thus the following
43command:
44
45-----------------------------------------------------------------------
46 $ git-rev-list foo bar ^baz
47-----------------------------------------------------------------------
48
adcd3512
MU
49means "list all the commits which are included in 'foo' and 'bar', but
50not in 'baz'".
51
8c02eee2
JF
52A special notation "'<commit1>'..'<commit2>'" can be used as a
53short-hand for "{caret}'<commit1>' '<commit2>'". For example, either of
54the following may be used interchangeably:
69e0c256 55
8c02eee2
JF
56-----------------------------------------------------------------------
57 $ git-rev-list origin..HEAD
58 $ git-rev-list HEAD ^origin
59-----------------------------------------------------------------------
60
61Another special notation is "'<commit1>'...'<commit2>'" which is useful
62for merges. The resulting set of commits is the symmetric difference
0d2c9d67
RS
63between the two operands. The following two commands are equivalent:
64
8c02eee2
JF
65-----------------------------------------------------------------------
66 $ git-rev-list A B --not $(git-merge-base --all A B)
67 $ git-rev-list A...B
68-----------------------------------------------------------------------
69
70gitlink:git-rev-list[1] is a very essential git program, since it
71provides the ability to build and traverse commit ancestry graphs. For
72this reason, it has a lot of different options that enables it to be
73used by commands as different as gitlink:git-bisect[1] and
74gitlink:git-repack[1].
69e0c256 75
df8baa42
JF
76OPTIONS
77-------
8c02eee2
JF
78
79Commit Formatting
80~~~~~~~~~~~~~~~~~
81
82Using these options, gitlink:git-rev-list[1] will act similar to the
83more specialized family of commit log tools: gitlink:git-log[1],
84gitlink:git-show[1], and gitlink:git-whatchanged[1]
85
5d1faf87 86include::pretty-formats.txt[]
8c02eee2
JF
87
88--relative-date::
89
90 Show dates relative to the current time, e.g. "2 hours ago".
91 Only takes effect for dates shown in human-readable format, such
92 as when using "--pretty".
df8baa42 93
69e0c256 94--header::
8c02eee2
JF
95
96 Print the contents of the commit in raw-format; each record is
97 separated with a NUL character.
69e0c256 98
f443455a 99--parents::
8c02eee2 100
f443455a
ML
101 Print the parents of the commit.
102
8c02eee2
JF
103Diff Formatting
104~~~~~~~~~~~~~~~
df8baa42 105
8c02eee2
JF
106Below 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.
ec579767 109
8c02eee2
JF
110-c::
111
112 This flag changes the way a merge commit is displayed. It shows
113 the differences from each of the parents to the merge result
114 simultaneously instead of showing pairwise diff between a parent
115 and the result one at a time. Furthermore, it lists only files
116 which were modified from all parents.
117
118--cc::
119
120 This flag implies the '-c' options and further compresses the
121 patch output by omitting hunks that show differences from only
122 one parent, or show the same change from all but one parent for
123 an Octopus merge.
124
125-r::
126
127 Show recursive diffs.
128
129-t::
130
131 Show 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'::
69e0c256 143
69e0c256
JH
144 Limit the number of commits output.
145
d5db6c9e
JH
146--skip='number'::
147
148 Skip 'number' commits before starting to show the commit output.
149
8c02eee2
JF
150--since='date', --after='date'::
151
152 Show commits more recent than a specific date.
153
154--until='date', --before='date'::
69e0c256 155
8c02eee2
JF
156 Show commits older than a specific date.
157
158--max-age='timestamp', --min-age='timestamp'::
159
160 Limit the commits output to specified time range.
69e0c256 161
bd95fcd3
JH
162--author='pattern', --committer='pattern'::
163
164 Limit the commits output to ones with author/committer
165 header lines that match the specified pattern.
166
167--grep='pattern'::
168
169 Limit the commits output to ones with log message that
170 matches the specified pattern.
171
93b74bca 172--remove-empty::
8c02eee2 173
93b74bca
JH
174 Stop when a given path disappears from the tree.
175
f443455a 176--no-merges::
8c02eee2 177
f443455a
ML
178 Do not print commits with more than one parent.
179
0d2c9d67 180--not::
8c02eee2
JF
181
182 Reverses the meaning of the '{caret}' prefix (or lack thereof)
183 for all following revision specifiers, up to the next '--not'.
0d2c9d67 184
69e0c256 185--all::
69e0c256 186
8c02eee2
JF
187 Pretend as if all the refs in `$GIT_DIR/refs/` are listed on the
188 command line as '<commit>'.
69e0c256 189
42cabc34
JH
190--stdin::
191
192 In addition to the '<commit>' listed on the command
193 line, read them from the standard input.
194
084ae0a7 195-g, --walk-reflogs::
911cedc9
JH
196
197 Instead of walking the commit ancestry chain, walk
198 reflog entries from the most recent one to older ones.
199 When this option is used you cannot specify commits to
200 exclude (that is, '{caret}commit', 'commit1..commit2',
201 nor 'commit1...commit2' notations cannot be used).
202+
203With '\--pretty' format other than oneline (for obvious reasons),
204this causes the output to have two extra lines of information
205taken from the reflog. By default, 'commit@{Nth}' notation is
206used in the output. When the starting commit is specified as
207'commit@{now}', output also uses 'commit@{timestamp}' notation
4d12a471
JH
208instead. Under '\--pretty=oneline', the commit message is
209prefixed with this information on the same line.
911cedc9 210
d249b455 211--merge::
8c02eee2 212
d249b455
UZ
213 After a failed merge, show refs that touch files having a
214 conflict and don't exist on all heads to merge.
215
8c02eee2
JF
216--boundary::
217
218 Output uninteresting commits at the boundary, which are usually
219 not shown.
220
221--dense, --sparse::
222
223When optional paths are given, the default behaviour ('--dense') is to
224only output commits that changes at least one of them, and also ignore
225merges that do not touch the given paths.
226
227Use the '--sparse' flag to makes the command output all eligible commits
228(still subject to count and age limitation), but apply merge
229simplification nevertheless.
230
231--bisect::
232
233Limit output to the one commit object which is roughly halfway between
234the included and excluded commits. Thus, if
235
236-----------------------------------------------------------------------
237 $ git-rev-list --bisect foo ^bar ^baz
238-----------------------------------------------------------------------
239
240outputs 'midpoint', the output of the two commands
241
242-----------------------------------------------------------------------
243 $ git-rev-list foo ^midpoint
244 $ git-rev-list midpoint ^bar ^baz
245-----------------------------------------------------------------------
246
247would be of roughly the same length. Finding the change which
248introduces a regression is thus reduced to a binary search: repeatedly
249generate and test new 'midpoint's until the commit chain is of length
250one.
251
252--
253
254Commit Ordering
255~~~~~~~~~~~~~~~
256
257By default, the commits are shown in reverse chronological order.
258
259--topo-order::
260
261 This option makes them appear in topological order (i.e.
262 descendant commits are shown before their parents).
263
264--date-order::
265
266 This option is similar to '--topo-order' in the sense that no
267 parent comes before all of its children, but otherwise things
268 are still ordered in the commit timestamp order.
269
9c5e66e9
JS
270--reverse::
271
272 Output the commits in reverse order.
273
8c02eee2
JF
274Object Traversal
275~~~~~~~~~~~~~~~~
276
277These options are mostly targeted for packing of git repositories.
278
279--objects::
280
281 Print the object IDs of any object referenced by the listed
282 commits. 'git-rev-list --objects foo ^bar' thus means "send me
283 all object IDs which I need to download if I have the commit
284 object 'bar', but not 'foo'".
285
286--objects-edge::
287
288 Similar to '--objects', but also print the IDs of excluded
289 commits prefixed with a "-" character. This is used by
290 gitlink:git-pack-objects[1] to build "thin" pack, which records
291 objects in deltified form based on objects contained in these
292 excluded commits to reduce network traffic.
293
294--unpacked::
295
296 Only useful with '--objects'; print the object IDs that are not
297 in packs.
3dfb9278 298
2cf565c5
DG
299Author
300------
301Written by Linus Torvalds <torvalds@osdl.org>
302
303Documentation
304--------------
8c02eee2
JF
305Documentation by David Greaves, Junio C Hamano, Jonas Fonseca
306and the git-list <git@vger.kernel.org>.
2cf565c5
DG
307
308GIT
309---
a7154e91 310Part of the gitlink:git[7] suite