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] [--committer-date-is-author-date]
	 [--ignore-date] [--ignore-space-change | --ignore-whitespace]
	 [--whitespace=<option>] [-C<n>] [-p<n>] [--directory=<dir>]
	 [--reject] [-q | --quiet] [--scissors | --no-scissors]
	 [<mbox> | <Maildir>...]
'git am' (--continue | --skip | --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, the command reads from the standard input.
	If you supply directories, they will be treated as Maildirs.

-s::
--signoff::
	Add a `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]).

-c::
--scissors::
	Remove everything in body before a scissors line (see
	linkgit:git-mailinfo[1]).

---no-scissors::
	Ignore scissors lines (see linkgit:git-mailinfo[1]).

-q::
--quiet::
	Be quiet. Only print error messages.

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

--ignore-date::
--ignore-space-change::
--ignore-whitespace::
--whitespace=<option>::
-C<n>::
-p<n>::
--directory=<dir>::
--reject::
	These flags are passed to the 'git apply' (see linkgit:git-apply[1])
	program that applies
	the patch.

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

--committer-date-is-author-date::
	By default the command records the date from the e-mail
	message as the commit author date, and uses the time of
	commit creation as the committer date. This allows the
	user to lie about the committer date by using the same
	value as the author date.

--ignore-date::
	By default the command records the date from the e-mail
	message as the commit author date, and uses the time of
	commit creation as the committer date. This allows the
	user to lie about the author date by using the same
	value as the committer date.

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

--continue::
-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 date 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>]".
The "Subject: " line is supposed to concisely describe what the
commit is about in one line of text.

"From: " and "Subject: " lines starting the body override the respective
commit author name and title values taken from the headers.

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 whitespace at the end of each
line is automatically stripped.

The patch is expected to be inline, directly following the
message.  Any line that is of the 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 `git am`, you give it the names of the mailboxes
to process.  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 the '--skip'
  option.

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

The command refuses to process new mailboxes while the `.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
