1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.1//EN"
2 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3 <html xmlns=
"http://www.w3.org/1999/xhtml" xml:
lang=
"en">
5 <meta http-equiv=
"Content-Type" content=
"text/html; charset=UTF-8" />
6 <meta name=
"generator" content=
"AsciiDoc 8.4.5" />
7 <title>git-format-patch(
1)
</title>
8 <style type=
"text/css">
10 p
, li
, dt
, dd
, div
, pre
, h1
, h2
, h3
, h4
, h5
, h6
{
12 border: 1px solid red;
17 margin: 1em 5% 1em 5%;
22 text-decoration: underline
;
42 h1
, h2
, h3
, h4
, h5
, h6
{
44 font-family: sans-serif
;
51 border-bottom: 2px solid silver
;
69 border: 1px solid silver
;
88 font-family: sans-serif
;
94 span#revnumber
, span#revdate
, span#revremark
{
95 font-family: sans-serif
;
99 font-family: sans-serif
;
101 border-top: 2px solid silver
;
107 padding-bottom: 0.5em;
111 padding-bottom: 0.5em;
116 margin-bottom: 1.5em;
118 div
.tableblock
, div
.imageblock
, div
.exampleblock
, div
.verseblock
,
119 div
.quoteblock
, div
.literalblock
, div
.listingblock
, div
.sidebarblock
,
120 div
.admonitionblock
{
122 margin-bottom: 1.5em;
124 div
.admonitionblock
{
126 margin-bottom: 2.5em;
129 div
.content
{ /* Block element content. */
133 /* Block element titles. */
134 div
.title
, caption
.title
{
136 font-family: sans-serif
;
140 margin-bottom: 0.5em;
146 td div
.title:first-child
{
149 div
.content div
.title:first-child
{
152 div
.content
+ div
.title
{
156 div
.sidebarblock
> div
.content
{
158 border: 1px solid silver
;
162 div
.listingblock
> div
.content
{
163 border: 1px solid silver
;
172 div
.quoteblock
> div
.attribution
{
181 div
.verseblock
> div
.content
{
184 div
.verseblock
> div
.attribution
{
188 /* DEPRECATED: Pre version 8.2.7 verse style literal block. */
189 div
.verseblock
+ div
.attribution
{
193 div
.admonitionblock
.icon
{
197 text-decoration: underline
;
199 padding-right: 0.5em;
201 div
.admonitionblock td
.content
{
203 border-left: 2px solid silver
;
206 div
.exampleblock
> div
.content
{
207 border-left: 2px solid silver
;
211 div
.imageblock div
.content
{ padding-left: 0; }
212 span
.image img
{ border-style: none
; }
213 a
.image:visited
{ color: white
; }
217 margin-bottom: 0.8em;
230 list-style-position: outside
;
233 list-style-type: decimal
;
236 list-style-type: lower-alpha
;
239 list-style-type: upper-alpha
;
242 list-style-type: lower-roman
;
245 list-style-type: upper-roman
;
248 div
.compact ul
, div
.compact ol
,
249 div
.compact p
, div
.compact p
,
250 div
.compact div
, div
.compact div
{
252 margin-bottom: 0.1em;
255 div
.tableblock
> table
{
256 border: 3px solid
#527bbd;
259 font-family: sans-serif
;
271 /* Because the table frame attribute is overriden by CSS in most browsers. */
272 div
.tableblock
> table
[frame
="void"] {
275 div
.tableblock
> table
[frame
="hsides"] {
276 border-left-style: none
;
277 border-right-style: none
;
279 div
.tableblock
> table
[frame
="vsides"] {
280 border-top-style: none
;
281 border-bottom-style: none
;
287 margin-bottom: 0.8em;
290 padding-bottom: 15px;
292 dt
.hdlist1
.strong
, td
.hdlist1
.strong
{
298 padding-right: 0.8em;
304 div
.hdlist
.compact tr
{
314 div#footer-badges
{ display: none
; }
319 font-family: sans-serif
;
323 margin-bottom: 0.1em;
326 div
.toclevel1
, div
.toclevel2
, div
.toclevel3
, div
.toclevel4
{
342 /* Overrides for manpage documents */
345 padding-bottom: 0.5em;
346 border-top: 2px solid silver
;
347 border-bottom: 2px solid silver
;
357 div#toc
{ display: none
; }
360 /* Workarounds for IE6's broken and incomplete CSS2. */
362 div
.sidebar-content
{
364 border: 1px solid silver
;
367 div
.sidebar-title
, div
.image-title
{
369 font-family: sans-serif
;
372 margin-bottom: 0.5em;
375 div
.listingblock div
.content
{
376 border: 1px solid silver
;
381 div
.quoteblock-attribution
{
386 div
.verseblock-content
{
389 div
.verseblock-attribution
{
394 div
.exampleblock-content
{
395 border-left: 2px solid silver
;
399 /* IE6 sets dynamically generated links as visited. */
400 div#toc
a:visited
{ color: blue
; }
406 git-format-patch(
1) Manual Page
409 <div class=
"sectionbody">
410 <p>git-format-patch -
411 Prepare patches for e-mail submission
415 <h2 id=
"_synopsis">SYNOPSIS
</h2>
416 <div class=
"sectionbody">
417 <div class=
"verseblock">
418 <div class=
"verseblock-content"><em>git format-patch
</em> [-k] [(-o|--output-directory)
<dir
> | --stdout]
419 [--no-thread | --thread[=
<style
>]]
420 [(--attach|--inline)[=
<boundary
>] | --no-attach]
422 [--signature=
<signature
> | --no-signature]
423 [-n | --numbered | -N | --no-numbered]
424 [--start-number
<n
>] [--numbered-files]
425 [--in-reply-to=Message-Id] [--suffix=.
<sfx
>]
426 [--ignore-if-in-upstream]
427 [--subject-prefix=Subject-Prefix]
428 [--to=
<email
>] [--cc=
<email
>]
430 [
<common diff options
>]
431 [
<since
> |
<revision range
> ]
</div>
432 <div class=
"verseblock-attribution">
435 <h2 id=
"_description">DESCRIPTION
</h2>
436 <div class=
"sectionbody">
437 <div class=
"paragraph"><p>Prepare each commit with its patch in
438 one file per commit, formatted to resemble UNIX mailbox format.
439 The output of this command is convenient for e-mail submission or
440 for use with
<em>git am
</em>.
</p></div>
441 <div class=
"paragraph"><p>There are two ways to specify which commits to operate on.
</p></div>
442 <div class=
"olist arabic"><ol class=
"arabic">
445 A single commit,
<since
>, specifies that the commits leading
446 to the tip of the current branch that are not in the history
447 that leads to the
<since
> to be output.
452 Generic
<revision range
> expression (see
"SPECIFYING
453 REVISIONS" section in
<a href=
"gitrevisions.html">gitrevisions(
7)
</a>) means the
454 commits in the specified range.
458 <div class=
"paragraph"><p>The first rule takes precedence in the case of a single
<commit
>. To
459 apply the second rule, i.e., format everything since the beginning of
460 history up until
<commit
>, use the
<em>--root
</em> option:
<tt>git format-patch
461 --root
<commit
></tt>. If you want to format only
<commit
> itself, you
462 can do this with
<tt>git format-patch -
1 <commit
></tt>.
</p></div>
463 <div class=
"paragraph"><p>By default, each output file is numbered sequentially from
1, and uses the
464 first line of the commit message (massaged for pathname safety) as
465 the filename. With the
<tt>--numbered-files
</tt> option, the output file names
466 will only be numbers, without the first line of the commit appended.
467 The names of the output files are printed to standard
468 output, unless the
<tt>--stdout
</tt> option is specified.
</p></div>
469 <div class=
"paragraph"><p>If
<tt>-o
</tt> is specified, output files are created in
<dir
>. Otherwise
470 they are created in the current working directory.
</p></div>
471 <div class=
"paragraph"><p>By default, the subject of a single patch is
"[PATCH] First Line" and
472 the subject when multiple patches are output is
"[PATCH n/m] First
473 Line". To force
1/
1 to be added for a single patch, use
<tt>-n
</tt>. To omit
474 patch numbers from the subject, use
<tt>-N
</tt>.
</p></div>
475 <div class=
"paragraph"><p>If given
<tt>--thread
</tt>,
<tt>git-format-patch
</tt> will generate
<tt>In-Reply-To
</tt> and
476 <tt>References
</tt> headers to make the second and subsequent patch mails appear
477 as replies to the first mail; this also generates a
<tt>Message-Id
</tt> header to
480 <h2 id=
"_options">OPTIONS
</h2>
481 <div class=
"sectionbody">
482 <div class=
"dlist"><dl>
491 Generate plain patches without any diffstats.
502 Generate diffs with
<n
> lines of context instead of
511 Generate a diff using the
"patience diff" algorithm.
515 --stat[=
<width
>[,
<name-width
>]]
519 Generate a diffstat. You can override the default
520 output width for
80-column terminal by
<tt>--stat=
<width
></tt>.
521 The width of the filename part can be controlled by
522 giving another width to it separated by a comma.
530 Similar to
<tt>--stat
</tt>, but shows number of added and
531 deleted lines in decimal notation and pathname without
532 abbreviation, to make it more machine friendly. For
533 binary files, outputs two
<tt>-
</tt> instead of saying
542 Output only the last line of the
<tt>--stat
</tt> format containing total
543 number of modified files, as well as number of added and deleted
548 --dirstat[=
<limit
>]
552 Output the distribution of relative amount of changes (number of lines added or
553 removed) for each sub-directory. Directories with changes below
554 a cut-off percent (
3% by default) are not shown. The cut-off percent
555 can be set with
<tt>--dirstat=
<limit
></tt>. Changes in a child directory are not
556 counted for the parent directory, unless
<tt>--cumulative
</tt> is used.
560 --dirstat-by-file[=
<limit
>]
564 Same as
<tt>--dirstat
</tt>, but counts changed files instead of lines.
572 Output a condensed summary of extended header information
573 such as creations, renames and mode changes.
581 Turn off rename detection, even when the configuration
582 file gives the default to do so.
590 Instead of the first handful of characters, show the full
591 pre- and post-image blob object names on the
"index"
592 line when generating patch format output.
600 In addition to
<tt>--full-index
</tt>, output a binary diff that
601 can be applied with
<tt>git-apply
</tt>.
609 Instead of showing the full
40-byte hexadecimal object
610 name in diff-raw format output and diff-tree header
611 lines, show only a partial prefix. This is
612 independent of the
<tt>--full-index
</tt> option above, which controls
613 the diff-patch output format. Non default number of
614 digits can be specified with
<tt>--abbrev=
<n
></tt>.
618 -B[
<n
>][/
<m
>]
621 --break-rewrites[=[
<n
>][/
<m
>]]
625 Break complete rewrite changes into pairs of delete and
626 create. This serves two purposes:
628 <div class=
"paragraph"><p>It affects the way a change that amounts to a total rewrite of a file
629 not as a series of deletion and insertion mixed together with a very
630 few lines that happen to match textually as the context, but as a
631 single deletion of everything old followed by a single insertion of
632 everything new, and the number
<tt>m
</tt> controls this aspect of the -B
633 option (defaults to
60%).
<tt>-B/
70%
</tt> specifies that less than
30% of the
634 original should remain in the result for git to consider it a total
635 rewrite (i.e. otherwise the resulting patch will be a series of
636 deletion and insertion mixed together with context lines).
</p></div>
637 <div class=
"paragraph"><p>When used with -M, a totally-rewritten file is also considered as the
638 source of a rename (usually -M only considers a file that disappeared
639 as the source of a rename), and the number
<tt>n
</tt> controls this aspect of
640 the -B option (defaults to
50%).
<tt>-B20%
</tt> specifies that a change with
641 addition and deletion compared to
20% or more of the file
’s size are
642 eligible for being picked up as a possible source of a rename to
643 another file.
</p></div>
649 --find-renames[=
<n
>]
654 If
<tt>n
</tt> is specified, it is a is a threshold on the similarity
655 index (i.e. amount of addition/deletions compared to the
656 file
’s size). For example,
<tt>-M90%
</tt> means git should consider a
657 delete/add pair to be a rename if more than
90% of the file
658 hasn
’t changed.
665 --find-copies[=
<n
>]
669 Detect copies as well as renames. See also
<tt>--find-copies-harder
</tt>.
670 If
<tt>n
</tt> is specified, it has the same meaning as for
<tt>-M
<n
></tt>.
678 For performance reasons, by default,
<tt>-C
</tt> option finds copies only
679 if the original file of the copy was modified in the same
680 changeset. This flag makes the command
681 inspect unmodified files as candidates for the source of
682 copy. This is a very expensive operation for large
683 projects, so use it with caution. Giving more than one
684 <tt>-C
</tt> option has the same effect.
692 The
<tt>-M
</tt> and
<tt>-C
</tt> options require O(n^
2) processing time where n
693 is the number of potential rename/copy targets. This
694 option prevents rename/copy detection from running if
695 the number of rename/copy targets exceeds the specified
704 Output the patch in the order specified in the
705 <orderfile
>, which has one shell glob pattern per line.
716 Treat all files as text.
720 --ignore-space-at-eol
724 Ignore changes in whitespace at EOL.
731 --ignore-space-change
735 Ignore changes in amount of whitespace. This ignores whitespace
736 at line end, and considers all other sequences of one or
737 more whitespace characters to be equivalent.
748 Ignore whitespace when comparing lines. This ignores
749 differences even if one line has whitespace where the other
754 --inter-hunk-context=
<lines
>
758 Show the context between diff hunks, up to the specified number
759 of lines, thereby fusing hunks that are close to each other.
767 Allow an external diff helper to be executed. If you set an
768 external diff driver with
<a href=
"gitattributes.html">gitattributes(
5)
</a>, you need
769 to use this option with
<a href=
"git-log.html">git-log(
1)
</a> and friends.
777 Disallow external diff drivers.
781 --ignore-submodules[=
<when
>]
785 Ignore changes to submodules in the diff generation.
<when
> can be
786 either
"none",
"untracked",
"dirty" or
"all", which is the default
787 Using
"none" will consider the submodule modified when it either contains
788 untracked or modified files or its HEAD differs from the commit recorded
789 in the superproject and can be used to override any settings of the
790 <em>ignore
</em> option in
<a href=
"git-config.html">git-config(
1)
</a> or
<a href=
"gitmodules.html">gitmodules(
5)
</a>. When
791 "untracked" is used submodules are not considered dirty when they only
792 contain untracked content (but they are still scanned for modified
793 content). Using
"dirty" ignores all changes to the work tree of submodules,
794 only changes to the commits stored in the superproject are shown (this was
795 the behavior until
1.7.0). Using
"all" hides all changes to submodules.
799 --src-prefix=
<prefix
>
803 Show the given source prefix instead of
"a/".
807 --dst-prefix=
<prefix
>
811 Show the given destination prefix instead of
"b/".
819 Do not show any source or destination prefix.
823 <div class=
"paragraph"><p>For more detailed explanation on these common options, see also
824 <a href=
"gitdiffcore.html">gitdiffcore(
7)
</a>.
</p></div>
825 <div class=
"dlist"><dl>
831 Prepare patches from the topmost
<n
> commits.
838 --output-directory
<dir
>
842 Use
<dir
> to store the resulting files, instead of the
843 current working directory.
854 Name output in
<em>[PATCH n/m]
</em> format, even with a single patch.
865 Name output in
<em>[PATCH]
</em> format.
869 --start-number
<n
>
873 Start numbering the patches at
<n
> instead of
1.
881 Output file names will be a simple number sequence
882 without the default first line of the commit appended.
893 Do not strip/add
<em>[PATCH]
</em> from the first line of the
905 Add
<tt>Signed-off-by:
</tt> line to the commit message, using
906 the committer identity of yourself.
914 Print all commits to the standard output in mbox format,
915 instead of creating a file for each one.
919 --attach[=
<boundary
>]
923 Create multipart/mixed attachment, the first part of
924 which is the commit message and the patch itself in the
925 second part, with
<tt>Content-Disposition: attachment
</tt>.
933 Disable the creation of an attachment, overriding the
934 configuration setting.
938 --inline[=
<boundary
>]
942 Create multipart/mixed attachment, the first part of
943 which is the commit message and the patch itself in the
944 second part, with
<tt>Content-Disposition: inline
</tt>.
948 --thread[=
<style
>]
955 Controls addition of
<tt>In-Reply-To
</tt> and
<tt>References
</tt> headers to
956 make the second and subsequent mails appear as replies to the
957 first. Also controls generation of the
<tt>Message-Id
</tt> header to
960 <div class=
"paragraph"><p>The optional
<style
> argument can be either
<tt>shallow
</tt> or
<tt>deep
</tt>.
961 <em>shallow
</em> threading makes every mail a reply to the head of the
962 series, where the head is chosen from the cover letter, the
963 <tt>--in-reply-to
</tt>, and the first patch mail, in this order.
<em>deep
</em>
964 threading makes every mail a reply to the previous one.
</p></div>
965 <div class=
"paragraph"><p>The default is
<tt>--no-thread
</tt>, unless the
<em>format.thread
</em> configuration
966 is set. If
<tt>--thread
</tt> is specified without a style, it defaults to the
967 style specified by
<em>format.thread
</em> if any, or else
<tt>shallow
</tt>.
</p></div>
968 <div class=
"paragraph"><p>Beware that the default for
<em>git send-email
</em> is to thread emails
969 itself. If you want
<tt>git format-patch
</tt> to take care of threading, you
970 will want to ensure that threading is disabled for
<tt>git send-email
</tt>.
</p></div>
973 --in-reply-to=Message-Id
977 Make the first mail (or all the mails with
<tt>--no-thread
</tt>) appear as a
978 reply to the given Message-Id, which avoids breaking threads to
979 provide a new patch series.
983 --ignore-if-in-upstream
987 Do not include a patch that matches a commit in
988 <until
>..
<since
>. This will examine all patches reachable
989 from
<since
> but not from
<until
> and compare them with the
990 patches being generated, and any patch that matches is
995 --subject-prefix=
<Subject-Prefix
>
999 Instead of the standard
<em>[PATCH]
</em> prefix in the subject
1000 line, instead use
<em>[
<Subject-Prefix
>]
</em>. This
1001 allows for useful naming of a patch series, and can be
1002 combined with the
<tt>--numbered
</tt> option.
1005 <dt class=
"hdlist1">
1010 Add a
<tt>To:
</tt> header to the email headers. This is in addition
1011 to any configured headers, and may be used multiple times.
1014 <dt class=
"hdlist1">
1019 Add a
<tt>Cc:
</tt> header to the email headers. This is in addition
1020 to any configured headers, and may be used multiple times.
1023 <dt class=
"hdlist1">
1024 --add-header=
<header
>
1028 Add an arbitrary header to the email headers. This is in addition
1029 to any configured headers, and may be used multiple times.
1030 For example,
<tt>--add-header=
"Organization: git-foo"</tt>
1033 <dt class=
"hdlist1">
1038 In addition to the patches, generate a cover letter file
1039 containing the shortlog and the overall diffstat. You can
1040 fill in a description in the file before sending it out.
1043 <dt class=
"hdlist1">
1044 --[no]-signature=
<signature
>
1048 Add a signature to each message produced. Per RFC
3676 the signature
1049 is separated from the body by a line with '-- ' on it. If the
1050 signature option is omitted the signature defaults to the git version
1054 <dt class=
"hdlist1">
1055 --suffix=.
<sfx
>
1059 Instead of using
<tt>.patch
</tt> as the suffix for generated
1060 filenames, use specified suffix. A common alternative is
1061 <tt>--suffix=.txt
</tt>. Leaving this empty will remove the
<tt>.patch
</tt>
1064 <div class=
"paragraph"><p>Note that the leading character does not have to be a dot; for example,
1065 you can use
<tt>--suffix=-patch
</tt> to get
<tt>0001-description-of-my-change-patch
</tt>.
</p></div>
1067 <dt class=
"hdlist1">
1072 Do not output contents of changes in binary files, instead
1073 display a notice that those files changed. Patches generated
1074 using this option cannot be applied properly, but they are
1075 still useful for code review.
1078 <dt class=
"hdlist1">
1083 Treat the revision argument as a
<revision range
>, even if it
1084 is just a single commit (that would normally be treated as a
1085 <since
>). Note that root commits included in the specified
1086 range are always formatted as creation patches, independently
1092 <h2 id=
"_configuration">CONFIGURATION
</h2>
1093 <div class=
"sectionbody">
1094 <div class=
"paragraph"><p>You can specify extra mail header lines to be added to each message,
1095 defaults for the subject prefix and file suffix, number patches when
1096 outputting more than one patch, add
"To" or
"Cc:" headers, configure
1097 attachments, and sign off patches with configuration variables.
</p></div>
1098 <div class=
"listingblock">
1099 <div class=
"content">
1101 headers =
"Organization: git-foo\n"
1102 subjectprefix = CHANGE
1107 attach [ = mime-boundary-string ]
1108 signoff = true
</tt></pre>
1111 <h2 id=
"_examples">EXAMPLES
</h2>
1112 <div class=
"sectionbody">
1113 <div class=
"ulist"><ul>
1116 Extract commits between revisions R1 and R2, and apply them on top of
1117 the current branch using
<em>git am
</em> to cherry-pick them:
1119 <div class=
"listingblock">
1120 <div class=
"content">
1121 <pre><tt>$ git format-patch -k --stdout R1..R2 | git am -
3 -k
</tt></pre>
1126 Extract all commits which are in the current branch but not in the
1129 <div class=
"listingblock">
1130 <div class=
"content">
1131 <pre><tt>$ git format-patch origin
</tt></pre>
1133 <div class=
"paragraph"><p>For each commit a separate file is created in the current directory.
</p></div>
1137 Extract all commits that lead to
<em>origin
</em> since the inception of the
1140 <div class=
"listingblock">
1141 <div class=
"content">
1142 <pre><tt>$ git format-patch --root origin
</tt></pre>
1147 The same as the previous one:
1149 <div class=
"listingblock">
1150 <div class=
"content">
1151 <pre><tt>$ git format-patch -M -B origin
</tt></pre>
1153 <div class=
"paragraph"><p>Additionally, it detects and handles renames and complete rewrites
1154 intelligently to produce a renaming patch. A renaming patch reduces
1155 the amount of text output, and generally makes it easier to review.
1156 Note that non-git
"patch" programs won
’t understand renaming patches, so
1157 use it only when you know the recipient uses git to apply your patch.
</p></div>
1161 Extract three topmost commits from the current branch and format them
1162 as e-mailable patches:
1164 <div class=
"listingblock">
1165 <div class=
"content">
1166 <pre><tt>$ git format-patch -
3</tt></pre>
1171 <h2 id=
"_see_also">SEE ALSO
</h2>
1172 <div class=
"sectionbody">
1173 <div class=
"paragraph"><p><a href=
"git-am.html">git-am(
1)
</a>,
<a href=
"git-send-email.html">git-send-email(
1)
</a></p></div>
1175 <h2 id=
"_git">GIT
</h2>
1176 <div class=
"sectionbody">
1177 <div class=
"paragraph"><p>Part of the
<a href=
"git.html">git(
1)
</a> suite
</p></div>
1180 <div id=
"footer-text">
1181 Last updated
2011-
03-
15 23:
30:
13 UTC