git-format-patch man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

GIT-FORMAT-PATCH(1)		  Git Manual		   GIT-FORMAT-PATCH(1)

NAME
       git-format-patch - Prepare patches for e-mail submission

SYNOPSIS
       git format-patch [-k] [(-o|--output-directory) <dir> | --stdout]
			  [--no-thread | --thread[=<style>]]
			  [(--attach|--inline)[=<boundary>] | --no-attach]
			  [-s | --signoff]
			  [--signature=<signature> | --no-signature]
			  [-n | --numbered | -N | --no-numbered]
			  [--start-number <n>] [--numbered-files]
			  [--in-reply-to=Message-Id] [--suffix=.<sfx>]
			  [--ignore-if-in-upstream]
			  [--subject-prefix=Subject-Prefix]
			  [--to=<email>] [--cc=<email>]
			  [--cover-letter]
			  [<common diff options>]
			  [ <since> | <revision range> ]

DESCRIPTION
       Prepare each commit with its patch in one file per commit, formatted to
       resemble UNIX mailbox format. The output of this command is convenient
       for e-mail submission or for use with git am.

       There are two ways to specify which commits to operate on.

	1. A single commit, <since>, specifies that the commits leading to the
	   tip of the current branch that are not in the history that leads to
	   the <since> to be output.

	2. Generic <revision range> expression (see "SPECIFYING REVISIONS"
	   section in gitrevisions(7)) means the commits in the specified
	   range.

       The first rule takes precedence in the case of a single <commit>. To
       apply the second rule, i.e., format everything since the beginning of
       history up until <commit>, use the --root option: git format-patch
       --root <commit>. If you want to format only <commit> itself, you can do
       this with git format-patch -1 <commit>.

       By default, each output file is numbered sequentially from 1, and uses
       the first line of the commit message (massaged for pathname safety) as
       the filename. With the --numbered-files option, the output file names
       will only be numbers, without the first line of the commit appended.
       The names of the output files are printed to standard output, unless
       the --stdout option is specified.

       If -o is specified, output files are created in <dir>. Otherwise they
       are created in the current working directory.

       By default, the subject of a single patch is "[PATCH] First Line" and
       the subject when multiple patches are output is "[PATCH n/m] First
       Line". To force 1/1 to be added for a single patch, use -n. To omit
       patch numbers from the subject, use -N.

       If given --thread, git-format-patch will generate In-Reply-To and
       References headers to make the second and subsequent patch mails appear
       as replies to the first mail; this also generates a Message-Id header
       to reference.

