git-format-patch man page on OpenBSD

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



GIT-FORMAT-PATCH(1)			      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" sec-
	  tion 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

								1

GIT-FORMAT-PATCH(1)			      GIT-FORMAT-PATCH(1)

       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 Ref-
       erences 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 file-
	      name  part can be controlled by giving another width to it sepa-
	      rated 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

								2

GIT-FORMAT-PATCH(1)			      GIT-FORMAT-PATCH(1)

	      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 gener-
	      ating 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  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 con-
	      text,  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

								3

GIT-FORMAT-PATCH(1)			      GIT-FORMAT-PATCH(1)

	      disappeared  as  the  source of a rename), and the number n con-
	      trols 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>]
	      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 con-
	      sider a delete/add pair to be a rename if more than 90%  of  the
	      file hasn’t changed.

       -C[<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  pre-
	      vents  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.

								4

GIT-FORMAT-PATCH(1)			      GIT-FORMAT-PATCH(1)

       -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  dif-
	      fers  from  the  commit  recorded in the superproject and can be
	      used to override any settings of the ignore option  in  git-con-
	      fig(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 sub-
	      modules.

       --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>   Limits the number of patches to prepare.

								5

GIT-FORMAT-PATCH(1)			      GIT-FORMAT-PATCH(1)

       -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 commit-
	      ter 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 configura-
	      tion 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.

								6

GIT-FORMAT-PATCH(1)			      GIT-FORMAT-PATCH(1)

       --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 configura-
	      tion 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 addi-
	      tion to any configured headers, and may be used multiple	times.

								7

GIT-FORMAT-PATCH(1)			      GIT-FORMAT-PATCH(1)

	      For example, --add-header="Organization: git-foo"

       --cover-letter
	      In  addition  to	the patches, generate a cover letter file con-
	      taining 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 sig-
	      nature 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-descrip-
	      tion-of-my-change-patch.

       --no-binary
	      Do not output contents of changes in binary files, instead  dis-
	      play  a notice that those files changed. Patches generated using
	      this option cannot be applied properly, but they are still  use-
	      ful 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.

       .ft C
       [format]
	       headers = "Organization: git-foo\n"
	       subjectprefix = CHANGE
	       suffix = .txt
	       numbered = auto

								8

GIT-FORMAT-PATCH(1)			      GIT-FORMAT-PATCH(1)

	       to = <email>
	       cc = <email>
	       attach [ = mime-boundary-string ]
	       signoff = true
       .ft

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

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

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

	  .ft C
	  $ git format-patch origin
	  .ft

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

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

	  .ft C
	  $ git format-patch --root origin
	  .ft

       o  The same as the previous one:

	  .ft C
	  $ git format-patch -M -B origin
	  .ft

								9

GIT-FORMAT-PATCH(1)			      GIT-FORMAT-PATCH(1)

	  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.

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

	  .ft C
	  $ git format-patch -3
	  .ft

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

AUTHOR
       Written by Junio C Hamano <gitster@pobox.com: mailto:gitster@pobox.com>

DOCUMENTATION
       Documentation  by Junio C Hamano and the git-list <git@vger.kernel.org:
       mailto:git@vger.kernel.org>.

GIT
       Part of the git(1) suite

							       10

[top]

List of man pages available for OpenBSD

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