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

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


SYNOPSIS
--------
[verse]
'git-am' [--signoff] [--dotest=<dir>] [--utf8 | --no-utf8] [--binary] [--3way]
         [--interactive] [--whitespace=<option>] [-C<n>] [-p<n>]
	 <mbox>...
'git-am' [--skip | --resolved]

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

OPTIONS
-------
<mbox>...::
	The list of mailbox files to read patches from. If you do not
	supply this argument, reads from the standard input.

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

--dotest=<dir>::
	Instead of `.dotest` directory, use <dir> as a working
	area to store extracted patches.

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

--utf8::
	Pass `-u` flag to `git-mailinfo` (see gitlink:git-mailinfo[1]).
	The proposed commit log message taken from the e-mail
	are 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::
	Do not pass `-u` flag to `git-mailinfo` (see
	gitlink:git-mailinfo[1]).

--binary::
	Pass `--allow-binary-replacement` flag to `git-apply`
	(see gitlink:git-apply[1]).

--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
	locally.

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

--whitespace=<option>::
	This flag is passed to the `git-apply` program that applies
	the patch.

-C<n>, -p<n>::
	These flag are passed to the `git-apply` program that applies
	the patch.

--interactive::
	Run interactively, just like git-applymbox.

--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.

DISCUSSION
----------

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, just like 'git-applymbox' does.  You can
recover from this in one of two ways:

. skip the current one 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 `.dotest`
directory exists, so if you decide to start over from scratch,
run `rm -f .dotest` before running the command with mailbox
names.


SEE ALSO
--------
gitlink:git-applymbox[1], gitlink:git-applypatch[1], gitlink:git-apply[1].


Author
------
Written by Junio C Hamano <junkio@cox.net>

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

GIT
---
Part of the gitlink:git[7] suite

