]>
Commit | Line | Data |
---|---|---|
42e2cba2 | 1 | git-am(1) |
05625af3 | 2 | ========= |
42e2cba2 PB |
3 | |
4 | NAME | |
5 | ---- | |
c3f0baac | 6 | git-am - Apply a series of patches from a mailbox |
42e2cba2 PB |
7 | |
8 | ||
9 | SYNOPSIS | |
10 | -------- | |
353ce815 | 11 | [verse] |
566902f2 | 12 | 'git am' [--signoff] [--keep] [--[no-]keep-cr] [--[no-]utf8] [--no-verify] |
e97a5e76 | 13 | [--[no-]3way] [--interactive] [--committer-date-is-author-date] |
86c91f91 | 14 | [--ignore-date] [--ignore-space-change | --ignore-whitespace] |
b47dfe9e | 15 | [--whitespace=<option>] [-C<n>] [-p<n>] [--directory=<dir>] |
58725efd | 16 | [--exclude=<path>] [--include=<path>] [--reject] [-q | --quiet] |
2dfefe0f | 17 | [--[no-]scissors] [-S[<keyid>]] [--patch-format=<format>] |
59b519ab | 18 | [--quoted-cr=<action>] |
7c096b8d | 19 | [--empty=(stop|drop|keep)] |
0adda936 | 20 | [(<mbox> | <Maildir>)...] |
9e7e41bf | 21 | 'git am' (--continue | --skip | --abort | --quit | --show-current-patch[=(diff|raw)] | --allow-empty) |
42e2cba2 PB |
22 | |
23 | DESCRIPTION | |
24 | ----------- | |
6cc668c0 | 25 | Splits mail messages in a mailbox into commit log messages, |
42e2cba2 | 26 | authorship information and patches, and applies them to the |
9b0c7f30 JH |
27 | current branch. You could think of it as a reverse operation |
28 | of linkgit:git-format-patch[1] run on a branch with a straight | |
29 | history without merges. | |
42e2cba2 | 30 | |
baa720f5 JH |
31 | OPTIONS |
32 | ------- | |
0adda936 | 33 | (<mbox>|<Maildir>)...:: |
d4144612 | 34 | The list of mailbox files to read patches from. If you do not |
07f5746f DM |
35 | supply this argument, the command reads from the standard input. |
36 | If you supply directories, they will be treated as Maildirs. | |
d4144612 | 37 | |
3240240f SB |
38 | -s:: |
39 | --signoff:: | |
3abd4a67 | 40 | Add a `Signed-off-by` trailer to the commit message, using |
baa720f5 | 41 | the committer identity of yourself. |
b2c150d3 | 42 | See the signoff option in linkgit:git-commit[1] for more information. |
42e2cba2 | 43 | |
3240240f SB |
44 | -k:: |
45 | --keep:: | |
0b444cdb | 46 | Pass `-k` flag to 'git mailinfo' (see linkgit:git-mailinfo[1]). |
d84029b6 | 47 | |
f7e5ea17 TR |
48 | --keep-non-patch:: |
49 | Pass `-b` flag to 'git mailinfo' (see linkgit:git-mailinfo[1]). | |
50 | ||
0460ed2c | 51 | --[no-]keep-cr:: |
ad2c9280 SH |
52 | With `--keep-cr`, call 'git mailsplit' (see linkgit:git-mailsplit[1]) |
53 | with the same option, to prevent it from stripping CR at the end of | |
e80d4cbe SH |
54 | lines. `am.keepcr` configuration variable can be used to specify the |
55 | default behaviour. `--no-keep-cr` is useful to override `am.keepcr`. | |
ad2c9280 | 56 | |
017678b4 JH |
57 | -c:: |
58 | --scissors:: | |
59 | Remove everything in body before a scissors line (see | |
afb5de7f MM |
60 | linkgit:git-mailinfo[1]). Can be activated by default using |
61 | the `mailinfo.scissors` configuration variable. | |
017678b4 | 62 | |
8024d596 | 63 | --no-scissors:: |
434a6db7 NS |
64 | Ignore scissors lines (see linkgit:git-mailinfo[1]). |
65 | ||
59b519ab ĐTCD |
66 | --quoted-cr=<action>:: |
67 | This flag will be passed down to 'git mailinfo' (see linkgit:git-mailinfo[1]). | |
68 | ||
7c096b8d A |
69 | --empty=(stop|drop|keep):: |
70 | By default, or when the option is set to 'stop', the command | |
71 | errors out on an input e-mail message lacking a patch | |
72 | and stops into the middle of the current am session. When this | |
73 | option is set to 'drop', skip such an e-mail message instead. | |
74 | When this option is set to 'keep', create an empty commit, | |
75 | recording the contents of the e-mail message as its log. | |
76 | ||
a078f732 PB |
77 | -m:: |
78 | --message-id:: | |
79 | Pass the `-m` flag to 'git mailinfo' (see linkgit:git-mailinfo[1]), | |
80 | so that the Message-ID header is added to the commit message. | |
81 | The `am.messageid` configuration variable can be used to specify | |
82 | the default behaviour. | |
83 | ||
84 | --no-message-id:: | |
85 | Do not add the Message-ID header to the commit message. | |
86 | `no-message-id` is useful to override `am.messageid`. | |
87 | ||
0e987a12 SB |
88 | -q:: |
89 | --quiet:: | |
90 | Be quiet. Only print error messages. | |
91 | ||
3240240f SB |
92 | -u:: |
93 | --utf8:: | |
0b444cdb | 94 | Pass `-u` flag to 'git mailinfo' (see linkgit:git-mailinfo[1]). |
d84029b6 | 95 | The proposed commit log message taken from the e-mail |
870e0d61 | 96 | is re-coded into UTF-8 encoding (configuration variable |
0a4f051f | 97 | `i18n.commitEncoding` can be used to specify the project's |
d84029b6 JH |
98 | preferred encoding if it is not UTF-8). |
99 | + | |
100 | This was optional in prior versions of git, but now it is the | |
07f5746f | 101 | default. You can use `--no-utf8` to override this. |
d84029b6 JH |
102 | |
103 | --no-utf8:: | |
0b444cdb | 104 | Pass `-n` flag to 'git mailinfo' (see |
5162e697 | 105 | linkgit:git-mailinfo[1]). |
baa720f5 | 106 | |
3240240f SB |
107 | -3:: |
108 | --3way:: | |
e97a5e76 | 109 | --no-3way:: |
baa720f5 | 110 | When the patch does not apply cleanly, fall back on |
07f5746f DM |
111 | 3-way merge if the patch records the identity of blobs |
112 | it is supposed to apply to and we have those blobs | |
e97a5e76 RL |
113 | available locally. `--no-3way` can be used to override |
114 | am.threeWay configuration variable. For more information, | |
115 | see am.threeWay in linkgit:git-config[1]. | |
baa720f5 | 116 | |
0dbc715a | 117 | include::rerere-options.txt[] |
aba4954c | 118 | |
86c91f91 GB |
119 | --ignore-space-change:: |
120 | --ignore-whitespace:: | |
8273c79a | 121 | --whitespace=<option>:: |
3240240f SB |
122 | -C<n>:: |
123 | -p<n>:: | |
b47dfe9e | 124 | --directory=<dir>:: |
2ae7345a | 125 | --exclude=<path>:: |
58725efd | 126 | --include=<path>:: |
b80da424 | 127 | --reject:: |
0b444cdb | 128 | These flags are passed to the 'git apply' (see linkgit:git-apply[1]) |
870e0d61 | 129 | program that applies |
67dad687 MT |
130 | the patch. |
131 | ||
64981376 CP |
132 | --patch-format:: |
133 | By default the command will try to detect the patch format | |
134 | automatically. This option allows the user to bypass the automatic | |
135 | detection and specify the patch format that the patch(es) should be | |
d9925d1a EW |
136 | interpreted as. Valid formats are mbox, mboxrd, |
137 | stgit, stgit-series and hg. | |
64981376 | 138 | |
3240240f SB |
139 | -i:: |
140 | --interactive:: | |
870e0d61 FL |
141 | Run interactively. |
142 | ||
566902f2 TR |
143 | -n:: |
144 | --no-verify:: | |
145 | By default, the pre-applypatch and applypatch-msg hooks are run. | |
146 | When any of `--no-verify` or `-n` is given, these are bypassed. | |
147 | See also linkgit:githooks[5]. | |
148 | ||
a79ec62d NS |
149 | --committer-date-is-author-date:: |
150 | By default the command records the date from the e-mail | |
151 | message as the commit author date, and uses the time of | |
152 | commit creation as the committer date. This allows the | |
153 | user to lie about the committer date by using the same | |
e77063fc | 154 | value as the author date. |
a79ec62d NS |
155 | |
156 | --ignore-date:: | |
157 | By default the command records the date from the e-mail | |
158 | message as the commit author date, and uses the time of | |
159 | commit creation as the committer date. This allows the | |
e77063fc SB |
160 | user to lie about the author date by using the same |
161 | value as the committer date. | |
a79ec62d | 162 | |
870e0d61 FL |
163 | --skip:: |
164 | Skip the current patch. This is only meaningful when | |
165 | restarting an aborted patch. | |
baa720f5 | 166 | |
3b4e395f NV |
167 | -S[<keyid>]:: |
168 | --gpg-sign[=<keyid>]:: | |
ae06ba61 | 169 | --no-gpg-sign:: |
2b594bf9 MM |
170 | GPG-sign commits. The `keyid` argument is optional and |
171 | defaults to the committer identity; if specified, it must be | |
ae06ba61 ĐTCD |
172 | stuck to the option without a space. `--no-gpg-sign` is useful to |
173 | countermand both `commit.gpgSign` configuration variable, and | |
174 | earlier `--gpg-sign`. | |
3b4e395f | 175 | |
c8089af6 | 176 | --continue:: |
3240240f SB |
177 | -r:: |
178 | --resolved:: | |
087b6742 JH |
179 | After a patch failure (e.g. attempting to apply |
180 | conflicting patch), the user has applied it by hand and | |
181 | the index file stores the result of the application. | |
182 | Make a commit using the authorship and commit log | |
183 | extracted from the e-mail message and the current index | |
184 | file, and continue. | |
baa720f5 | 185 | |
5c19f244 AR |
186 | --resolvemsg=<msg>:: |
187 | When a patch failure occurs, <msg> will be printed | |
188 | to the screen before exiting. This overrides the | |
8ceb6fbd | 189 | standard message informing you to use `--continue` |
5c19f244 | 190 | or `--skip` to handle the failure. This is solely |
0b444cdb | 191 | for internal use between 'git rebase' and 'git am'. |
5c19f244 | 192 | |
3e5057a8 NS |
193 | --abort:: |
194 | Restore the original branch and abort the patching operation. | |
0a4f051f | 195 | Revert the contents of files involved in the am operation to their |
ea7dc012 | 196 | pre-am state. |
3e5057a8 | 197 | |
65ed8ff3 NTND |
198 | --quit:: |
199 | Abort the patching operation but keep HEAD and the index | |
200 | untouched. | |
201 | ||
aa416b22 PB |
202 | --show-current-patch[=(diff|raw)]:: |
203 | Show the message at which `git am` has stopped due to | |
204 | conflicts. If `raw` is specified, show the raw contents of | |
205 | the e-mail message; if `diff`, show the diff portion only. | |
206 | Defaults to `raw`. | |
984913a2 | 207 | |
9e7e41bf A |
208 | --allow-empty:: |
209 | After a patch failure on an input e-mail message lacking a patch, | |
210 | create an empty commit with the contents of the e-mail message | |
211 | as its log message. | |
212 | ||
baa720f5 JH |
213 | DISCUSSION |
214 | ---------- | |
215 | ||
2499857b | 216 | The commit author name is taken from the "From: " line of the |
e77063fc | 217 | message, and commit author date is taken from the "Date: " line |
2499857b JH |
218 | of the message. The "Subject: " line is used as the title of |
219 | the commit, after stripping common prefix "[PATCH <anything>]". | |
3db964b5 SB |
220 | The "Subject: " line is supposed to concisely describe what the |
221 | commit is about in one line of text. | |
2499857b | 222 | |
f8740c58 PM |
223 | "From: ", "Date: ", and "Subject: " lines starting the body override the |
224 | respective commit author name and title values taken from the headers. | |
2499857b JH |
225 | |
226 | The commit message is formed by the title taken from the | |
227 | "Subject: ", a blank line and the body of the message up to | |
3db964b5 SB |
228 | where the patch begins. Excess whitespace at the end of each |
229 | line is automatically stripped. | |
2499857b JH |
230 | |
231 | The patch is expected to be inline, directly following the | |
07f5746f | 232 | message. Any line that is of the form: |
2499857b JH |
233 | |
234 | * three-dashes and end-of-line, or | |
235 | * a line that begins with "diff -", or | |
236 | * a line that begins with "Index: " | |
237 | ||
238 | is taken as the beginning of a patch, and the commit log message | |
239 | is terminated before the first occurrence of such a line. | |
240 | ||
3db964b5 | 241 | When initially invoking `git am`, you give it the names of the mailboxes |
07f5746f DM |
242 | to process. Upon seeing the first patch that does not apply, it |
243 | aborts in the middle. You can recover from this in one of two ways: | |
baa720f5 | 244 | |
bcf9626a | 245 | . skip the current patch by re-running the command with the `--skip` |
baa720f5 JH |
246 | option. |
247 | ||
087b6742 | 248 | . hand resolve the conflict in the working directory, and update |
07f5746f | 249 | the index file to bring it into a state that the patch should |
bcf9626a | 250 | have produced. Then run the command with the `--continue` option. |
baa720f5 | 251 | |
b5f306fb SG |
252 | The command refuses to process new mailboxes until the current |
253 | operation is finished, so if you decide to start over from scratch, | |
254 | run `git am --abort` before running the command with mailbox | |
baa720f5 | 255 | names. |
42e2cba2 | 256 | |
9869099b BG |
257 | Before any patches are applied, ORIG_HEAD is set to the tip of the |
258 | current branch. This is useful if you have problems with multiple | |
259 | commits, like running 'git am' on the wrong branch or an error in the | |
260 | commits that is more easily fixed by changing the mailbox (e.g. | |
261 | errors in the "From:" lines). | |
262 | ||
0e3d40c6 JN |
263 | HOOKS |
264 | ----- | |
265 | This command can run `applypatch-msg`, `pre-applypatch`, | |
266 | and `post-applypatch` hooks. See linkgit:githooks[5] for more | |
267 | information. | |
42e2cba2 | 268 | |
16f6b0d1 ÆAB |
269 | CONFIGURATION |
270 | ------------- | |
271 | ||
272 | include::includes/cmd-config-section-all.txt[] | |
273 | ||
274 | include::config/am.txt[] | |
275 | ||
42e2cba2 PB |
276 | SEE ALSO |
277 | -------- | |
9b0c7f30 JH |
278 | linkgit:git-apply[1], |
279 | linkgit:git-format-patch[1]. | |
42e2cba2 | 280 | |
42e2cba2 PB |
281 | GIT |
282 | --- | |
9e1f0a85 | 283 | Part of the linkgit:git[1] suite |