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