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