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