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] 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--whitespace=<option>:: 69-C<n>:: 70-p<n>:: 71--directory=<dir>:: 72--reject:: 73 These flags are passed to the 'git-apply' (see linkgit:git-apply[1]) 74 program that applies 75 the patch. 76 77-i:: 78--interactive:: 79 Run interactively. 80 81--committer-date-is-author-date:: 82 By default the command records the date from the e-mail 83 message as the commit author date, and uses the time of 84 commit creation as the committer date. This allows the 85 user to lie about the committer date by using the same 86 value as the author date. 87 88--ignore-date:: 89 By default the command records the date from the e-mail 90 message as the commit author date, and uses the time of 91 commit creation as the committer date. This allows the 92 user to lie about the author date by using the same 93 value as the committer date. 94 95--skip:: 96 Skip the current patch. This is only meaningful when 97 restarting an aborted patch. 98 99-r:: 100--resolved:: 101 After a patch failure (e.g. attempting to apply 102 conflicting patch), the user has applied it by hand and 103 the index file stores the result of the application. 104 Make a commit using the authorship and commit log 105 extracted from the e-mail message and the current index 106 file, and continue. 107 108--resolvemsg=<msg>:: 109 When a patch failure occurs, <msg> will be printed 110 to the screen before exiting. This overrides the 111 standard message informing you to use `--resolved` 112 or `--skip` to handle the failure. This is solely 113 for internal use between 'git-rebase' and 'git-am'. 114 115--abort:: 116 Restore the original branch and abort the patching operation. 117 118DISCUSSION 119---------- 120 121The commit author name is taken from the "From: " line of the 122message, and commit author date is taken from the "Date: " line 123of the message. The "Subject: " line is used as the title of 124the commit, after stripping common prefix "[PATCH <anything>]". 125The "Subject: " line is supposed to concisely describe what the 126commit is about in one line of text. 127 128"From: " and "Subject: " lines starting the body (the rest of the 129message after the blank line terminating the RFC2822 headers) 130override the respective commit author name and title values taken 131from the headers. 132 133The commit message is formed by the title taken from the 134"Subject: ", a blank line and the body of the message up to 135where the patch begins. Excess whitespace at the end of each 136line is automatically stripped. 137 138The patch is expected to be inline, directly following the 139message. Any line that is of the form: 140 141* three-dashes and end-of-line, or 142* a line that begins with "diff -", or 143* a line that begins with "Index: " 144 145is taken as the beginning of a patch, and the commit log message 146is terminated before the first occurrence of such a line. 147 148When initially invoking `git am`, you give it the names of the mailboxes 149to process. Upon seeing the first patch that does not apply, it 150aborts in the middle. You can recover from this in one of two ways: 151 152. skip the current patch by re-running the command with the '--skip' 153 option. 154 155. hand resolve the conflict in the working directory, and update 156 the index file to bring it into a state that the patch should 157 have produced. Then run the command with the '--resolved' option. 158 159The command refuses to process new mailboxes while the `.git/rebase-apply` 160directory exists, so if you decide to start over from scratch, 161run `rm -f -r .git/rebase-apply` before running the command with mailbox 162names. 163 164Before any patches are applied, ORIG_HEAD is set to the tip of the 165current branch. This is useful if you have problems with multiple 166commits, like running 'git am' on the wrong branch or an error in the 167commits that is more easily fixed by changing the mailbox (e.g. 168errors in the "From:" lines). 169 170 171SEE ALSO 172-------- 173linkgit:git-apply[1]. 174 175 176Author 177------ 178Written by Junio C Hamano <gitster@pobox.com> 179 180Documentation 181-------------- 182Documentation by Petr Baudis, Junio C Hamano and the git-list <git@vger.kernel.org>. 183 184GIT 185--- 186Part of the linkgit:git[1] suite