Documentation / pretty-formats.txton commit Merge branch 'cw/maint-exec-defpath' (455bda9)
   1PRETTY FORMATS
   2--------------
   3
   4If the commit is a merge, and if the pretty-format
   5is not 'oneline', 'email' or 'raw', an additional line is
   6inserted before the 'Author:' line.  This line begins with
   7"Merge: " and the sha1s of ancestral commits are printed,
   8separated by spaces.  Note that the listed commits may not
   9necessarily be the list of the *direct* parent commits if you
  10have limited your view of history: for example, if you are
  11only interested in changes related to a certain directory or
  12file.
  13
  14Here are some additional details for each format:
  15
  16* 'oneline'
  17
  18          <sha1> <title line>
  19+
  20This is designed to be as compact as possible.
  21
  22* 'short'
  23
  24          commit <sha1>
  25          Author: <author>
  26
  27              <title line>
  28
  29* 'medium'
  30
  31          commit <sha1>
  32          Author: <author>
  33          Date:   <author date>
  34
  35              <title line>
  36
  37              <full commit message>
  38
  39* 'full'
  40
  41          commit <sha1>
  42          Author: <author>
  43          Commit: <committer>
  44
  45              <title line>
  46
  47              <full commit message>
  48
  49* 'fuller'
  50
  51          commit <sha1>
  52          Author:     <author>
  53          AuthorDate: <author date>
  54          Commit:     <committer>
  55          CommitDate: <committer date>
  56
  57               <title line>
  58
  59               <full commit message>
  60
  61* 'email'
  62
  63          From <sha1> <date>
  64          From: <author>
  65          Date: <author date>
  66          Subject: [PATCH] <title line>
  67
  68          <full commit message>
  69
  70* 'raw'
  71+
  72The 'raw' format shows the entire commit exactly as
  73stored in the commit object.  Notably, the SHA1s are
  74displayed in full, regardless of whether --abbrev or
  75--no-abbrev are used, and 'parents' information show the
  76true parent commits, without taking grafts nor history
  77simplification into account.
  78
  79* 'format:'
  80+
  81The 'format:' format allows you to specify which information
  82you want to show. It works a little bit like printf format,
  83with the notable exception that you get a newline with '%n'
  84instead of '\n'.
  85+
  86E.g, 'format:"The author of %h was %an, %ar%nThe title was >>%s<<%n"'
  87would show something like this:
  88+
  89-------
  90The author of fe6e0ee was Junio C Hamano, 23 hours ago
  91The title was >>t4119: test autocomputing -p<n> for traditional diff input.<<
  92
  93--------
  94+
  95The placeholders are:
  96
  97- '%H': commit hash
  98- '%h': abbreviated commit hash
  99- '%T': tree hash
 100- '%t': abbreviated tree hash
 101- '%P': parent hashes
 102- '%p': abbreviated parent hashes
 103- '%an': author name
 104- '%aN': author name (respecting .mailmap, see linkgit:git-shortlog[1] or linkgit:git-blame[1])
 105- '%ae': author email
 106- '%aE': author email (respecting .mailmap, see linkgit:git-shortlog[1] or linkgit:git-blame[1])
 107- '%ad': author date (format respects --date= option)
 108- '%aD': author date, RFC2822 style
 109- '%ar': author date, relative
 110- '%at': author date, UNIX timestamp
 111- '%ai': author date, ISO 8601 format
 112- '%cn': committer name
 113- '%cN': committer name (respecting .mailmap, see linkgit:git-shortlog[1] or linkgit:git-blame[1])
 114- '%ce': committer email
 115- '%cE': committer email (respecting .mailmap, see linkgit:git-shortlog[1] or linkgit:git-blame[1])
 116- '%cd': committer date
 117- '%cD': committer date, RFC2822 style
 118- '%cr': committer date, relative
 119- '%ct': committer date, UNIX timestamp
 120- '%ci': committer date, ISO 8601 format
 121- '%d': ref names, like the --decorate option of linkgit:git-log[1]
 122- '%e': encoding
 123- '%s': subject
 124- '%f': sanitized subject line, suitable for a filename
 125- '%b': body
 126- '%B': raw body (unwrapped subject and body)
 127- '%N': commit notes
 128- '%gD': reflog selector, e.g., `refs/stash@\{1\}`
 129- '%gd': shortened reflog selector, e.g., `stash@\{1\}`
 130- '%gs': reflog subject
 131- '%Cred': switch color to red
 132- '%Cgreen': switch color to green
 133- '%Cblue': switch color to blue
 134- '%Creset': reset color
 135- '%C(...)': color specification, as described in color.branch.* config option
 136- '%m': left, right or boundary mark
 137- '%n': newline
 138- '%%': a raw '%'
 139- '%x00': print a byte from a hex code
 140- '%w([<w>[,<i1>[,<i2>]]])': switch line wrapping, like the -w option of
 141  linkgit:git-shortlog[1].
 142
 143NOTE: Some placeholders may depend on other options given to the
 144revision traversal engine. For example, the `%g*` reflog options will
 145insert an empty string unless we are traversing reflog entries (e.g., by
 146`git log -g`). The `%d` placeholder will use the "short" decoration
 147format if `--decorate` was not already provided on the command line.
 148
 149If you add a `{plus}` (plus sign) after '%' of a placeholder, a line-feed
 150is inserted immediately before the expansion if and only if the
 151placeholder expands to a non-empty string.
 152
 153If you add a `-` (minus sign) after '%' of a placeholder, line-feeds that
 154immediately precede the expansion are deleted if and only if the
 155placeholder expands to an empty string.
 156
 157* 'tformat:'
 158+
 159The 'tformat:' format works exactly like 'format:', except that it
 160provides "terminator" semantics instead of "separator" semantics. In
 161other words, each commit has the message terminator character (usually a
 162newline) appended, rather than a separator placed between entries.
 163This means that the final entry of a single-line format will be properly
 164terminated with a new line, just as the "oneline" format does.
 165For example:
 166+
 167---------------------
 168$ git log -2 --pretty=format:%h 4da45bef \
 169  | perl -pe '$_ .= " -- NO NEWLINE\n" unless /\n/'
 1704da45be
 1717134973 -- NO NEWLINE
 172
 173$ git log -2 --pretty=tformat:%h 4da45bef \
 174  | perl -pe '$_ .= " -- NO NEWLINE\n" unless /\n/'
 1754da45be
 1767134973
 177---------------------
 178+
 179In addition, any unrecognized string that has a `%` in it is interpreted
 180as if it has `tformat:` in front of it.  For example, these two are
 181equivalent:
 182+
 183---------------------
 184$ git log -2 --pretty=tformat:%h 4da45bef
 185$ git log -2 --pretty=%h 4da45bef
 186---------------------