Documentation / git-am.txton commit Merge branch 'js/checkout-untracked-symlink' into maint (302de7a)
   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] [--keep-cr | --no-keep-cr] [--utf8 | --no-utf8]
  13         [--3way] [--interactive] [--committer-date-is-author-date]
  14         [--ignore-date] [--ignore-space-change | --ignore-whitespace]
  15         [--whitespace=<option>] [-C<n>] [-p<n>] [--directory=<dir>]
  16         [--reject] [-q | --quiet] [--scissors | --no-scissors]
  17         [(<mbox> | <Maildir>)...]
  18'git am' (--continue | --skip | --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--keep-cr::
  43--no-keep-cr::
  44        With `--keep-cr`, call 'git mailsplit' (see linkgit:git-mailsplit[1])
  45        with the same option, to prevent it from stripping CR at the end of
  46        lines. `am.keepcr` configuration variable can be used to specify the
  47        default behaviour.  `--no-keep-cr` is useful to override `am.keepcr`.
  48
  49-c::
  50--scissors::
  51        Remove everything in body before a scissors line (see
  52        linkgit:git-mailinfo[1]).
  53
  54--no-scissors::
  55        Ignore scissors lines (see linkgit:git-mailinfo[1]).
  56
  57-q::
  58--quiet::
  59        Be quiet. Only print error messages.
  60
  61-u::
  62--utf8::
  63        Pass `-u` flag to 'git mailinfo' (see linkgit:git-mailinfo[1]).
  64        The proposed commit log message taken from the e-mail
  65        is re-coded into UTF-8 encoding (configuration variable
  66        `i18n.commitencoding` can be used to specify project's
  67        preferred encoding if it is not UTF-8).
  68+
  69This was optional in prior versions of git, but now it is the
  70default.   You can use `--no-utf8` to override this.
  71
  72--no-utf8::
  73        Pass `-n` flag to 'git mailinfo' (see
  74        linkgit:git-mailinfo[1]).
  75
  76-3::
  77--3way::
  78        When the patch does not apply cleanly, fall back on
  79        3-way merge if the patch records the identity of blobs
  80        it is supposed to apply to and we have those blobs
  81        available locally.
  82
  83--ignore-date::
  84--ignore-space-change::
  85--ignore-whitespace::
  86--whitespace=<option>::
  87-C<n>::
  88-p<n>::
  89--directory=<dir>::
  90--reject::
  91        These flags are passed to the 'git apply' (see linkgit:git-apply[1])
  92        program that applies
  93        the patch.
  94
  95-i::
  96--interactive::
  97        Run interactively.
  98
  99--committer-date-is-author-date::
 100        By default the command records the date from the e-mail
 101        message as the commit author date, and uses the time of
 102        commit creation as the committer date. This allows the
 103        user to lie about the committer date by using the same
 104        value as the author date.
 105
 106--ignore-date::
 107        By default the command records the date from the e-mail
 108        message as the commit author date, and uses the time of
 109        commit creation as the committer date. This allows the
 110        user to lie about the author date by using the same
 111        value as the committer date.
 112
 113--skip::
 114        Skip the current patch.  This is only meaningful when
 115        restarting an aborted patch.
 116
 117--continue::
 118-r::
 119--resolved::
 120        After a patch failure (e.g. attempting to apply
 121        conflicting patch), the user has applied it by hand and
 122        the index file stores the result of the application.
 123        Make a commit using the authorship and commit log
 124        extracted from the e-mail message and the current index
 125        file, and continue.
 126
 127--resolvemsg=<msg>::
 128        When a patch failure occurs, <msg> will be printed
 129        to the screen before exiting.  This overrides the
 130        standard message informing you to use `--resolved`
 131        or `--skip` to handle the failure.  This is solely
 132        for internal use between 'git rebase' and 'git am'.
 133
 134--abort::
 135        Restore the original branch and abort the patching operation.
 136
 137DISCUSSION
 138----------
 139
 140The commit author name is taken from the "From: " line of the
 141message, and commit author date is taken from the "Date: " line
 142of the message.  The "Subject: " line is used as the title of
 143the commit, after stripping common prefix "[PATCH <anything>]".
 144The "Subject: " line is supposed to concisely describe what the
 145commit is about in one line of text.
 146
 147"From: " and "Subject: " lines starting the body override the respective
 148commit author name and title values taken from the headers.
 149
 150The commit message is formed by the title taken from the
 151"Subject: ", a blank line and the body of the message up to
 152where the patch begins.  Excess whitespace at the end of each
 153line is automatically stripped.
 154
 155The patch is expected to be inline, directly following the
 156message.  Any line that is of the form:
 157
 158* three-dashes and end-of-line, or
 159* a line that begins with "diff -", or
 160* a line that begins with "Index: "
 161
 162is taken as the beginning of a patch, and the commit log message
 163is terminated before the first occurrence of such a line.
 164
 165When initially invoking `git am`, you give it the names of the mailboxes
 166to process.  Upon seeing the first patch that does not apply, it
 167aborts in the middle.  You can recover from this in one of two ways:
 168
 169. skip the current patch by re-running the command with the '--skip'
 170  option.
 171
 172. hand resolve the conflict in the working directory, and update
 173  the index file to bring it into a state that the patch should
 174  have produced.  Then run the command with the '--resolved' option.
 175
 176The command refuses to process new mailboxes until the current
 177operation is finished, so if you decide to start over from scratch,
 178run `git am --abort` before running the command with mailbox
 179names.
 180
 181Before any patches are applied, ORIG_HEAD is set to the tip of the
 182current branch.  This is useful if you have problems with multiple
 183commits, like running 'git am' on the wrong branch or an error in the
 184commits that is more easily fixed by changing the mailbox (e.g.
 185errors in the "From:" lines).
 186
 187
 188SEE ALSO
 189--------
 190linkgit:git-apply[1].
 191
 192
 193Author
 194------
 195Written by Junio C Hamano <gitster@pobox.com>
 196
 197Documentation
 198--------------
 199Documentation by Petr Baudis, Junio C Hamano and the git-list <git@vger.kernel.org>.
 200
 201GIT
 202---
 203Part of the linkgit:git[1] suite