fast-import: add (non-)relative-marks feature
[gitweb.git] / Documentation / git-am.txt
index 5622971f6a1fe6ead3eda29a3bb80b2f08aa15f0..67ad5da9cc0e766882300e90ed114306cb3c9fa7 100644 (file)
@@ -9,11 +9,13 @@ git-am - Apply a series of patches from a mailbox
 SYNOPSIS
 --------
 [verse]
-'git-am' [--signoff] [--keep] [--utf8 | --no-utf8]
-         [--3way] [--interactive] [--binary]
-         [--whitespace=<option>] [-C<n>] [-p<n>]
-         <mbox>|<Maildir>...
-'git-am' [--skip | --resolved]
+'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' (--skip | --resolved | --abort)
 
 DESCRIPTION
 -----------
@@ -25,53 +27,61 @@ 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.
+       supply this argument, the command reads from the standard input.
+       If you supply directories, they will be treated as Maildirs.
 
 -s::
 --signoff::
-       Add `Signed-off-by:` line to the commit message, using
+       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]).
+       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]).
+       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.
+default.   You can use `--no-utf8` to override this.
 
 --no-utf8::
-       Pass `-n` flag to `git-mailinfo` (see
+       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
+       3-way merge if the patch records the identity of blobs
+       it is supposed to apply to and we have those blobs
        available locally.
 
--b::
---binary::
-       Pass `--allow-binary-replacement` flag to `git-apply`
-       (see linkgit:git-apply[1]).
-
+--ignore-date::
+--ignore-space-change::
+--ignore-whitespace::
 --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])
+--directory=<dir>::
+--reject::
+       These flags are passed to the 'git-apply' (see linkgit:git-apply[1])
        program that applies
        the patch.
 
@@ -79,6 +89,20 @@ default.   You could use `--no-utf8` to override this.
 --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.
@@ -97,30 +121,31 @@ default.   You could use `--no-utf8` to override this.
        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`.
+       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
+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>]".
-It is supposed to describe what the commit is about concisely as
-a one line text.
+The "Subject: " line is supposed to concisely describe what the
+commit is about in one line of 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.
+"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 whitespaces at the end of the
-lines are automatically stripped.
+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 form:
+message.  Any line that is of the form:
 
 * three-dashes and end-of-line, or
 * a line that begins with "diff -", or
@@ -129,22 +154,28 @@ message.  Any line that is of form:
 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:
+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 '--skip'
+. 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 in a state that the patch should
-  have produced.  Then run the command with '--resolved' option.
+  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 `.dotest`
+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 .dotest` before running the command with mailbox
+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
 --------