git-am(1)
=========

NAME
----
git-am - Apply a series of patches from a mailbox


SYNOPSIS
--------
[verse]
'git am' [--signoff] [--keep] [--utf8 | --no-utf8]
	 [--3way] [--interactive]
         [--whitespace=<option>] [-C<n>] [-p<n>]
	 [<mbox> | <Maildir>...]
'git am' (--skip | --resolved | --abort)

DESCRIPTION
-----------
Splits mail messages in a mailbox into commit log message,
authorship information and patches, and applies them to the
current branch.

OPTIONS
-------
<mbox>|<Maildir>...::
	The list of mailbox files to read patches from. If you do not
	supply this argument, reads from the standard input. If you supply
	directories, they'll be treated as Maildirs.

-s::
--signoff::
	Add `Signed-off-by:` line to the commit message, using
	the committer identity of yourself.

-k::
--keep::
	Pass `-k` flag to 'git-mailinfo' (see linkgit:git-mailinfo[1]).

-u::
--utf8::
	Pass `-u` flag to 'git-mailinfo' (see linkgit:git-mailinfo[1]).
	The proposed commit log message taken from the e-mail
	is re-coded into UTF-8 encoding (configuration variable
	`i18n.commitencoding` can be used to specify project's
	preferred encoding if it is not UTF-8).
+
This was optional in prior versions of git, but now it is the
default.   You could use `--no-utf8` to override this.

--no-utf8::
	Pass `-n` flag to 'git-mailinfo' (see
	linkgit:git-mailinfo[1]).

-3::
--3way::
	When the patch does not apply cleanly, fall back on
	3-way merge, if the patch records the identity of blobs
	it is supposed to apply to, and we have those blobs
	available locally.

--whitespace=<option>::
	This flag is passed to the 'git-apply' (see linkgit:git-apply[1])
	program that applies
	the patch.

-C<n>::
-p<n>::
	These flags are passed to the 'git-apply' (see linkgit:git-apply[1])
	program that applies
	the patch.

-i::
--interactive::
	Run interactively.

--skip::
	Skip the current patch.  This is only meaningful when
	restarting an aborted patch.

-r::
--resolved::
	After a patch failure (e.g. attempting to apply
	conflicting patch), the user has applied it by hand and
	the index file stores the result of the application.
	Make a commit using the authorship and commit log
	extracted from the e-mail message and the current index
	file, and continue.

--resolvemsg=<msg>::
	When a patch failure occurs, <msg> will be printed
	to the screen before exiting.  This overrides the
	standard message informing you to use `--resolved`
	or `--skip` to handle the failure.  This is solely
	for internal use between 'git-rebase' and 'git-am'.

--abort::
	Restore the original branch and abort the patching operation.

DISCUSSION
----------

The commit author name is taken from the "From: " line of the
message, and commit author time is taken from the "Date: " line
of the message.  The "Subject: " line is used as the title of
the commit, after stripping common prefix "[PATCH <anything>]".
It is supposed to describe what the commit is about concisely as
a one line text.

The body of the message (iow, after a blank line that terminates
RFC2822 headers) can begin with "Subject: " and "From: " lines
that are different from those of the mail header, to override
the values of these fields.

The commit message is formed by the title taken from the
"Subject: ", a blank line and the body of the message up to
where the patch begins.  Excess whitespaces at the end of the
lines are automatically stripped.

The patch is expected to be inline, directly following the
message.  Any line that is of form:

* three-dashes and end-of-line, or
* a line that begins with "diff -", or
* a line that begins with "Index: "

is taken as the beginning of a patch, and the commit log message
is terminated before the first occurrence of such a line.

When initially invoking it, you give it names of the mailboxes
to crunch.  Upon seeing the first patch that does not apply, it
aborts in the middle,.  You can recover from this in one of two ways:

. skip the current patch by re-running the command with '--skip'
  option.

. hand resolve the conflict in the working directory, and update
  the index file to bring it in a state that the patch should
  have produced.  Then run the command with '--resolved' option.

The command refuses to process new mailboxes while `.git/rebase-apply`
directory exists, so if you decide to start over from scratch,
run `rm -f -r .git/rebase-apply` before running the command with mailbox
names.

Before any patches are applied, ORIG_HEAD is set to the tip of the
current branch.  This is useful if you have problems with multiple
commits, like running 'git am' on the wrong branch or an error in the
commits that is more easily fixed by changing the mailbox (e.g.
errors in the "From:" lines).


SEE ALSO
--------
linkgit:git-apply[1].


Author
------
Written by Junio C Hamano <gitster@pobox.com>

Documentation
--------------
Documentation by Petr Baudis, Junio C Hamano and the git-list <git@vger.kernel.org>.

GIT
---
Part of the linkgit:git[1] suite
