]>
Commit | Line | Data |
---|---|---|
fdcf39e5 MV |
1 | Commit Formatting |
2 | ~~~~~~~~~~~~~~~~~ | |
3 | ||
4 | ifdef::git-rev-list[] | |
5 | Using these options, linkgit:git-rev-list[1] will act similar to the | |
6 | more specialized family of commit log tools: linkgit:git-log[1], | |
7 | linkgit:git-show[1], and linkgit:git-whatchanged[1] | |
8 | endif::git-rev-list[] | |
9 | ||
10 | include::pretty-options.txt[] | |
11 | ||
12 | --relative-date:: | |
13 | ||
14 | Synonym for `--date=relative`. | |
15 | ||
16 | --date={relative,local,default,iso,rfc}:: | |
17 | ||
18 | Only takes effect for dates shown in human-readable format, such | |
19 | as when using "--pretty". | |
20 | + | |
21 | `--date=relative` shows dates relative to the current time, | |
22 | e.g. "2 hours ago". | |
23 | + | |
24 | `--date=local` shows timestamps in user's local timezone. | |
25 | + | |
26 | `--date=iso` (or `--date=iso8601`) shows timestamps in ISO 8601 format. | |
27 | + | |
28 | `--date=rfc` (or `--date=rfc2822`) shows timestamps in RFC 2822 | |
29 | format, often found in E-mail messages. | |
30 | + | |
31 | `--date=short` shows only date but not time, in `YYYY-MM-DD` format. | |
32 | + | |
33 | `--date=default` shows timestamps in the original timezone | |
34 | (either committer's or author's). | |
35 | ||
36 | --header:: | |
37 | ||
38 | Print the contents of the commit in raw-format; each record is | |
39 | separated with a NUL character. | |
40 | ||
41 | --parents:: | |
42 | ||
43 | Print the parents of the commit. | |
44 | ||
45 | --timestamp:: | |
46 | Print the raw commit timestamp. | |
47 | ||
48 | --left-right:: | |
49 | ||
50 | Mark which side of a symmetric diff a commit is reachable from. | |
51 | Commits from the left side are prefixed with `<` and those from | |
52 | the right with `>`. If combined with `--boundary`, those | |
53 | commits are prefixed with `-`. | |
54 | + | |
55 | For example, if you have this topology: | |
56 | + | |
57 | ----------------------------------------------------------------------- | |
58 | y---b---b branch B | |
59 | / \ / | |
60 | / . | |
61 | / / \ | |
62 | o---x---a---a branch A | |
63 | ----------------------------------------------------------------------- | |
64 | + | |
65 | you would get an output line this: | |
66 | + | |
67 | ----------------------------------------------------------------------- | |
68 | $ git rev-list --left-right --boundary --pretty=oneline A...B | |
69 | ||
70 | >bbbbbbb... 3rd on b | |
71 | >bbbbbbb... 2nd on b | |
72 | <aaaaaaa... 3rd on a | |
73 | <aaaaaaa... 2nd on a | |
74 | -yyyyyyy... 1st on b | |
75 | -xxxxxxx... 1st on a | |
76 | ----------------------------------------------------------------------- | |
77 | ||
78 | Diff Formatting | |
79 | ~~~~~~~~~~~~~~~ | |
80 | ||
81 | Below are listed options that control the formatting of diff output. | |
82 | Some of them are specific to linkgit:git-rev-list[1], however other diff | |
83 | options may be given. See linkgit:git-diff-files[1] for more options. | |
84 | ||
85 | -c:: | |
86 | ||
87 | This flag changes the way a merge commit is displayed. It shows | |
88 | the differences from each of the parents to the merge result | |
89 | simultaneously instead of showing pairwise diff between a parent | |
90 | and the result one at a time. Furthermore, it lists only files | |
91 | which were modified from all parents. | |
92 | ||
93 | --cc:: | |
94 | ||
95 | This flag implies the '-c' options and further compresses the | |
96 | patch output by omitting hunks that show differences from only | |
97 | one parent, or show the same change from all but one parent for | |
98 | an Octopus merge. | |
99 | ||
100 | -r:: | |
101 | ||
102 | Show recursive diffs. | |
103 | ||
104 | -t:: | |
105 | ||
106 | Show the tree objects in the diff output. This implies '-r'. | |
107 | ||
108 | Commit Limiting | |
109 | ~~~~~~~~~~~~~~~ | |
110 | ||
111 | Besides specifying a range of commits that should be listed using the | |
112 | special notations explained in the description, additional commit | |
113 | limiting may be applied. | |
114 | ||
115 | -- | |
116 | ||
117 | -n 'number', --max-count='number':: | |
118 | ||
119 | Limit the number of commits output. | |
120 | ||
121 | --skip='number':: | |
122 | ||
123 | Skip 'number' commits before starting to show the commit output. | |
124 | ||
125 | --since='date', --after='date':: | |
126 | ||
127 | Show commits more recent than a specific date. | |
128 | ||
129 | --until='date', --before='date':: | |
130 | ||
131 | Show commits older than a specific date. | |
132 | ||
56b6d01d | 133 | ifdef::git-rev-list[] |
fdcf39e5 MV |
134 | --max-age='timestamp', --min-age='timestamp':: |
135 | ||
136 | Limit the commits output to specified time range. | |
56b6d01d | 137 | endif::git-rev-list[] |
fdcf39e5 MV |
138 | |
139 | --author='pattern', --committer='pattern':: | |
140 | ||
141 | Limit the commits output to ones with author/committer | |
142 | header lines that match the specified pattern (regular expression). | |
143 | ||
144 | --grep='pattern':: | |
145 | ||
146 | Limit the commits output to ones with log message that | |
147 | matches the specified pattern (regular expression). | |
148 | ||
149 | -i, --regexp-ignore-case:: | |
150 | ||
151 | Match the regexp limiting patterns without regard to letters case. | |
152 | ||
153 | -E, --extended-regexp:: | |
154 | ||
155 | Consider the limiting patterns to be extended regular expressions | |
156 | instead of the default basic regular expressions. | |
157 | ||
dc1c0fff JN |
158 | -F, --fixed-strings:: |
159 | ||
160 | Consider the limiting patterns to be fixed strings (don't interpret | |
161 | pattern as a regular expression). | |
162 | ||
fdcf39e5 MV |
163 | --remove-empty:: |
164 | ||
165 | Stop when a given path disappears from the tree. | |
166 | ||
167 | --full-history:: | |
168 | ||
169 | Show also parts of history irrelevant to current state of a given | |
170 | path. This turns off history simplification, which removed merges | |
171 | which didn't change anything at all at some child. It will still actually | |
172 | simplify away merges that didn't change anything at all into either | |
173 | child. | |
174 | ||
175 | --no-merges:: | |
176 | ||
177 | Do not print commits with more than one parent. | |
178 | ||
179 | --first-parent:: | |
180 | Follow only the first parent commit upon seeing a merge | |
181 | commit. This option can give a better overview when | |
182 | viewing the evolution of a particular topic branch, | |
183 | because merges into a topic branch tend to be only about | |
184 | adjusting to updated upstream from time to time, and | |
185 | this option allows you to ignore the individual commits | |
186 | brought in to your history by such a merge. | |
187 | ||
188 | --not:: | |
189 | ||
190 | Reverses the meaning of the '{caret}' prefix (or lack thereof) | |
191 | for all following revision specifiers, up to the next '--not'. | |
192 | ||
193 | --all:: | |
194 | ||
195 | Pretend as if all the refs in `$GIT_DIR/refs/` are listed on the | |
196 | command line as '<commit>'. | |
197 | ||
198 | --stdin:: | |
199 | ||
200 | In addition to the '<commit>' listed on the command | |
201 | line, read them from the standard input. | |
202 | ||
203 | --quiet:: | |
204 | ||
205 | Don't print anything to standard output. This form | |
206 | is primarily meant to allow the caller to | |
207 | test the exit status to see if a range of objects is fully | |
208 | connected (or not). It is faster than redirecting stdout | |
209 | to /dev/null as the output does not have to be formatted. | |
210 | ||
211 | --cherry-pick:: | |
212 | ||
213 | Omit any commit that introduces the same change as | |
214 | another commit on the "other side" when the set of | |
215 | commits are limited with symmetric difference. | |
216 | + | |
217 | For example, if you have two branches, `A` and `B`, a usual way | |
218 | to list all commits on only one side of them is with | |
219 | `--left-right`, like the example above in the description of | |
220 | that option. It however shows the commits that were cherry-picked | |
221 | from the other branch (for example, "3rd on b" may be cherry-picked | |
222 | from branch A). With this option, such pairs of commits are | |
223 | excluded from the output. | |
224 | ||
225 | -g, --walk-reflogs:: | |
226 | ||
227 | Instead of walking the commit ancestry chain, walk | |
228 | reflog entries from the most recent one to older ones. | |
229 | When this option is used you cannot specify commits to | |
230 | exclude (that is, '{caret}commit', 'commit1..commit2', | |
231 | nor 'commit1...commit2' notations cannot be used). | |
232 | + | |
233 | With '\--pretty' format other than oneline (for obvious reasons), | |
234 | this causes the output to have two extra lines of information | |
235 | taken from the reflog. By default, 'commit@\{Nth}' notation is | |
236 | used in the output. When the starting commit is specified as | |
237 | 'commit@{now}', output also uses 'commit@\{timestamp}' notation | |
238 | instead. Under '\--pretty=oneline', the commit message is | |
239 | prefixed with this information on the same line. | |
240 | ||
241 | Cannot be combined with '\--reverse'. | |
242 | See also linkgit:git-reflog[1]. | |
243 | ||
244 | --merge:: | |
245 | ||
246 | After a failed merge, show refs that touch files having a | |
247 | conflict and don't exist on all heads to merge. | |
248 | ||
249 | --boundary:: | |
250 | ||
251 | Output uninteresting commits at the boundary, which are usually | |
252 | not shown. | |
253 | ||
254 | --dense, --sparse:: | |
255 | ||
256 | When optional paths are given, the default behaviour ('--dense') is to | |
257 | only output commits that changes at least one of them, and also ignore | |
258 | merges that do not touch the given paths. | |
259 | ||
260 | Use the '--sparse' flag to makes the command output all eligible commits | |
261 | (still subject to count and age limitation), but apply merge | |
262 | simplification nevertheless. | |
263 | ||
264 | ifdef::git-rev-list[] | |
265 | --bisect:: | |
266 | ||
267 | Limit output to the one commit object which is roughly halfway between | |
268 | the included and excluded commits. Thus, if | |
269 | ||
270 | ----------------------------------------------------------------------- | |
271 | $ git-rev-list --bisect foo ^bar ^baz | |
272 | ----------------------------------------------------------------------- | |
273 | ||
274 | outputs 'midpoint', the output of the two commands | |
275 | ||
276 | ----------------------------------------------------------------------- | |
277 | $ git-rev-list foo ^midpoint | |
278 | $ git-rev-list midpoint ^bar ^baz | |
279 | ----------------------------------------------------------------------- | |
280 | ||
281 | would be of roughly the same length. Finding the change which | |
282 | introduces a regression is thus reduced to a binary search: repeatedly | |
283 | generate and test new 'midpoint's until the commit chain is of length | |
284 | one. | |
285 | ||
286 | --bisect-vars:: | |
287 | ||
288 | This calculates the same as `--bisect`, but outputs text ready | |
289 | to be eval'ed by the shell. These lines will assign the name of | |
290 | the midpoint revision to the variable `bisect_rev`, and the | |
291 | expected number of commits to be tested after `bisect_rev` is | |
292 | tested to `bisect_nr`, the expected number of commits to be | |
293 | tested if `bisect_rev` turns out to be good to `bisect_good`, | |
294 | the expected number of commits to be tested if `bisect_rev` | |
295 | turns out to be bad to `bisect_bad`, and the number of commits | |
296 | we are bisecting right now to `bisect_all`. | |
297 | ||
298 | --bisect-all:: | |
299 | ||
300 | This outputs all the commit objects between the included and excluded | |
301 | commits, ordered by their distance to the included and excluded | |
302 | commits. The farthest from them is displayed first. (This is the only | |
303 | one displayed by `--bisect`.) | |
304 | ||
305 | This is useful because it makes it easy to choose a good commit to | |
306 | test when you want to avoid to test some of them for some reason (they | |
307 | may not compile for example). | |
308 | ||
309 | This option can be used along with `--bisect-vars`, in this case, | |
310 | after all the sorted commit objects, there will be the same text as if | |
311 | `--bisect-vars` had been used alone. | |
312 | endif::git-rev-list[] | |
313 | ||
314 | -- | |
315 | ||
316 | Commit Ordering | |
317 | ~~~~~~~~~~~~~~~ | |
318 | ||
319 | By default, the commits are shown in reverse chronological order. | |
320 | ||
321 | --topo-order:: | |
322 | ||
323 | This option makes them appear in topological order (i.e. | |
324 | descendant commits are shown before their parents). | |
325 | ||
326 | --date-order:: | |
327 | ||
328 | This option is similar to '--topo-order' in the sense that no | |
329 | parent comes before all of its children, but otherwise things | |
330 | are still ordered in the commit timestamp order. | |
331 | ||
332 | --reverse:: | |
333 | ||
334 | Output the commits in reverse order. | |
335 | Cannot be combined with '\--walk-reflogs'. | |
336 | ||
337 | Object Traversal | |
338 | ~~~~~~~~~~~~~~~~ | |
339 | ||
340 | These options are mostly targeted for packing of git repositories. | |
341 | ||
342 | --objects:: | |
343 | ||
344 | Print the object IDs of any object referenced by the listed | |
345 | commits. '--objects foo ^bar' thus means "send me | |
346 | all object IDs which I need to download if I have the commit | |
347 | object 'bar', but not 'foo'". | |
348 | ||
349 | --objects-edge:: | |
350 | ||
351 | Similar to '--objects', but also print the IDs of excluded | |
352 | commits prefixed with a "-" character. This is used by | |
353 | linkgit:git-pack-objects[1] to build "thin" pack, which records | |
354 | objects in deltified form based on objects contained in these | |
355 | excluded commits to reduce network traffic. | |
356 | ||
357 | --unpacked:: | |
358 | ||
359 | Only useful with '--objects'; print the object IDs that are not | |
360 | in packs. | |
361 | ||
362 | --no-walk:: | |
363 | ||
364 | Only show the given revs, but do not traverse their ancestors. | |
365 | ||
366 | --do-walk:: | |
367 | ||
368 | Overrides a previous --no-walk. |