1git-am(1) 2========= 3 4NAME 5---- 6git-am - Apply a series of patches from a mailbox 7 8 9SYNOPSIS 10-------- 11[verse] 12'git-am' [--signoff] [--dotest=<dir>] [--utf8 | --no-utf8] [--binary] [--3way] 13 [--interactive] [--whitespace=<option>] [-C<n>] [-p<n>] 14 <mbox>... 15'git-am' [--skip | --resolved] 16 17DESCRIPTION 18----------- 19Splits mail messages in a mailbox into commit log message, 20authorship information and patches, and applies them to the 21current branch. 22 23OPTIONS 24------- 25<mbox>...:: 26 The list of mailbox files to read patches from. If you do not 27 supply this argument, reads from the standard input. 28 29--signoff:: 30 Add `Signed-off-by:` line to the commit message, using 31 the committer identity of yourself. 32 33--dotest=<dir>:: 34 Instead of `.dotest` directory, use <dir> as a working 35 area to store extracted patches. 36 37--keep:: 38 Pass `-k` flag to `git-mailinfo` (see gitlink:git-mailinfo[1]). 39 40--utf8:: 41 Pass `-u` flag to `git-mailinfo` (see gitlink:git-mailinfo[1]). 42 The proposed commit log message taken from the e-mail 43 are re-coded into UTF-8 encoding (configuration variable 44 `i18n.commitencoding` can be used to specify project's 45 preferred encoding if it is not UTF-8). 46+ 47This was optional in prior versions of git, but now it is the 48default. You could use `--no-utf8` to override this. 49 50--no-utf8:: 51 Do not pass `-u` flag to `git-mailinfo` (see 52 gitlink:git-mailinfo[1]). 53 54--binary:: 55 Pass `--allow-binary-replacement` flag to `git-apply` 56 (see gitlink:git-apply[1]). 57 58--3way:: 59 When the patch does not apply cleanly, fall back on 60 3-way merge, if the patch records the identity of blobs 61 it is supposed to apply to, and we have those blobs 62 locally. 63 64--skip:: 65 Skip the current patch. This is only meaningful when 66 restarting an aborted patch. 67 68--whitespace=<option>:: 69 This flag is passed to the `git-apply` program that applies 70 the patch. 71 72-C<n>, -p<n>:: 73 These flags are passed to the `git-apply` program that applies 74 the patch. 75 76--interactive:: 77 Run interactively, just like git-applymbox. 78 79--resolved:: 80 After a patch failure (e.g. attempting to apply 81 conflicting patch), the user has applied it by hand and 82 the index file stores the result of the application. 83 Make a commit using the authorship and commit log 84 extracted from the e-mail message and the current index 85 file, and continue. 86 87DISCUSSION 88---------- 89 90The commit author name is taken from the "From: " line of the 91message, and commit author time is taken from the "Date: " line 92of the message. The "Subject: " line is used as the title of 93the commit, after stripping common prefix "[PATCH <anything>]". 94It is supposed to describe what the commit is about concisely as 95a one line text. 96 97The body of the message (iow, after a blank line that terminates 98RFC2822 headers) can begin with "Subject: " and "From: " lines 99that are different from those of the mail header, to override 100the values of these fields. 101 102The commit message is formed by the title taken from the 103"Subject: ", a blank line and the body of the message up to 104where the patch begins. Excess whitespaces at the end of the 105lines are automatically stripped. 106 107The patch is expected to be inline, directly following the 108message. Any line that is of form: 109 110* three-dashes and end-of-line, or 111* a line that begins with "diff -", or 112* a line that begins with "Index: " 113 114is taken as the beginning of a patch, and the commit log message 115is terminated before the first occurrence of such a line. 116 117When initially invoking it, you give it names of the mailboxes 118to crunch. Upon seeing the first patch that does not apply, it 119aborts in the middle, just like 'git-applymbox' does. You can 120recover from this in one of two ways: 121 122. skip the current one by re-running the command with '--skip' 123 option. 124 125. hand resolve the conflict in the working directory, and update 126 the index file to bring it in a state that the patch should 127 have produced. Then run the command with '--resolved' option. 128 129The command refuses to process new mailboxes while `.dotest` 130directory exists, so if you decide to start over from scratch, 131run `rm -f .dotest` before running the command with mailbox 132names. 133 134 135SEE ALSO 136-------- 137gitlink:git-applymbox[1], gitlink:git-applypatch[1], gitlink:git-apply[1]. 138 139 140Author 141------ 142Written by Junio C Hamano <junkio@cox.net> 143 144Documentation 145-------------- 146Documentation by Petr Baudis, Junio C Hamano and the git-list <git@vger.kernel.org>. 147 148GIT 149--- 150Part of the gitlink:git[7] suite 151