]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-am.txt
Update draft release notes to 2.0
[thirdparty/git.git] / Documentation / git-am.txt
CommitLineData
42e2cba2 1git-am(1)
05625af3 2=========
42e2cba2
PB
3
4NAME
5----
c3f0baac 6git-am - Apply a series of patches from a mailbox
42e2cba2
PB
7
8
9SYNOPSIS
10--------
353ce815 11[verse]
0460ed2c 12'git am' [--signoff] [--keep] [--[no-]keep-cr] [--[no-]utf8]
a79ec62d 13 [--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]
3b4e395f 17 [--[no-]scissors] [-S[<keyid>]]
0adda936 18 [(<mbox> | <Maildir>)...]
c8089af6 19'git am' (--continue | --skip | --abort)
42e2cba2
PB
20
21DESCRIPTION
22-----------
23Splits mail messages in a mailbox into commit log message,
24authorship information and patches, and applies them to the
25current branch.
26
baa720f5
JH
27OPTIONS
28-------
0adda936 29(<mbox>|<Maildir>)...::
d4144612 30 The list of mailbox files to read patches from. If you do not
07f5746f
DM
31 supply this argument, the command reads from the standard input.
32 If you supply directories, they will be treated as Maildirs.
d4144612 33
3240240f
SB
34-s::
35--signoff::
3db964b5 36 Add a `Signed-off-by:` line to the commit message, using
baa720f5 37 the committer identity of yourself.
42e2cba2 38
3240240f
SB
39-k::
40--keep::
0b444cdb 41 Pass `-k` flag to 'git mailinfo' (see linkgit:git-mailinfo[1]).
d84029b6 42
f7e5ea17
TR
43--keep-non-patch::
44 Pass `-b` flag to 'git mailinfo' (see linkgit:git-mailinfo[1]).
45
0460ed2c 46--[no-]keep-cr::
ad2c9280
SH
47 With `--keep-cr`, call 'git mailsplit' (see linkgit:git-mailsplit[1])
48 with the same option, to prevent it from stripping CR at the end of
e80d4cbe
SH
49 lines. `am.keepcr` configuration variable can be used to specify the
50 default behaviour. `--no-keep-cr` is useful to override `am.keepcr`.
ad2c9280 51
017678b4
JH
52-c::
53--scissors::
54 Remove everything in body before a scissors line (see
55 linkgit:git-mailinfo[1]).
56
8024d596 57--no-scissors::
434a6db7
NS
58 Ignore scissors lines (see linkgit:git-mailinfo[1]).
59
0e987a12
SB
60-q::
61--quiet::
62 Be quiet. Only print error messages.
63
3240240f
SB
64-u::
65--utf8::
0b444cdb 66 Pass `-u` flag to 'git mailinfo' (see linkgit:git-mailinfo[1]).
d84029b6 67 The proposed commit log message taken from the e-mail
870e0d61 68 is re-coded into UTF-8 encoding (configuration variable
d84029b6
JH
69 `i18n.commitencoding` can be used to specify project's
70 preferred encoding if it is not UTF-8).
71+
72This was optional in prior versions of git, but now it is the
07f5746f 73default. You can use `--no-utf8` to override this.
d84029b6
JH
74
75--no-utf8::
0b444cdb 76 Pass `-n` flag to 'git mailinfo' (see
5162e697 77 linkgit:git-mailinfo[1]).
baa720f5 78
3240240f
SB
79-3::
80--3way::
baa720f5 81 When the patch does not apply cleanly, fall back on
07f5746f
DM
82 3-way merge if the patch records the identity of blobs
83 it is supposed to apply to and we have those blobs
870e0d61 84 available locally.
baa720f5 85
86c91f91
GB
86--ignore-date::
87--ignore-space-change::
88--ignore-whitespace::
8273c79a 89--whitespace=<option>::
3240240f
SB
90-C<n>::
91-p<n>::
b47dfe9e 92--directory=<dir>::
2ae7345a 93--exclude=<path>::
58725efd 94--include=<path>::
b80da424 95--reject::
0b444cdb 96 These flags are passed to the 'git apply' (see linkgit:git-apply[1])
870e0d61 97 program that applies
67dad687
MT
98 the patch.
99
3240240f
SB
100-i::
101--interactive::
870e0d61
FL
102 Run interactively.
103
a79ec62d
NS
104--committer-date-is-author-date::
105 By default the command records the date from the e-mail
106 message as the commit author date, and uses the time of
107 commit creation as the committer date. This allows the
108 user to lie about the committer date by using the same
e77063fc 109 value as the author date.
a79ec62d
NS
110
111--ignore-date::
112 By default the command records the date from the e-mail
113 message as the commit author date, and uses the time of
114 commit creation as the committer date. This allows the
e77063fc
SB
115 user to lie about the author date by using the same
116 value as the committer date.
a79ec62d 117
870e0d61
FL
118--skip::
119 Skip the current patch. This is only meaningful when
120 restarting an aborted patch.
baa720f5 121
3b4e395f
NV
122-S[<keyid>]::
123--gpg-sign[=<keyid>]::
124 GPG-sign commits.
125
c8089af6 126--continue::
3240240f
SB
127-r::
128--resolved::
087b6742
JH
129 After a patch failure (e.g. attempting to apply
130 conflicting patch), the user has applied it by hand and
131 the index file stores the result of the application.
132 Make a commit using the authorship and commit log
133 extracted from the e-mail message and the current index
134 file, and continue.
baa720f5 135
5c19f244
AR
136--resolvemsg=<msg>::
137 When a patch failure occurs, <msg> will be printed
138 to the screen before exiting. This overrides the
8ceb6fbd 139 standard message informing you to use `--continue`
5c19f244 140 or `--skip` to handle the failure. This is solely
0b444cdb 141 for internal use between 'git rebase' and 'git am'.
5c19f244 142
3e5057a8
NS
143--abort::
144 Restore the original branch and abort the patching operation.
145
baa720f5
JH
146DISCUSSION
147----------
148
2499857b 149The commit author name is taken from the "From: " line of the
e77063fc 150message, and commit author date is taken from the "Date: " line
2499857b
JH
151of the message. The "Subject: " line is used as the title of
152the commit, after stripping common prefix "[PATCH <anything>]".
3db964b5
SB
153The "Subject: " line is supposed to concisely describe what the
154commit is about in one line of text.
2499857b 155
f43c97f5
NS
156"From: " and "Subject: " lines starting the body override the respective
157commit author name and title values taken from the headers.
2499857b
JH
158
159The commit message is formed by the title taken from the
160"Subject: ", a blank line and the body of the message up to
3db964b5
SB
161where the patch begins. Excess whitespace at the end of each
162line is automatically stripped.
2499857b
JH
163
164The patch is expected to be inline, directly following the
07f5746f 165message. Any line that is of the form:
2499857b
JH
166
167* three-dashes and end-of-line, or
168* a line that begins with "diff -", or
169* a line that begins with "Index: "
170
171is taken as the beginning of a patch, and the commit log message
172is terminated before the first occurrence of such a line.
173
3db964b5 174When initially invoking `git am`, you give it the names of the mailboxes
07f5746f
DM
175to process. Upon seeing the first patch that does not apply, it
176aborts in the middle. You can recover from this in one of two ways:
baa720f5 177
07f5746f 178. skip the current patch by re-running the command with the '--skip'
baa720f5
JH
179 option.
180
087b6742 181. hand resolve the conflict in the working directory, and update
07f5746f 182 the index file to bring it into a state that the patch should
8ceb6fbd 183 have produced. Then run the command with the '--continue' option.
baa720f5 184
b5f306fb
SG
185The command refuses to process new mailboxes until the current
186operation is finished, so if you decide to start over from scratch,
187run `git am --abort` before running the command with mailbox
baa720f5 188names.
42e2cba2 189
9869099b
BG
190Before any patches are applied, ORIG_HEAD is set to the tip of the
191current branch. This is useful if you have problems with multiple
192commits, like running 'git am' on the wrong branch or an error in the
193commits that is more easily fixed by changing the mailbox (e.g.
194errors in the "From:" lines).
195
0e3d40c6
JN
196HOOKS
197-----
198This command can run `applypatch-msg`, `pre-applypatch`,
199and `post-applypatch` hooks. See linkgit:githooks[5] for more
200information.
42e2cba2
PB
201
202SEE ALSO
203--------
5162e697 204linkgit:git-apply[1].
42e2cba2 205
42e2cba2
PB
206GIT
207---
9e1f0a85 208Part of the linkgit:git[1] suite