OPTIONS
       -p, --no-stat
	   Generate plain patches without any diffstats.

       -U<n>, --unified=<n>
	   Generate diffs with <n> lines of context instead of the usual
	   three.

       --patience
	   Generate a diff using the "patience diff" algorithm.

       --stat[=<width>[,<name-width>]]
	   Generate a diffstat. You can override the default output width for
	   80-column terminal by --stat=<width>. The width of the filename
	   part can be controlled by giving another width to it separated by a
	   comma.

       --numstat
	   Similar to --stat, but shows number of added and deleted lines in
	   decimal notation and pathname without abbreviation, to make it more
	   machine friendly. For binary files, outputs two - instead of saying
	   0 0.

       --shortstat
	   Output only the last line of the --stat format containing total
	   number of modified files, as well as number of added and deleted
	   lines.

       --dirstat[=<limit>]
	   Output the distribution of relative amount of changes (number of
	   lines added or removed) for each sub-directory. Directories with
	   changes below a cut-off percent (3% by default) are not shown. The
	   cut-off percent can be set with --dirstat=<limit>. Changes in a
	   child directory are not counted for the parent directory, unless
	   --cumulative is used.

       --dirstat-by-file[=<limit>]
	   Same as --dirstat, but counts changed files instead of lines.

       --summary
	   Output a condensed summary of extended header information such as
	   creations, renames and mode changes.

       --no-renames
	   Turn off rename detection, even when the configuration file gives
	   the default to do so.

       --full-index
	   Instead of the first handful of characters, show the full pre- and
	   post-image blob object names on the "index" line when generating
	   patch format output.

       --binary
	   In addition to --full-index, output a binary diff that can be
	   applied with git-apply.

       --abbrev[=<n>]
	   Instead of showing the full 40-byte hexadecimal object name in
	   diff-raw format output and diff-tree header lines, show only a
	   partial prefix. This is independent of the --full-index option
	   above, which controls the diff-patch output format. Non default
	   number of digits can be specified with --abbrev=<n>.

       -B[<n>][/<m>], --break-rewrites[=[<n>][/<m>]]
	   Break complete rewrite changes into pairs of delete and create.
	   This serves two purposes:

	   It affects the way a change that amounts to a total rewrite of a
	   file not as a series of deletion and insertion mixed together with
	   a very few lines that happen to match textually as the context, but
	   as a single deletion of everything old followed by a single
	   insertion of everything new, and the number m controls this aspect
	   of the -B option (defaults to 60%).	-B/70% specifies that less
	   than 30% of the original should remain in the result for git to
	   consider it a total rewrite (i.e. otherwise the resulting patch
	   will be a series of deletion and insertion mixed together with
	   context lines).

	   When used with -M, a totally-rewritten file is also considered as
	   the source of a rename (usually -M only considers a file that
	   disappeared as the source of a rename), and the number n controls
	   this aspect of the -B option (defaults to 50%).  -B20% specifies
	   that a change with addition and deletion compared to 20% or more of
	   the file’s size are eligible for being picked up as a possible
	   source of a rename to another file.

       -M[<n>], --find-renames[=<n>]
	   Detect renames. If n is specified, it is a is a threshold on the
	   similarity index (i.e. amount of addition/deletions compared to the
	   file’s size). For example, -M90% means git should consider a
	   delete/add pair to be a rename if more than 90% of the file hasn’t
	   changed.

       -C[<n>], --find-copies[=<n>]
	   Detect copies as well as renames. See also --find-copies-harder. If
	   n is specified, it has the same meaning as for -M<n>.

       --find-copies-harder
	   For performance reasons, by default, -C option finds copies only if
	   the original file of the copy was modified in the same changeset.
	   This flag makes the command inspect unmodified files as candidates
	   for the source of copy. This is a very expensive operation for
	   large projects, so use it with caution. Giving more than one -C
	   option has the same effect.

       -l<num>
	   The -M and -C options require O(n^2) processing time where n is the
	   number of potential rename/copy targets. This option prevents
	   rename/copy detection from running if the number of rename/copy
	   targets exceeds the specified number.

       -O<orderfile>
	   Output the patch in the order specified in the <orderfile>, which
	   has one shell glob pattern per line.

       -a, --text
	   Treat all files as text.

       --ignore-space-at-eol
	   Ignore changes in whitespace at EOL.

       -b, --ignore-space-change
	   Ignore changes in amount of whitespace. This ignores whitespace at
	   line end, and considers all other sequences of one or more
	   whitespace characters to be equivalent.

       -w, --ignore-all-space
	   Ignore whitespace when comparing lines. This ignores differences
	   even if one line has whitespace where the other line has none.

       --inter-hunk-context=<lines>
	   Show the context between diff hunks, up to the specified number of
	   lines, thereby fusing hunks that are close to each other.

       --ext-diff
	   Allow an external diff helper to be executed. If you set an
	   external diff driver with gitattributes(5), you need to use this
	   option with git-log(1) and friends.

       --no-ext-diff
	   Disallow external diff drivers.

       --ignore-submodules[=<when>]
	   Ignore changes to submodules in the diff generation. <when> can be
	   either "none", "untracked", "dirty" or "all", which is the default
	   Using "none" will consider the submodule modified when it either
	   contains untracked or modified files or its HEAD differs from the
	   commit recorded in the superproject and can be used to override any
	   settings of the ignore option in git-config(1) or gitmodules(5).
	   When "untracked" is used submodules are not considered dirty when
	   they only contain untracked content (but they are still scanned for
	   modified content). Using "dirty" ignores all changes to the work
	   tree of submodules, only changes to the commits stored in the
	   superproject are shown (this was the behavior until 1.7.0). Using
	   "all" hides all changes to submodules.

       --src-prefix=<prefix>
	   Show the given source prefix instead of "a/".

       --dst-prefix=<prefix>
	   Show the given destination prefix instead of "b/".

       --no-prefix
	   Do not show any source or destination prefix.

       For more detailed explanation on these common options, see also
       gitdiffcore(7).

       -<n>
	   Prepare patches from the topmost <n> commits.

       -o <dir>, --output-directory <dir>
	   Use <dir> to store the resulting files, instead of the current
	   working directory.

       -n, --numbered
	   Name output in [PATCH n/m] format, even with a single patch.

       -N, --no-numbered
	   Name output in [PATCH] format.

       --start-number <n>
	   Start numbering the patches at <n> instead of 1.

       --numbered-files
	   Output file names will be a simple number sequence without the
	   default first line of the commit appended.

       -k, --keep-subject
	   Do not strip/add [PATCH] from the first line of the commit log
	   message.

       -s, --signoff
	   Add Signed-off-by: line to the commit message, using the committer
	   identity of yourself.

       --stdout
	   Print all commits to the standard output in mbox format, instead of
	   creating a file for each one.

       --attach[=<boundary>]
	   Create multipart/mixed attachment, the first part of which is the
	   commit message and the patch itself in the second part, with
	   Content-Disposition: attachment.

       --no-attach
	   Disable the creation of an attachment, overriding the configuration
	   setting.

       --inline[=<boundary>]
	   Create multipart/mixed attachment, the first part of which is the
	   commit message and the patch itself in the second part, with
	   Content-Disposition: inline.

       --thread[=<style>], --no-thread
	   Controls addition of In-Reply-To and References headers to make the
	   second and subsequent mails appear as replies to the first. Also
	   controls generation of the Message-Id header to reference.

	   The optional <style> argument can be either shallow or deep.
	   shallow threading makes every mail a reply to the head of the
	   series, where the head is chosen from the cover letter, the
	   --in-reply-to, and the first patch mail, in this order.  deep
	   threading makes every mail a reply to the previous one.

	   The default is --no-thread, unless the format.thread configuration
	   is set. If --thread is specified without a style, it defaults to
	   the style specified by format.thread if any, or else shallow.

	   Beware that the default for git send-email is to thread emails
	   itself. If you want git format-patch to take care of threading, you
	   will want to ensure that threading is disabled for git send-email.

       --in-reply-to=Message-Id
	   Make the first mail (or all the mails with --no-thread) appear as a
	   reply to the given Message-Id, which avoids breaking threads to
	   provide a new patch series.

       --ignore-if-in-upstream
	   Do not include a patch that matches a commit in <until>..<since>.
	   This will examine all patches reachable from <since> but not from
	   <until> and compare them with the patches being generated, and any
	   patch that matches is ignored.

       --subject-prefix=<Subject-Prefix>
	   Instead of the standard [PATCH] prefix in the subject line, instead
	   use [<Subject-Prefix>]. This allows for useful naming of a patch
	   series, and can be combined with the --numbered option.

       --to=<email>
	   Add a To: header to the email headers. This is in addition to any
	   configured headers, and may be used multiple times.

       --cc=<email>
	   Add a Cc: header to the email headers. This is in addition to any
	   configured headers, and may be used multiple times.

       --add-header=<header>
	   Add an arbitrary header to the email headers. This is in addition
	   to any configured headers, and may be used multiple times. For
	   example, --add-header="Organization: git-foo"

       --cover-letter
	   In addition to the patches, generate a cover letter file containing
	   the shortlog and the overall diffstat. You can fill in a
	   description in the file before sending it out.

       --[no]-signature=<signature>
	   Add a signature to each message produced. Per RFC 3676 the
	   signature is separated from the body by a line with ´-- ´ on it. If
	   the signature option is omitted the signature defaults to the git
	   version number.

       --suffix=.<sfx>
	   Instead of using .patch as the suffix for generated filenames, use
	   specified suffix. A common alternative is --suffix=.txt. Leaving
	   this empty will remove the .patch suffix.

	   Note that the leading character does not have to be a dot; for
	   example, you can use --suffix=-patch to get
	   0001-description-of-my-change-patch.

       --no-binary
	   Do not output contents of changes in binary files, instead display
	   a notice that those files changed. Patches generated using this
	   option cannot be applied properly, but they are still useful for
	   code review.

       --root
	   Treat the revision argument as a <revision range>, even if it is
	   just a single commit (that would normally be treated as a <since>).
	   Note that root commits included in the specified range are always
	   formatted as creation patches, independently of this flag.

