|  | PRETTY FORMATS | 
|  | -------------- | 
|  |  | 
|  | If the commit is a merge, and if the pretty-format | 
|  | is not `oneline`, `email` or `raw`, an additional line is | 
|  | inserted before the `Author:` line.  This line begins with | 
|  | "Merge: " and the hashes of ancestral commits are printed, | 
|  | separated by spaces.  Note that the listed commits may not | 
|  | necessarily be the list of the 'direct' parent commits if you | 
|  | have limited your view of history: for example, if you are | 
|  | only interested in changes related to a certain directory or | 
|  | file. | 
|  |  | 
|  | There are several built-in formats, and you can define | 
|  | additional formats by setting a pretty.<name> | 
|  | config option to either another format name, or a | 
|  | `format:` string, as described below (see | 
|  | linkgit:git-config[1]). Here are the details of the | 
|  | built-in formats: | 
|  |  | 
|  | * `oneline` | 
|  |  | 
|  | <hash> <title-line> | 
|  | + | 
|  | This is designed to be as compact as possible. | 
|  |  | 
|  | * `short` | 
|  |  | 
|  | commit <hash> | 
|  | Author: <author> | 
|  |  | 
|  | <title-line> | 
|  |  | 
|  | * `medium` | 
|  |  | 
|  | commit <hash> | 
|  | Author: <author> | 
|  | Date:   <author-date> | 
|  |  | 
|  | <title-line> | 
|  |  | 
|  | <full-commit-message> | 
|  |  | 
|  | * `full` | 
|  |  | 
|  | commit <hash> | 
|  | Author: <author> | 
|  | Commit: <committer> | 
|  |  | 
|  | <title-line> | 
|  |  | 
|  | <full-commit-message> | 
|  |  | 
|  | * `fuller` | 
|  |  | 
|  | commit <hash> | 
|  | Author:     <author> | 
|  | AuthorDate: <author-date> | 
|  | Commit:     <committer> | 
|  | CommitDate: <committer-date> | 
|  |  | 
|  | <title-line> | 
|  |  | 
|  | <full-commit-message> | 
|  |  | 
|  | * `reference` | 
|  |  | 
|  | <abbrev-hash> (<title-line>, <short-author-date>) | 
|  | + | 
|  | This format is used to refer to another commit in a commit message and | 
|  | is the same as ++--pretty=\'format:%C(auto)%h (%s, %ad)'++.  By default, | 
|  | the date is formatted with `--date=short` unless another `--date` option | 
|  | is explicitly specified.  As with any `format:` with format | 
|  | placeholders, its output is not affected by other options like | 
|  | `--decorate` and `--walk-reflogs`. | 
|  |  | 
|  | * `email` | 
|  |  | 
|  | From <hash> <date> | 
|  | From: <author> | 
|  | Date: <author-date> | 
|  | Subject: [PATCH] <title-line> | 
|  |  | 
|  | <full-commit-message> | 
|  |  | 
|  | * `mboxrd` | 
|  | + | 
|  | Like `email`, but lines in the commit message starting with "From " | 
|  | (preceded by zero or more ">") are quoted with ">" so they aren't | 
|  | confused as starting a new commit. | 
|  |  | 
|  | * `raw` | 
|  | + | 
|  | The `raw` format shows the entire commit exactly as | 
|  | stored in the commit object.  Notably, the hashes are | 
|  | displayed in full, regardless of whether `--abbrev` or | 
|  | `--no-abbrev` are used, and 'parents' information show the | 
|  | true parent commits, without taking grafts or history | 
|  | simplification into account. Note that this format affects the way | 
|  | commits are displayed, but not the way the diff is shown e.g. with | 
|  | `git log --raw`. To get full object names in a raw diff format, | 
|  | use `--no-abbrev`. | 
|  |  | 
|  | * `format:<format-string>` | 
|  | + | 
|  | The `format:<format-string>` format allows you to specify which information | 
|  | you want to show. It works a little bit like printf format, | 
|  | with the notable exception that you get a newline with `%n` | 
|  | instead of `\n`. | 
|  | + | 
|  | E.g, 'format:"The author of %h was %an, %ar%nThe title was >>%s<<%n"' | 
|  | would show something like this: | 
|  | + | 
|  | ------- | 
|  | The author of fe6e0ee was Junio C Hamano, 23 hours ago | 
|  | The title was >>t4119: test autocomputing -p<n> for traditional diff input.<< | 
|  |  | 
|  | ------- | 
|  | + | 
|  | The placeholders are: | 
|  |  | 
|  | - Placeholders that expand to a single literal character: | 
|  | ++%n++:: newline | 
|  | ++%%++:: a raw ++%++ | 
|  | ++%x00++:: ++%x++ followed by two hexadecimal digits is replaced with a | 
|  | byte with the hexadecimal digits' value (we will call this | 
|  | "literal formatting code" in the rest of this document). | 
|  |  | 
|  | - Placeholders that affect formatting of later placeholders: | 
|  | ++%Cred++:: switch color to red | 
|  | ++%Cgreen++:: switch color to green | 
|  | ++%Cblue++:: switch color to blue | 
|  | ++%Creset++:: reset color | 
|  | ++%C(++_<spec>_++)++:: color specification, as described under Values in the | 
|  | "CONFIGURATION FILE" section of linkgit:git-config[1].  By | 
|  | default, colors are shown only when enabled for log output | 
|  | (by `color.diff`, `color.ui`, or `--color`, and respecting | 
|  | the `auto` settings of the former if we are going to a | 
|  | terminal). ++%C(auto,++_<spec>_++)++ is accepted as a historical | 
|  | synonym for the default (e.g., ++%C(auto,red)++). Specifying | 
|  | ++%C(always,++_<spec>_++)++ will show the colors even when color is | 
|  | not otherwise enabled (though consider just using | 
|  | `--color=always` to enable color for the  whole output, | 
|  | including this format and anything else git might color). | 
|  | `auto` alone (i.e. ++%C(auto)++) will turn on auto coloring | 
|  | on the next placeholders until the color is switched | 
|  | again. | 
|  | ++%m++:: left (`<`), right (`>`) or boundary (`-`) mark | 
|  | ++%w(++`[<w>[,<i1>[,<i2>]]]`++)++:: switch line wrapping, like the `-w` option of | 
|  | linkgit:git-shortlog[1]. | 
|  | ++%<(++`<n>[,(trunc|ltrunc|mtrunc)]`++)++:: make the next placeholder take at | 
|  | least N column widths, padding spaces on | 
|  | the right if necessary.  Optionally | 
|  | truncate (with ellipsis `..`) at the left (ltrunc) `..ft`, | 
|  | the middle (mtrunc) `mi..le`, or the end | 
|  | (trunc) `rig..`, if the output is longer than | 
|  | _<n>_ columns. | 
|  | Note 1: that truncating | 
|  | only works correctly with _<n>_ >= 2. | 
|  | Note 2: spaces around the _<n>_ and _<m>_ (see below) | 
|  | values are optional. | 
|  | Note 3: Emojis and other wide characters | 
|  | will take two display columns, which may | 
|  | over-run column boundaries. | 
|  | Note 4: decomposed character combining marks | 
|  | may be misplaced at padding boundaries. | 
|  | ++%<|(++_<m>_ ++)++:: make the next placeholder take at least until _<m>_ th | 
|  | display column, padding spaces on the right if necessary. | 
|  | Use negative _<m>_ values for column positions measured | 
|  | from the right hand edge of the terminal window. | 
|  | ++%>(++_<n>_++)++:: | 
|  | ++%>|(++_<m>_++)++:: similar to ++%<(++_<n>_++)++, ++%<|(++_<m>_++)++ respectively, | 
|  | but padding spaces on the left | 
|  | ++%>>(++_<n>_++)++:: | 
|  | ++%>>|(++_<m>_++)++:: similar to ++%>(++_<n>_++)++, ++%>|(++_<m>_++)++ | 
|  | respectively, except that if the next | 
|  | placeholder takes more spaces than given and | 
|  | there are spaces on its left, use those | 
|  | spaces | 
|  | ++%><(++_<n>_++)++:: | 
|  | ++%><|(++_<m>_++)++:: similar to ++%<(++_<n>_++)++, ++%<|(++_<m>_++)++ | 
|  | respectively, but padding both sides | 
|  | (i.e. the text is centered) | 
|  |  | 
|  | - Placeholders that expand to information extracted from the commit: | 
|  | +%H+:: commit hash | 
|  | +%h+:: abbreviated commit hash | 
|  | +%T+:: tree hash | 
|  | +%t+:: abbreviated tree hash | 
|  | +%P+:: parent hashes | 
|  | +%p+:: abbreviated parent hashes | 
|  | +%an+:: author name | 
|  | +%aN+:: author name (respecting .mailmap, see linkgit:git-shortlog[1] | 
|  | or linkgit:git-blame[1]) | 
|  | +%ae+:: author email | 
|  | +%aE+:: author email (respecting .mailmap, see linkgit:git-shortlog[1] | 
|  | or linkgit:git-blame[1]) | 
|  | +%al+:: author email local-part (the part before the `@` sign) | 
|  | +%aL+:: author local-part (see +%al+) respecting .mailmap, see | 
|  | linkgit:git-shortlog[1] or linkgit:git-blame[1]) | 
|  | +%ad+:: author date (format respects --date= option) | 
|  | +%aD+:: author date, RFC2822 style | 
|  | +%ar+:: author date, relative | 
|  | +%at+:: author date, UNIX timestamp | 
|  | +%ai+:: author date, ISO 8601-like format | 
|  | +%aI+:: author date, strict ISO 8601 format | 
|  | +%as+:: author date, short format (`YYYY-MM-DD`) | 
|  | +%ah+:: author date, human style (like the `--date=human` option of | 
|  | linkgit:git-rev-list[1]) | 
|  | +%cn+:: committer name | 
|  | +%cN+:: committer name (respecting .mailmap, see | 
|  | linkgit:git-shortlog[1] or linkgit:git-blame[1]) | 
|  | +%ce+:: committer email | 
|  | +%cE+:: committer email (respecting .mailmap, see | 
|  | linkgit:git-shortlog[1] or linkgit:git-blame[1]) | 
|  | +%cl+:: committer email local-part (the part before the `@` sign) | 
|  | +%cL+:: committer local-part (see +%cl+) respecting .mailmap, see | 
|  | linkgit:git-shortlog[1] or linkgit:git-blame[1]) | 
|  | +%cd+:: committer date (format respects --date= option) | 
|  | +%cD+:: committer date, RFC2822 style | 
|  | +%cr+:: committer date, relative | 
|  | +%ct+:: committer date, UNIX timestamp | 
|  | +%ci+:: committer date, ISO 8601-like format | 
|  | +%cI+:: committer date, strict ISO 8601 format | 
|  | +%cs+:: committer date, short format (`YYYY-MM-DD`) | 
|  | +%ch+:: committer date, human style (like the `--date=human` option of | 
|  | linkgit:git-rev-list[1]) | 
|  | +%d+:: ref names, like the --decorate option of linkgit:git-log[1] | 
|  | +%D+:: ref names without the " (", ")" wrapping. | 
|  | ++%(decorate++`[:<option>,...]`++)++:: | 
|  | ref names with custom decorations. The `decorate` string may be followed by a | 
|  | colon and zero or more comma-separated options. Option values may contain | 
|  | literal formatting codes. These must be used for commas (`%x2C`) and closing | 
|  | parentheses (`%x29`), due to their role in the option syntax. | 
|  | + | 
|  | ** `prefix=<value>`: Shown before the list of ref names.  Defaults to "{nbsp}++(++". | 
|  | ** `suffix=<value>`: Shown after the list of ref names.  Defaults to "+)+". | 
|  | ** `separator=<value>`: Shown between ref names.  Defaults to "+,+{nbsp}". | 
|  | ** `pointer=<value>`: Shown between HEAD and the branch it points to, if any. | 
|  | Defaults to "{nbsp}++->++{nbsp}". | 
|  | ** `tag=<value>`: Shown before tag names. Defaults to "`tag:`{nbsp}". | 
|  |  | 
|  | + | 
|  | For example, to produce decorations with no wrapping | 
|  | or tag annotations, and spaces as separators: | 
|  | + | 
|  | ++%(decorate:prefix=,suffix=,tag=,separator= )++ | 
|  |  | 
|  | ++%(describe++`[:<option>,...]`++)++:: | 
|  | human-readable name, like linkgit:git-describe[1]; empty string for | 
|  | undescribable commits.  The `describe` string may be followed by a colon and | 
|  | zero or more comma-separated options.  Descriptions can be inconsistent when | 
|  | tags are added or removed at the same time. | 
|  | + | 
|  | ** `tags[=<bool-value>]`: Instead of only considering annotated tags, | 
|  | consider lightweight tags as well. | 
|  | ** `abbrev=<number>`: Instead of using the default number of hexadecimal digits | 
|  | (which will vary according to the number of objects in the repository with a | 
|  | default of 7) of the abbreviated object name, use <number> digits, or as many | 
|  | digits as needed to form a unique object name. | 
|  | ** `match=<pattern>`: Only consider tags matching the given | 
|  | `glob(7)` _<pattern>_, excluding the `refs/tags/` prefix. | 
|  | ** `exclude=<pattern>`: Do not consider tags matching the given | 
|  | `glob(7)` _<pattern>_, excluding the `refs/tags/` prefix. | 
|  |  | 
|  | +%S+:: ref name given on the command line by which the commit was reached | 
|  | (like `git log --source`), only works with `git log` | 
|  | +%e+:: encoding | 
|  | +%s+:: subject | 
|  | +%f+:: sanitized subject line, suitable for a filename | 
|  | +%b+:: body | 
|  | +%B+:: raw body (unwrapped subject and body) | 
|  | ifndef::git-rev-list[] | 
|  | +%N+:: commit notes | 
|  | endif::git-rev-list[] | 
|  | +%GG+:: raw verification message from GPG for a signed commit | 
|  | +%G?+:: show "G" for a good (valid) signature, | 
|  | "B" for a bad signature, | 
|  | "U" for a good signature with unknown validity, | 
|  | "X" for a good signature that has expired, | 
|  | "Y" for a good signature made by an expired key, | 
|  | "R" for a good signature made by a revoked key, | 
|  | "E" if the signature cannot be checked (e.g. missing key) | 
|  | and "N" for no signature | 
|  | +%GS+:: show the name of the signer for a signed commit | 
|  | +%GK+:: show the key used to sign a signed commit | 
|  | +%GF+:: show the fingerprint of the key used to sign a signed commit | 
|  | +%GP+:: show the fingerprint of the primary key whose subkey was used | 
|  | to sign a signed commit | 
|  | +%GT+:: show the trust level for the key used to sign a signed commit | 
|  | +%gD+:: reflog selector, e.g., `refs/stash@{1}` or `refs/stash@{2 | 
|  | minutes ago}`; the format follows the rules described for the | 
|  | `-g` option. The portion before the `@` is the refname as | 
|  | given on the command line (so `git log -g refs/heads/master` | 
|  | would yield `refs/heads/master@{0}`). | 
|  | +%gd+:: shortened reflog selector; same as `%gD`, but the refname | 
|  | portion is shortened for human readability (so | 
|  | `refs/heads/master` becomes just `master`). | 
|  | +%gn+:: reflog identity name | 
|  | +%gN+:: reflog identity name (respecting .mailmap, see | 
|  | linkgit:git-shortlog[1] or linkgit:git-blame[1]) | 
|  | +%ge+:: reflog identity email | 
|  | +%gE+:: reflog identity email (respecting .mailmap, see | 
|  | linkgit:git-shortlog[1] or linkgit:git-blame[1]) | 
|  | +%gs+:: reflog subject | 
|  | ++%(trailers++`[:<option>,...]`++)++:: | 
|  | display the trailers of the body as interpreted by | 
|  | linkgit:git-interpret-trailers[1]. The `trailers` string may be followed by | 
|  | a colon and zero or more comma-separated options. If any option is provided | 
|  | multiple times, the last occurrence wins. | 
|  | + | 
|  | ** `key=<key>`: only show trailers with specified <key>. Matching is done | 
|  | case-insensitively and trailing colon is optional. If option is | 
|  | given multiple times trailer lines matching any of the keys are | 
|  | shown. This option automatically enables the `only` option so that | 
|  | non-trailer lines in the trailer block are hidden. If that is not | 
|  | desired it can be disabled with `only=false`.  E.g., | 
|  | +%(trailers:key=Reviewed-by)+ shows trailer lines with key | 
|  | `Reviewed-by`. | 
|  | ** `only[=<bool>]`: select whether non-trailer lines from the trailer | 
|  | block should be included. | 
|  | ** `separator=<sep>`: specify the separator inserted between trailer | 
|  | lines. Defaults to a line feed character. The string <sep> may contain | 
|  | the literal formatting codes described above. To use comma as | 
|  | separator one must use `%x2C` as it would otherwise be parsed as | 
|  | next option. E.g., +%(trailers:key=Ticket,separator=%x2C )+ | 
|  | shows all trailer lines whose key is "Ticket" separated by a comma | 
|  | and a space. | 
|  | ** `unfold[=<bool>]`: make it behave as if interpret-trailer's `--unfold` | 
|  | option was given. E.g., | 
|  | +%(trailers:only,unfold=true)+ unfolds and shows all trailer lines. | 
|  | ** `keyonly[=<bool>]`: only show the key part of the trailer. | 
|  | ** `valueonly[=<bool>]`: only show the value part of the trailer. | 
|  | ** `key_value_separator=<sep>`: specify the separator inserted between | 
|  | the key and value of each trailer. Defaults to ": ". Otherwise it | 
|  | shares the same semantics as `separator=<sep>` above. | 
|  |  | 
|  | NOTE: Some placeholders may depend on other options given to the | 
|  | revision traversal engine. For example, the +%g*+ reflog options will | 
|  | insert an empty string unless we are traversing reflog entries (e.g., by | 
|  | `git log -g`). The +%d+ and +%D+ placeholders will use the "short" | 
|  | decoration format if `--decorate` was not already provided on the command | 
|  | line. | 
|  |  | 
|  | The boolean options accept an optional value `[=<bool-value>]`. The | 
|  | values taken by `--type=bool` linkgit:git-config[1], like `yes` and `off`, | 
|  | are all accepted.  Giving a boolean option without `=<value>` is | 
|  | equivalent to giving it with `=true`. | 
|  |  | 
|  | If you add a `+` (plus sign) after +%+ of a placeholder, a line-feed | 
|  | is inserted immediately before the expansion if and only if the | 
|  | placeholder expands to a non-empty string. | 
|  |  | 
|  | If you add a `-` (minus sign) after +%+ of a placeholder, all consecutive | 
|  | line-feeds immediately preceding the expansion are deleted if and only if the | 
|  | placeholder expands to an empty string. | 
|  |  | 
|  | If you add a `' '` (space) after +%+ of a placeholder, a space | 
|  | is inserted immediately before the expansion if and only if the | 
|  | placeholder expands to a non-empty string. | 
|  |  | 
|  | * `tformat:` | 
|  | + | 
|  | The `tformat:` format works exactly like `format:`, except that it | 
|  | provides "terminator" semantics instead of "separator" semantics. In | 
|  | other words, each commit has the message terminator character (usually a | 
|  | newline) appended, rather than a separator placed between entries. | 
|  | This means that the final entry of a single-line format will be properly | 
|  | terminated with a new line, just as the "oneline" format does. | 
|  | For example: | 
|  | + | 
|  | --------------------- | 
|  | $ git log -2 --pretty=format:%h 4da45bef \ | 
|  | | perl -pe '$_ .= " -- NO NEWLINE\n" unless /\n/' | 
|  | 4da45be | 
|  | 7134973 -- NO NEWLINE | 
|  |  | 
|  | $ git log -2 --pretty=tformat:%h 4da45bef \ | 
|  | | perl -pe '$_ .= " -- NO NEWLINE\n" unless /\n/' | 
|  | 4da45be | 
|  | 7134973 | 
|  | --------------------- | 
|  | + | 
|  | In addition, any unrecognized string that has a +%+ in it is interpreted | 
|  | as if it has `tformat:` in front of it.  For example, these two are | 
|  | equivalent: | 
|  | + | 
|  | --------------------- | 
|  | $ git log -2 --pretty=tformat:%h 4da45bef | 
|  | $ git log -2 --pretty=%h 4da45bef | 
|  | --------------------- |