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