CONFIGURATION
       You can specify extra mail header lines to be added to each message,
       defaults for the subject prefix and file suffix, number patches when
       outputting more than one patch, add "To" or "Cc:" headers, configure
       attachments, and sign off patches with configuration variables.

	   [format]
		   headers = "Organization: git-foo\n"
		   subjectprefix = CHANGE
		   suffix = .txt
		   numbered = auto
		   to = <email>
		   cc = <email>
		   attach [ = mime-boundary-string ]
		   signoff = true

EXAMPLES
       ·   Extract commits between revisions R1 and R2, and apply them on top
	   of the current branch using git am to cherry-pick them:

	       $ git format-patch -k --stdout R1..R2 | git am -3 -k

       ·   Extract all commits which are in the current branch but not in the
	   origin branch:

	       $ git format-patch origin

	   For each commit a separate file is created in the current
	   directory.

       ·   Extract all commits that lead to origin since the inception of the
	   project:

	       $ git format-patch --root origin

       ·   The same as the previous one:

	       $ git format-patch -M -B origin

	   Additionally, it detects and handles renames and complete rewrites
	   intelligently to produce a renaming patch. A renaming patch reduces
	   the amount of text output, and generally makes it easier to review.
	   Note that non-git "patch" programs won’t understand renaming
	   patches, so use it only when you know the recipient uses git to
	   apply your patch.

       ·   Extract three topmost commits from the current branch and format
	   them as e-mailable patches:

	       $ git format-patch -3


SEE ALSO
       git-am(1), git-send-email(1)

AUTHOR
       Written by Junio C Hamano <gitster@pobox.com[1]>

DOCUMENTATION
       Documentation by Junio C Hamano and the git-list
       <git@vger.kernel.org[2]>.

GIT
       Part of the git(1) suite

NOTES
	1. gitster@pobox.com
	   mailto:gitster@pobox.com

	2. git@vger.kernel.org
	   mailto:git@vger.kernel.org

Git 1.7.4.1			  04/26/2011		   GIT-FORMAT-PATCH(1)
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net