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] [--keep] [--utf8 | --no-utf8] 13 [--3way] [--interactive] [--committer-date-is-author-date] 14 [--ignore-date] [--ignore-space-change | --ignore-whitespace] 15 [--whitespace=<option>] [-C<n>] [-p<n>] [--directory=<dir>] 16 [--reject] [-q | --quiet] 17 [<mbox> | <Maildir>...] 18'git am' (--skip | --resolved | --abort) 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 26OPTIONS 27------- 28<mbox>|<Maildir>...:: 29 The list of mailbox files to read patches from. If you do not 30 supply this argument, the command reads from the standard input. 31 If you supply directories, they will be treated as Maildirs. 32 33-s:: 34--signoff:: 35 Add a `Signed-off-by:` line to the commit message, using 36 the committer identity of yourself. 37 38-k:: 39--keep:: 40 Pass `-k` flag to 'git-mailinfo' (see linkgit:git-mailinfo[1]). 41 42-q:: 43--quiet:: 44 Be quiet. Only print error messages. 45 46-u:: 47--utf8:: 48 Pass `-u` flag to 'git-mailinfo' (see linkgit:git-mailinfo[1]). 49 The proposed commit log message taken from the e-mail 50 is re-coded into UTF-8 encoding (configuration variable 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 55default. You can use `--no-utf8` to override this. 56 57--no-utf8:: 58 Pass `-n` flag to 'git-mailinfo' (see 59 linkgit:git-mailinfo[1]). 60 61-3:: 62--3way:: 63 When the patch does not apply cleanly, fall back on 64 3-way merge if the patch records the identity of blobs 65 it is supposed to apply to and we have those blobs 66 available locally. 67 68--ignore-date:: 69--ignore-space-change:: 70--ignore-whitespace:: 71--whitespace=<option>:: 72-C<n>:: 73-p<n>:: 74--directory=<dir>:: 75--reject:: 76 These flags are passed to the 'git-apply' (see linkgit:git-apply[1]) 77 program that applies 78 the patch. 79 80-i:: 81--interactive:: 82 Run interactively. 83 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 89 value as the author date. 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 95 user to lie about the author date by using the same 96 value as the committer date. 97 98--skip:: 99 Skip the current patch. This is only meaningful when 100 restarting an aborted patch. 101 102-r:: 103--resolved:: 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. 110 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 116 for internal use between 'git-rebase' and 'git-am'. 117 118--abort:: 119 Restore the original branch and abort the patching operation. 120 121DISCUSSION 122---------- 123 124The commit author name is taken from the "From: " line of the 125message, and commit author date is taken from the "Date: " line 126of the message. The "Subject: " line is used as the title of 127the commit, after stripping common prefix "[PATCH <anything>]". 128The "Subject: " line is supposed to concisely describe what the 129commit is about in one line of text. 130 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. 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 146where the patch begins. Excess whitespace at the end of each 147line is automatically stripped. 148 149The patch is expected to be inline, directly following the 150message. Any line that is of the form: 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 159When initially invoking `git am`, you give it the names of the mailboxes 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: 162 163. skip the current patch by re-running the command with the '--skip' 164 option. 165 166. hand resolve the conflict in the working directory, and update 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. 169 170The command refuses to process new mailboxes while the `.git/rebase-apply` 171directory exists, so if you decide to start over from scratch, 172run `rm -f -r .git/rebase-apply` before running the command with mailbox 173names. 174 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 181 182SEE ALSO 183-------- 184linkgit:git-apply[1]. 185 186 187Author 188------ 189Written by Junio C Hamano <gitster@pobox.com> 190 191Documentation 192-------------- 193Documentation by Petr Baudis, Junio C Hamano and the git-list <git@vger.kernel.org>. 194 195GIT 196--- 197Part of the linkgit:git[1] suite