|  | // Please don't remove this comment as asciidoc behaves badly when | 
|  | // the first non-empty line is ifdef/ifndef. The symptom is that | 
|  | // without this comment the <git-diff-core> attribute conditionally | 
|  | // defined below ends up being defined unconditionally. | 
|  | // Last checked with asciidoc 7.0.2. | 
|  |  | 
|  | ifndef::git-format-patch[] | 
|  | ifndef::git-diff[] | 
|  | ifndef::git-log[] | 
|  | :git-diff-core: 1 | 
|  | endif::git-log[] | 
|  | endif::git-diff[] | 
|  | endif::git-format-patch[] | 
|  |  | 
|  | ifdef::git-format-patch[] | 
|  | -p:: | 
|  | --no-stat:: | 
|  | Generate plain patches without any diffstats. | 
|  | endif::git-format-patch[] | 
|  |  | 
|  | ifndef::git-format-patch[] | 
|  | -p:: | 
|  | -u:: | 
|  | --patch:: | 
|  | Generate patch (see section on generating patches). | 
|  | {git-diff? This is the default.} | 
|  | endif::git-format-patch[] | 
|  |  | 
|  | -U<n>:: | 
|  | --unified=<n>:: | 
|  | Generate diffs with <n> lines of context instead of | 
|  | the usual three. | 
|  | ifndef::git-format-patch[] | 
|  | Implies `-p`. | 
|  | endif::git-format-patch[] | 
|  |  | 
|  | ifndef::git-format-patch[] | 
|  | --raw:: | 
|  | Generate the raw format. | 
|  | {git-diff-core? This is the default.} | 
|  | endif::git-format-patch[] | 
|  |  | 
|  | ifndef::git-format-patch[] | 
|  | --patch-with-raw:: | 
|  | Synonym for `-p --raw`. | 
|  | endif::git-format-patch[] | 
|  |  | 
|  | --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. | 
|  |  | 
|  | ifndef::git-format-patch[] | 
|  | --patch-with-stat:: | 
|  | Synonym for `-p --stat`. | 
|  | endif::git-format-patch[] | 
|  |  | 
|  | ifndef::git-format-patch[] | 
|  |  | 
|  | -z:: | 
|  | ifdef::git-log[] | 
|  | Separate the commits with NULs instead of with new newlines. | 
|  | + | 
|  | Also, when `--raw` or `--numstat` has been given, do not munge | 
|  | pathnames and use NULs as output field terminators. | 
|  | endif::git-log[] | 
|  | ifndef::git-log[] | 
|  | When `--raw`, `--numstat`, `--name-only` or `--name-status` has been | 
|  | given, do not munge pathnames and use NULs as output field terminators. | 
|  | endif::git-log[] | 
|  | + | 
|  | Without this option, each pathname output will have TAB, LF, double quotes, | 
|  | and backslash characters replaced with `\t`, `\n`, `\"`, and `\\`, | 
|  | respectively, and the pathname will be enclosed in double quotes if | 
|  | any of those replacements occurred. | 
|  |  | 
|  | --name-only:: | 
|  | Show only names of changed files. | 
|  |  | 
|  | --name-status:: | 
|  | Show only names and status of changed files. See the description | 
|  | of the `--diff-filter` option on what the status letters mean. | 
|  |  | 
|  | --submodule[=<format>]:: | 
|  | Chose the output format for submodule differences. <format> can be one of | 
|  | 'short' and 'log'. 'short' just shows pairs of commit names, this format | 
|  | is used when this option is not given. 'log' is the default value for this | 
|  | option and lists the commits in that commit range like the 'summary' | 
|  | option of linkgit:git-submodule[1] does. | 
|  |  | 
|  | --color[=<when>]:: | 
|  | Show colored diff. | 
|  | The value must be always (the default), never, or auto. | 
|  |  | 
|  | --no-color:: | 
|  | Turn off colored diff, even when the configuration file | 
|  | gives the default to color output. | 
|  | Same as `--color=never`. | 
|  |  | 
|  | --word-diff[=<mode>]:: | 
|  | Show a word diff, using the <mode> to delimit changed words. | 
|  | By default, words are delimited by whitespace; see | 
|  | `--word-diff-regex` below.  The <mode> defaults to 'plain', and | 
|  | must be one of: | 
|  | + | 
|  | -- | 
|  | color:: | 
|  | Highlight changed words using only colors.  Implies `--color`. | 
|  | plain:: | 
|  | Show words as `[-removed-]` and `{+added+}`.  Makes no | 
|  | attempts to escape the delimiters if they appear in the input, | 
|  | so the output may be ambiguous. | 
|  | porcelain:: | 
|  | Use a special line-based format intended for script | 
|  | consumption.  Added/removed/unchanged runs are printed in the | 
|  | usual unified diff format, starting with a `+`/`-`/` ` | 
|  | character at the beginning of the line and extending to the | 
|  | end of the line.  Newlines in the input are represented by a | 
|  | tilde `~` on a line of its own. | 
|  | none:: | 
|  | Disable word diff again. | 
|  | -- | 
|  | + | 
|  | Note that despite the name of the first mode, color is used to | 
|  | highlight the changed parts in all modes if enabled. | 
|  |  | 
|  | --word-diff-regex=<regex>:: | 
|  | Use <regex> to decide what a word is, instead of considering | 
|  | runs of non-whitespace to be a word.  Also implies | 
|  | `--word-diff` unless it was already enabled. | 
|  | + | 
|  | Every non-overlapping match of the | 
|  | <regex> is considered a word.  Anything between these matches is | 
|  | considered whitespace and ignored(!) for the purposes of finding | 
|  | differences.  You may want to append `|[^[:space:]]` to your regular | 
|  | expression to make sure that it matches all non-whitespace characters. | 
|  | A match that contains a newline is silently truncated(!) at the | 
|  | newline. | 
|  | + | 
|  | The regex can also be set via a diff driver or configuration option, see | 
|  | linkgit:gitattributes[1] or linkgit:git-config[1].  Giving it explicitly | 
|  | overrides any diff driver or configuration setting.  Diff drivers | 
|  | override configuration settings. | 
|  |  | 
|  | --color-words[=<regex>]:: | 
|  | Equivalent to `--word-diff=color` plus (if a regex was | 
|  | specified) `--word-diff-regex=<regex>`. | 
|  | endif::git-format-patch[] | 
|  |  | 
|  | --no-renames:: | 
|  | Turn off rename detection, even when the configuration | 
|  | file gives the default to do so. | 
|  |  | 
|  | ifndef::git-format-patch[] | 
|  | --check:: | 
|  | Warn if changes introduce trailing whitespace | 
|  | or an indent that uses a space before a tab. Exits with | 
|  | non-zero status if problems are found. Not compatible with | 
|  | --exit-code. | 
|  | endif::git-format-patch[] | 
|  |  | 
|  | --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>]:: | 
|  | ifndef::git-log[] | 
|  | Detect renames. | 
|  | endif::git-log[] | 
|  | ifdef::git-log[] | 
|  | If generating diffs, detect and report renames for each commit. | 
|  | For following files across renames while traversing history, see | 
|  | `--follow`. | 
|  | endif::git-log[] | 
|  | 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. | 
|  |  | 
|  | ifndef::git-format-patch[] | 
|  | --diff-filter=[(A|C|D|M|R|T|U|X|B)...[*]]:: | 
|  | Select only files that are Added (`A`), Copied (`C`), | 
|  | Deleted (`D`), Modified (`M`), Renamed (`R`), have their | 
|  | type (i.e. regular file, symlink, submodule, ...) changed (`T`), | 
|  | are Unmerged (`U`), are | 
|  | Unknown (`X`), or have had their pairing Broken (`B`). | 
|  | Any combination of the filter characters (including none) can be used. | 
|  | When `*` (All-or-none) is added to the combination, all | 
|  | paths are selected if there is any file that matches | 
|  | other criteria in the comparison; if there is no file | 
|  | that matches other criteria, nothing is selected. | 
|  |  | 
|  | -S<string>:: | 
|  | Look for differences that introduce or remove an instance of | 
|  | <string>. Note that this is different than the string simply | 
|  | appearing in diff output; see the 'pickaxe' entry in | 
|  | linkgit:gitdiffcore[7] for more details. | 
|  |  | 
|  | -G<regex>:: | 
|  | Look for differences whose added or removed line matches | 
|  | the given <regex>. | 
|  |  | 
|  | --pickaxe-all:: | 
|  | When `-S` or `-G` finds a change, show all the changes in that | 
|  | changeset, not just the files that contain the change | 
|  | in <string>. | 
|  |  | 
|  | --pickaxe-regex:: | 
|  | Make the <string> not a plain string but an extended POSIX | 
|  | regex to match. | 
|  | endif::git-format-patch[] | 
|  |  | 
|  | -O<orderfile>:: | 
|  | Output the patch in the order specified in the | 
|  | <orderfile>, which has one shell glob pattern per line. | 
|  |  | 
|  | ifndef::git-format-patch[] | 
|  | -R:: | 
|  | Swap two inputs; that is, show differences from index or | 
|  | on-disk file to tree contents. | 
|  |  | 
|  | --relative[=<path>]:: | 
|  | When run from a subdirectory of the project, it can be | 
|  | told to exclude changes outside the directory and show | 
|  | pathnames relative to it with this option.  When you are | 
|  | not in a subdirectory (e.g. in a bare repository), you | 
|  | can name which subdirectory to make the output relative | 
|  | to by giving a <path> as an argument. | 
|  | endif::git-format-patch[] | 
|  |  | 
|  | -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. | 
|  |  | 
|  | ifndef::git-format-patch[] | 
|  | --exit-code:: | 
|  | Make the program exit with codes similar to diff(1). | 
|  | That is, it exits with 1 if there were differences and | 
|  | 0 means no differences. | 
|  |  | 
|  | --quiet:: | 
|  | Disable all output of the program. Implies `--exit-code`. | 
|  | endif::git-format-patch[] | 
|  |  | 
|  | --ext-diff:: | 
|  | Allow an external diff helper to be executed. If you set an | 
|  | external diff driver with linkgit:gitattributes[5], you need | 
|  | to use this option with linkgit: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 linkgit:git-config[1] or linkgit: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 | 
|  | linkgit:gitdiffcore[7]. |