Documentation / git-format-patch.txton commit Merge branch 'rj/maint-1.6.0-svn-parse-fix' into maint (54e0e6e)
   1git-format-patch(1)
   2===================
   3
   4NAME
   5----
   6git-format-patch - Prepare patches for e-mail submission
   7
   8
   9SYNOPSIS
  10--------
  11[verse]
  12'git format-patch' [-k] [-o <dir> | --stdout] [--thread]
  13                   [--attach[=<boundary>] | --inline[=<boundary>]]
  14                   [-s | --signoff] [<common diff options>]
  15                   [-n | --numbered | -N | --no-numbered]
  16                   [--start-number <n>] [--numbered-files]
  17                   [--in-reply-to=Message-Id] [--suffix=.<sfx>]
  18                   [--ignore-if-in-upstream]
  19                   [--subject-prefix=Subject-Prefix]
  20                   [--cc=<email>]
  21                   [--cover-letter]
  22                   [ <since> | <revision range> ]
  23
  24DESCRIPTION
  25-----------
  26
  27Prepare each commit with its patch in
  28one file per commit, formatted to resemble UNIX mailbox format.
  29The output of this command is convenient for e-mail submission or
  30for use with 'git-am'.
  31
  32There are two ways to specify which commits to operate on.
  33
  341. A single commit, <since>, specifies that the commits leading
  35   to the tip of the current branch that are not in the history
  36   that leads to the <since> to be output.
  37
  382. Generic <revision range> expression (see "SPECIFYING
  39   REVISIONS" section in linkgit:git-rev-parse[1]) means the
  40   commits in the specified range.
  41
  42The first rule takes precedence in the case of a single <commit>.  To
  43apply the second rule, i.e., format everything since the beginning of
  44history up until <commit>, use the '\--root' option: "git format-patch
  45\--root <commit>".  If you want to format only <commit> itself, you
  46can do this with "git format-patch -1 <commit>".
  47
  48By default, each output file is numbered sequentially from 1, and uses the
  49first line of the commit message (massaged for pathname safety) as
  50the filename. With the --numbered-files option, the output file names
  51will only be numbers, without the first line of the commit appended.
  52The names of the output files are printed to standard
  53output, unless the --stdout option is specified.
  54
  55If -o is specified, output files are created in <dir>.  Otherwise
  56they are created in the current working directory.
  57
  58By default, the subject of a single patch is "[PATCH] First Line" and
  59the subject when multiple patches are output is "[PATCH n/m] First
  60Line". To force 1/1 to be added for a single patch, use -n.  To omit
  61patch numbers from the subject, use -N
  62
  63If given --thread, 'git-format-patch' will generate In-Reply-To and
  64References headers to make the second and subsequent patch mails appear
  65as replies to the first mail; this also generates a Message-Id header to
  66reference.
  67
  68OPTIONS
  69-------
  70:git-format-patch: 1
  71include::diff-options.txt[]
  72
  73-<n>::
  74        Limits the number of patches to prepare.
  75
  76-o <dir>::
  77--output-directory <dir>::
  78        Use <dir> to store the resulting files, instead of the
  79        current working directory.
  80
  81-n::
  82--numbered::
  83        Name output in '[PATCH n/m]' format, even with a single patch.
  84
  85-N::
  86--no-numbered::
  87        Name output in '[PATCH]' format.
  88
  89--start-number <n>::
  90        Start numbering the patches at <n> instead of 1.
  91
  92--numbered-files::
  93        Output file names will be a simple number sequence
  94        without the default first line of the commit appended.
  95
  96-k::
  97--keep-subject::
  98        Do not strip/add '[PATCH]' from the first line of the
  99        commit log message.
 100
 101-s::
 102--signoff::
 103        Add `Signed-off-by:` line to the commit message, using
 104        the committer identity of yourself.
 105
 106--stdout::
 107        Print all commits to the standard output in mbox format,
 108        instead of creating a file for each one.
 109
 110--attach[=<boundary>]::
 111        Create multipart/mixed attachment, the first part of
 112        which is the commit message and the patch itself in the
 113        second part, with "Content-Disposition: attachment".
 114
 115--inline[=<boundary>]::
 116        Create multipart/mixed attachment, the first part of
 117        which is the commit message and the patch itself in the
 118        second part, with "Content-Disposition: inline".
 119
 120--thread::
 121        Add In-Reply-To and References headers to make the second and
 122        subsequent mails appear as replies to the first.  Also generates
 123        the Message-Id header to reference.
 124
 125--in-reply-to=Message-Id::
 126        Make the first mail (or all the mails with --no-thread) appear as a
 127        reply to the given Message-Id, which avoids breaking threads to
 128        provide a new patch series.
 129
 130--ignore-if-in-upstream::
 131        Do not include a patch that matches a commit in
 132        <until>..<since>.  This will examine all patches reachable
 133        from <since> but not from <until> and compare them with the
 134        patches being generated, and any patch that matches is
 135        ignored.
 136
 137--subject-prefix=<Subject-Prefix>::
 138        Instead of the standard '[PATCH]' prefix in the subject
 139        line, instead use '[<Subject-Prefix>]'. This
 140        allows for useful naming of a patch series, and can be
 141        combined with the --numbered option.
 142
 143--cc=<email>::
 144        Add a "Cc:" header to the email headers. This is in addition
 145        to any configured headers, and may be used multiple times.
 146
 147--cover-letter::
 148        In addition to the patches, generate a cover letter file
 149        containing the shortlog and the overall diffstat.  You can
 150        fill in a description in the file before sending it out.
 151
 152--suffix=.<sfx>::
 153        Instead of using `.patch` as the suffix for generated
 154        filenames, use specified suffix.  A common alternative is
 155        `--suffix=.txt`.
 156+
 157Note that you would need to include the leading dot `.` if you
 158want a filename like `0001-description-of-my-change.patch`, and
 159the first letter does not have to be a dot.  Leaving it empty would
 160not add any suffix.
 161
 162--no-binary::
 163        Don't output contents of changes in binary files, just take note
 164        that they differ.  Note that this disable the patch to be properly
 165        applied.  By default the contents of changes in those files are
 166        encoded in the patch.
 167
 168--root::
 169        Treat the revision argument as a <revision range>, even if it
 170        is just a single commit (that would normally be treated as a
 171        <since>).  Note that root commits included in the specified
 172        range are always formatted as creation patches, independently
 173        of this flag.
 174
 175CONFIGURATION
 176-------------
 177You can specify extra mail header lines to be added to each message
 178in the repository configuration, new defaults for the subject prefix
 179and file suffix, and number patches when outputting more than one.
 180
 181------------
 182[format]
 183        headers = "Organization: git-foo\n"
 184        subjectprefix = CHANGE
 185        suffix = .txt
 186        numbered = auto
 187        cc = <email>
 188------------
 189
 190
 191EXAMPLES
 192--------
 193
 194* Extract commits between revisions R1 and R2, and apply them on top of
 195the current branch using 'git-am' to cherry-pick them:
 196+
 197------------
 198$ git format-patch -k --stdout R1..R2 | git am -3 -k
 199------------
 200
 201* Extract all commits which are in the current branch but not in the
 202origin branch:
 203+
 204------------
 205$ git format-patch origin
 206------------
 207+
 208For each commit a separate file is created in the current directory.
 209
 210* Extract all commits that lead to 'origin' since the inception of the
 211project:
 212+
 213------------
 214$ git format-patch --root origin
 215------------
 216
 217* The same as the previous one:
 218+
 219------------
 220$ git format-patch -M -B origin
 221------------
 222+
 223Additionally, it detects and handles renames and complete rewrites
 224intelligently to produce a renaming patch.  A renaming patch reduces
 225the amount of text output, and generally makes it easier to review it.
 226Note that the "patch" program does not understand renaming patches, so
 227use it only when you know the recipient uses git to apply your patch.
 228
 229* Extract three topmost commits from the current branch and format them
 230as e-mailable patches:
 231+
 232------------
 233$ git format-patch -3
 234------------
 235
 236SEE ALSO
 237--------
 238linkgit:git-am[1], linkgit:git-send-email[1]
 239
 240
 241Author
 242------
 243Written by Junio C Hamano <gitster@pobox.com>
 244
 245Documentation
 246--------------
 247Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
 248
 249GIT
 250---
 251Part of the linkgit:git[1] suite