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