Documentation / pretty-formats.txton commit git grep: Add "-z/--null" option as in GNU's grep. (83caecc)
   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)
 105- '%ae': author email
 106- '%ad': author date (format respects --date= option)
 107- '%aD': author date, RFC2822 style
 108- '%ar': author date, relative
 109- '%at': author date, UNIX timestamp
 110- '%ai': author date, ISO 8601 format
 111- '%cn': committer name
 112- '%cN': committer name (respecting .mailmap)
 113- '%ce': committer email
 114- '%cd': committer date
 115- '%cD': committer date, RFC2822 style
 116- '%cr': committer date, relative
 117- '%ct': committer date, UNIX timestamp
 118- '%ci': committer date, ISO 8601 format
 119- '%d': ref names, like the --decorate option of linkgit:git-log[1]
 120- '%e': encoding
 121- '%s': subject
 122- '%b': body
 123- '%Cred': switch color to red
 124- '%Cgreen': switch color to green
 125- '%Cblue': switch color to blue
 126- '%Creset': reset color
 127- '%m': left, right or boundary mark
 128- '%n': newline
 129- '%x00': print a byte from a hex code
 130
 131* 'tformat:'
 132+
 133The 'tformat:' format works exactly like 'format:', except that it
 134provides "terminator" semantics instead of "separator" semantics. In
 135other words, each commit has the message terminator character (usually a
 136newline) appended, rather than a separator placed between entries.
 137This means that the final entry of a single-line format will be properly
 138terminated with a new line, just as the "oneline" format does.
 139For example:
 140+
 141---------------------
 142$ git log -2 --pretty=format:%h 4da45bef \
 143  | perl -pe '$_ .= " -- NO NEWLINE\n" unless /\n/'
 1444da45be
 1457134973 -- NO NEWLINE
 146
 147$ git log -2 --pretty=tformat:%h 4da45bef \
 148  | perl -pe '$_ .= " -- NO NEWLINE\n" unless /\n/'
 1494da45be
 1507134973
 151---------------------