]>
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 | ||
133 | --max-age='timestamp', --min-age='timestamp':: | |
134 | ||
135 | Limit the commits output to specified time range. | |
136 | ||
137 | --author='pattern', --committer='pattern':: | |
138 | ||
139 | Limit the commits output to ones with author/committer | |
140 | header lines that match the specified pattern (regular expression). | |
141 | ||
142 | --grep='pattern':: | |
143 | ||
144 | Limit the commits output to ones with log message that | |
145 | matches the specified pattern (regular expression). | |
146 | ||
147 | -i, --regexp-ignore-case:: | |
148 | ||
149 | Match the regexp limiting patterns without regard to letters case. | |
150 | ||
151 | -E, --extended-regexp:: | |
152 | ||
153 | Consider the limiting patterns to be extended regular expressions | |
154 | instead of the default basic regular expressions. | |
155 | ||
156 | --remove-empty:: | |
157 | ||
158 | Stop when a given path disappears from the tree. | |
159 | ||
160 | --full-history:: | |
161 | ||
162 | Show also parts of history irrelevant to current state of a given | |
163 | path. This turns off history simplification, which removed merges | |
164 | which didn't change anything at all at some child. It will still actually | |
165 | simplify away merges that didn't change anything at all into either | |
166 | child. | |
167 | ||
168 | --no-merges:: | |
169 | ||
170 | Do not print commits with more than one parent. | |
171 | ||
172 | --first-parent:: | |
173 | Follow only the first parent commit upon seeing a merge | |
174 | commit. This option can give a better overview when | |
175 | viewing the evolution of a particular topic branch, | |
176 | because merges into a topic branch tend to be only about | |
177 | adjusting to updated upstream from time to time, and | |
178 | this option allows you to ignore the individual commits | |
179 | brought in to your history by such a merge. | |
180 | ||
181 | --not:: | |
182 | ||
183 | Reverses the meaning of the '{caret}' prefix (or lack thereof) | |
184 | for all following revision specifiers, up to the next '--not'. | |
185 | ||
186 | --all:: | |
187 | ||
188 | Pretend as if all the refs in `$GIT_DIR/refs/` are listed on the | |
189 | command line as '<commit>'. | |
190 | ||
191 | --stdin:: | |
192 | ||
193 | In addition to the '<commit>' listed on the command | |
194 | line, read them from the standard input. | |
195 | ||
196 | --quiet:: | |
197 | ||
198 | Don't print anything to standard output. This form | |
199 | is primarily meant to allow the caller to | |
200 | test the exit status to see if a range of objects is fully | |
201 | connected (or not). It is faster than redirecting stdout | |
202 | to /dev/null as the output does not have to be formatted. | |
203 | ||
204 | --cherry-pick:: | |
205 | ||
206 | Omit any commit that introduces the same change as | |
207 | another commit on the "other side" when the set of | |
208 | commits are limited with symmetric difference. | |
209 | + | |
210 | For example, if you have two branches, `A` and `B`, a usual way | |
211 | to list all commits on only one side of them is with | |
212 | `--left-right`, like the example above in the description of | |
213 | that option. It however shows the commits that were cherry-picked | |
214 | from the other branch (for example, "3rd on b" may be cherry-picked | |
215 | from branch A). With this option, such pairs of commits are | |
216 | excluded from the output. | |
217 | ||
218 | -g, --walk-reflogs:: | |
219 | ||
220 | Instead of walking the commit ancestry chain, walk | |
221 | reflog entries from the most recent one to older ones. | |
222 | When this option is used you cannot specify commits to | |
223 | exclude (that is, '{caret}commit', 'commit1..commit2', | |
224 | nor 'commit1...commit2' notations cannot be used). | |
225 | + | |
226 | With '\--pretty' format other than oneline (for obvious reasons), | |
227 | this causes the output to have two extra lines of information | |
228 | taken from the reflog. By default, 'commit@\{Nth}' notation is | |
229 | used in the output. When the starting commit is specified as | |
230 | 'commit@{now}', output also uses 'commit@\{timestamp}' notation | |
231 | instead. Under '\--pretty=oneline', the commit message is | |
232 | prefixed with this information on the same line. | |
233 | ||
234 | Cannot be combined with '\--reverse'. | |
235 | See also linkgit:git-reflog[1]. | |
236 | ||
237 | --merge:: | |
238 | ||
239 | After a failed merge, show refs that touch files having a | |
240 | conflict and don't exist on all heads to merge. | |
241 | ||
242 | --boundary:: | |
243 | ||
244 | Output uninteresting commits at the boundary, which are usually | |
245 | not shown. | |
246 | ||
247 | --dense, --sparse:: | |
248 | ||
249 | When optional paths are given, the default behaviour ('--dense') is to | |
250 | only output commits that changes at least one of them, and also ignore | |
251 | merges that do not touch the given paths. | |
252 | ||
253 | Use the '--sparse' flag to makes the command output all eligible commits | |
254 | (still subject to count and age limitation), but apply merge | |
255 | simplification nevertheless. | |
256 | ||
257 | ifdef::git-rev-list[] | |
258 | --bisect:: | |
259 | ||
260 | Limit output to the one commit object which is roughly halfway between | |
261 | the included and excluded commits. Thus, if | |
262 | ||
263 | ----------------------------------------------------------------------- | |
264 | $ git-rev-list --bisect foo ^bar ^baz | |
265 | ----------------------------------------------------------------------- | |
266 | ||
267 | outputs 'midpoint', the output of the two commands | |
268 | ||
269 | ----------------------------------------------------------------------- | |
270 | $ git-rev-list foo ^midpoint | |
271 | $ git-rev-list midpoint ^bar ^baz | |
272 | ----------------------------------------------------------------------- | |
273 | ||
274 | would be of roughly the same length. Finding the change which | |
275 | introduces a regression is thus reduced to a binary search: repeatedly | |
276 | generate and test new 'midpoint's until the commit chain is of length | |
277 | one. | |
278 | ||
279 | --bisect-vars:: | |
280 | ||
281 | This calculates the same as `--bisect`, but outputs text ready | |
282 | to be eval'ed by the shell. These lines will assign the name of | |
283 | the midpoint revision to the variable `bisect_rev`, and the | |
284 | expected number of commits to be tested after `bisect_rev` is | |
285 | tested to `bisect_nr`, the expected number of commits to be | |
286 | tested if `bisect_rev` turns out to be good to `bisect_good`, | |
287 | the expected number of commits to be tested if `bisect_rev` | |
288 | turns out to be bad to `bisect_bad`, and the number of commits | |
289 | we are bisecting right now to `bisect_all`. | |
290 | ||
291 | --bisect-all:: | |
292 | ||
293 | This outputs all the commit objects between the included and excluded | |
294 | commits, ordered by their distance to the included and excluded | |
295 | commits. The farthest from them is displayed first. (This is the only | |
296 | one displayed by `--bisect`.) | |
297 | ||
298 | This is useful because it makes it easy to choose a good commit to | |
299 | test when you want to avoid to test some of them for some reason (they | |
300 | may not compile for example). | |
301 | ||
302 | This option can be used along with `--bisect-vars`, in this case, | |
303 | after all the sorted commit objects, there will be the same text as if | |
304 | `--bisect-vars` had been used alone. | |
305 | endif::git-rev-list[] | |
306 | ||
307 | -- | |
308 | ||
309 | Commit Ordering | |
310 | ~~~~~~~~~~~~~~~ | |
311 | ||
312 | By default, the commits are shown in reverse chronological order. | |
313 | ||
314 | --topo-order:: | |
315 | ||
316 | This option makes them appear in topological order (i.e. | |
317 | descendant commits are shown before their parents). | |
318 | ||
319 | --date-order:: | |
320 | ||
321 | This option is similar to '--topo-order' in the sense that no | |
322 | parent comes before all of its children, but otherwise things | |
323 | are still ordered in the commit timestamp order. | |
324 | ||
325 | --reverse:: | |
326 | ||
327 | Output the commits in reverse order. | |
328 | Cannot be combined with '\--walk-reflogs'. | |
329 | ||
330 | Object Traversal | |
331 | ~~~~~~~~~~~~~~~~ | |
332 | ||
333 | These options are mostly targeted for packing of git repositories. | |
334 | ||
335 | --objects:: | |
336 | ||
337 | Print the object IDs of any object referenced by the listed | |
338 | commits. '--objects foo ^bar' thus means "send me | |
339 | all object IDs which I need to download if I have the commit | |
340 | object 'bar', but not 'foo'". | |
341 | ||
342 | --objects-edge:: | |
343 | ||
344 | Similar to '--objects', but also print the IDs of excluded | |
345 | commits prefixed with a "-" character. This is used by | |
346 | linkgit:git-pack-objects[1] to build "thin" pack, which records | |
347 | objects in deltified form based on objects contained in these | |
348 | excluded commits to reduce network traffic. | |
349 | ||
350 | --unpacked:: | |
351 | ||
352 | Only useful with '--objects'; print the object IDs that are not | |
353 | in packs. | |
354 | ||
355 | --no-walk:: | |
356 | ||
357 | Only show the given revs, but do not traverse their ancestors. | |
358 | ||
359 | --do-walk:: | |
360 | ||
361 | Overrides a previous --no-walk. |