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

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


SYNOPSIS
--------
[verse]
'git am' [--signoff] [--keep] [--[no-]keep-cr] [--[no-]utf8] [--[no-]verify]
	 [--[no-]3way] [--interactive] [--committer-date-is-author-date]
	 [--ignore-date] [--ignore-space-change | --ignore-whitespace]
	 [--whitespace=<action>] [-C<n>] [-p<n>] [--directory=<dir>]
	 [--exclude=<path>] [--include=<path>] [--reject] [-q | --quiet]
	 [--[no-]scissors] [-S[<keyid>]] [--patch-format=<format>]
	 [--quoted-cr=<action>]
	 [--empty=(stop|drop|keep)]
	 [(<mbox> | <Maildir>)...]
'git am' (--continue | --skip | --abort | --quit | --retry | --show-current-patch[=(diff|raw)] | --allow-empty)

DESCRIPTION
-----------
Splits mail messages in a mailbox into commit log messages,
authorship information, and patches, and applies them to the
current branch. You could think of it as a reverse operation
of linkgit:git-format-patch[1] run on a branch with a straight
history without merges.

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` trailer to the commit message (see
	linkgit:git-interpret-trailers[1]), using the committer identity
	of yourself.  See the signoff option in linkgit:git-commit[1]
	for more information.

-k::
--keep::
	Pass `-k` flag to linkgit:git-mailinfo[1].

--keep-non-patch::
	Pass `-b` flag to linkgit:git-mailinfo[1].

--keep-cr::
--no-keep-cr::
	With `--keep-cr`, call linkgit:git-mailsplit[1]
	with the same option, to prevent it from stripping CR at the end of
	lines. `am.keepcr` configuration variable can be used to specify the
	default behaviour.  `--no-keep-cr` is useful to override `am.keepcr`.

-c::
--scissors::
	Remove everything in body before a scissors line (see
	linkgit:git-mailinfo[1]). Can be activated by default using
	the `mailinfo.scissors` configuration variable.

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

--quoted-cr=<action>::
	This flag will be passed down to linkgit:git-mailinfo[1].

--empty=(drop|keep|stop)::
	How to handle an e-mail message lacking a patch:
+
--
`drop`;;
	The e-mail message will be skipped.
`keep`;;
	An empty commit will be created, with the contents of the e-mail
	message as its log.
`stop`;;
	The command will fail, stopping in the middle of the current `am`
	session. This is the default behavior.
--

-m::
--message-id::
	Pass the `-m` flag to linkgit:git-mailinfo[1], so that the
	`Message-ID` header is added as a trailer (see
	linkgit:git-interpret-trailers[1]).  The `am.messageid`
	configuration variable can be used to specify the default
	behaviour.

--no-message-id::
	Do not add the Message-ID header to the commit message.
	`no-message-id` is useful to override `am.messageid`.

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

-u::
--utf8::
	Pass `-u` flag to 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 the 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 linkgit:git-mailinfo[1].

-3::
--3way::
--no-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. `--no-3way` can be used to override
	am.threeWay configuration variable. For more information,
	see am.threeWay in linkgit:git-config[1].

include::rerere-options.adoc[]

--ignore-space-change::
--ignore-whitespace::
--whitespace=<action>::
-C<n>::
-p<n>::
--directory=<dir>::
--exclude=<path>::
--include=<path>::
--reject::
	These flags are passed to the linkgit:git-apply[1] program that
	applies the patch.
+
Valid <action> for the `--whitespace` option are:
`nowarn`, `warn`, `fix`, `error`, and `error-all`.

--patch-format::
	By default the command will try to detect the patch format
	automatically. This option allows the user to bypass the automatic
	detection and specify the patch format that the patch(es) should be
	interpreted as. Valid formats are mbox, mboxrd,
	stgit, stgit-series, and hg.

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

--verify::
-n::
--no-verify::
	Run the `pre-applypatch` and `applypatch-msg` hooks. This is the
	default. Skip these hooks with `-n` or `--no-verify`. See also
	linkgit:githooks[5].
+
Note that `post-applypatch` cannot be skipped.

--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.
+
WARNING: The history walking machinery assumes that commits have
non-decreasing commit timestamps. You should consider if you really need
to use this option. Then you should only use this option to override the
committer date when applying commits on top of a base which commit is
older (in terms of the commit date) than the oldest patch you are
applying.

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

-S[<keyid>]::
--gpg-sign[=<keyid>]::
--no-gpg-sign::
	GPG-sign commits. The `keyid` argument is optional and
	defaults to the committer identity; if specified, it must be
	stuck to the option without a space. `--no-gpg-sign` is useful to
	countermand both `commit.gpgSign` configuration variable, and
	earlier `--gpg-sign`.

--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 `--continue`
	or `--skip` to handle the failure.  This is solely
	for internal use between linkgit:git-rebase[1] and
	linkgit:git-am[1].

--abort::
	Restore the original branch and abort the patching operation.
	Revert the contents of files involved in the am operation to their
	pre-am state.

--quit::
	Abort the patching operation but keep HEAD and the index
	untouched.

--retry::
	Try to apply the last conflicting patch again. This is generally
	only useful for passing extra options to the retry attempt
	(e.g., `--3way`), since otherwise you'll just see the same
	failure again.

--show-current-patch[=(diff|raw)]::
	Show the message at which linkgit:git-am[1] has stopped due to
	conflicts.  If `raw` is specified, show the raw contents of
	the e-mail message; if `diff`, show the diff portion only.
	Defaults to `raw`.

--allow-empty::
	After a patch failure on an input e-mail message lacking a patch,
	create an empty commit with the contents of the e-mail message
	as its log message.

[[discussion]]
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: ", "Date: ", 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.
include::format-patch-end-of-commit-message.adoc[]

This means that the contents of the commit message can inadvertently
interrupt the processing (see the <<caveats,CAVEATS>> section below).

When initially invoking linkgit:git-am[1], 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 `--continue` option.

The command refuses to process new mailboxes until the current
operation is finished, so if you decide to start over from scratch,
run `git am --abort` 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 linkgit:git-am[1] 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).

[[caveats]]
CAVEATS
-------

:git-am: 1
include::format-patch-caveats.adoc[]

HOOKS
-----
This command can run `applypatch-msg`, `pre-applypatch`,
and `post-applypatch` hooks.  See linkgit:githooks[5] for more
information.

See the `--verify`/`-n`/`--no-verify` options.

CONFIGURATION
-------------

include::includes/cmd-config-section-all.adoc[]

include::config/am.adoc[]

SEE ALSO
--------
linkgit:git-apply[1],
linkgit:git-format-patch[1].

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