|  | `diff.autoRefreshIndex`:: | 
|  | When using `git diff` to compare with work tree | 
|  | files, do not consider stat-only changes as changed. | 
|  | Instead, silently run `git update-index --refresh` to | 
|  | update the cached stat information for paths whose | 
|  | contents in the work tree match the contents in the | 
|  | index.  This option defaults to `true`.  Note that this | 
|  | affects only `git diff` Porcelain, and not lower level | 
|  | `diff` commands such as `git diff-files`. | 
|  |  | 
|  | `diff.dirstat`:: | 
|  | ifdef::git-diff[] | 
|  | A comma separated list of `--dirstat` parameters specifying the | 
|  | default behavior of the `--dirstat` option to `git diff` and friends. | 
|  | endif::git-diff[] | 
|  | ifndef::git-diff[] | 
|  | A comma separated list of `--dirstat` parameters specifying the | 
|  | default behavior of the `--dirstat` option to linkgit:git-diff[1] | 
|  | and friends. | 
|  | endif::git-diff[] | 
|  | The defaults can be overridden on the command line | 
|  | (using `--dirstat=<param>,...`). The fallback defaults | 
|  | (when not changed by `diff.dirstat`) are `changes,noncumulative,3`. | 
|  | The following parameters are available: | 
|  | + | 
|  | -- | 
|  | `changes`;; | 
|  | Compute the dirstat numbers by counting the lines that have been | 
|  | removed from the source, or added to the destination. This ignores | 
|  | the amount of pure code movements within a file.  In other words, | 
|  | rearranging lines in a file is not counted as much as other changes. | 
|  | This is the default behavior when no parameter is given. | 
|  | `lines`;; | 
|  | Compute the dirstat numbers by doing the regular line-based diff | 
|  | analysis, and summing the removed/added line counts. (For binary | 
|  | files, count 64-byte chunks instead, since binary files have no | 
|  | natural concept of lines). This is a more expensive `--dirstat` | 
|  | behavior than the `changes` behavior, but it does count rearranged | 
|  | lines within a file as much as other changes. The resulting output | 
|  | is consistent with what you get from the other `--*stat` options. | 
|  | `files`;; | 
|  | Compute the dirstat numbers by counting the number of files changed. | 
|  | Each changed file counts equally in the dirstat analysis. This is | 
|  | the computationally cheapest `--dirstat` behavior, since it does | 
|  | not have to look at the file contents at all. | 
|  | `cumulative`;; | 
|  | Count changes in a child directory for the parent directory as well. | 
|  | Note that when using `cumulative`, the sum of the percentages | 
|  | reported may exceed 100%. The default (non-cumulative) behavior can | 
|  | be specified with the `noncumulative` parameter. | 
|  | _<limit>_;; | 
|  | An integer parameter specifies a cut-off percent (3% by default). | 
|  | Directories contributing less than this percentage of the changes | 
|  | are not shown in the output. | 
|  | -- | 
|  | + | 
|  | Example: The following will count changed files, while ignoring | 
|  | directories with less than 10% of the total amount of changed files, | 
|  | and accumulating child directory counts in the parent directories: | 
|  | `files,10,cumulative`. | 
|  |  | 
|  | `diff.statNameWidth`:: | 
|  | Limit the width of the filename part in `--stat` output. If set, applies | 
|  | to all commands generating `--stat` output except `format-patch`. | 
|  |  | 
|  | `diff.statGraphWidth`:: | 
|  | Limit the width of the graph part in `--stat` output. If set, applies | 
|  | to all commands generating `--stat` output except `format-patch`. | 
|  |  | 
|  | `diff.context`:: | 
|  | Generate diffs with _<n>_ lines of context instead of the default | 
|  | of 3. This value is overridden by the `-U` option. | 
|  |  | 
|  | `diff.interHunkContext`:: | 
|  | Show the context between diff hunks, up to the specified number | 
|  | of lines, thereby fusing the hunks that are close to each other. | 
|  | This value serves as the default for the `--inter-hunk-context` | 
|  | command line option. | 
|  |  | 
|  | `diff.external`:: | 
|  | If this config variable is set, diff generation is not | 
|  | performed using the internal diff machinery, but using the | 
|  | given command.  Can be overridden with the `GIT_EXTERNAL_DIFF` | 
|  | environment variable.  The command is called with parameters | 
|  | as described under "git Diffs" in linkgit:git[1].  Note: if | 
|  | you want to use an external diff program only on a subset of | 
|  | your files, you might want to use linkgit:gitattributes[5] instead. | 
|  |  | 
|  | `diff.trustExitCode`:: | 
|  | If this boolean value is set to `true` then the | 
|  | `diff.external` command is expected to return exit code | 
|  | 0 if it considers the input files to be equal or 1 if it | 
|  | considers them to be different, like `diff`(1). | 
|  | If it is set to `false`, which is the default, then the command | 
|  | is expected to return exit code `0` regardless of equality. | 
|  | Any other exit code causes Git to report a fatal error. | 
|  |  | 
|  | `diff.ignoreSubmodules`:: | 
|  | Sets the default value of `--ignore-submodules`. Note that this | 
|  | affects only `git diff` Porcelain, and not lower level `diff` | 
|  | commands such as `git diff-files`. `git checkout` | 
|  | and `git switch` also honor | 
|  | this setting when reporting uncommitted changes. Setting it to | 
|  | `all` disables the submodule summary normally shown by `git commit` | 
|  | and `git status` when `status.submoduleSummary` is set unless it is | 
|  | overridden by using the `--ignore-submodules` command-line option. | 
|  | The `git submodule` commands are not affected by this setting. | 
|  | By default this is set to untracked so that any untracked | 
|  | submodules are ignored. | 
|  |  | 
|  | `diff.mnemonicPrefix`:: | 
|  | If set, `git diff` uses a prefix pair that is different from the | 
|  | standard `a/` and `b/` depending on what is being compared.  When | 
|  | this configuration is in effect, reverse diff output also swaps | 
|  | the order of the prefixes: | 
|  | `git diff`;; | 
|  | compares the (i)ndex and the (w)ork tree; | 
|  | `git diff HEAD`;; | 
|  | compares a (c)ommit and the (w)ork tree; | 
|  | `git diff --cached`;; | 
|  | compares a (c)ommit and the (i)ndex; | 
|  | `git diff HEAD:<file1> <file2>`;; | 
|  | compares an (o)bject and a (w)ork tree entity; | 
|  | `git diff --no-index <a> <b>`;; | 
|  | compares two non-git things _<a>_ and _<b>_. | 
|  |  | 
|  | `diff.noPrefix`:: | 
|  | If set, `git diff` does not show any source or destination prefix. | 
|  |  | 
|  | `diff.srcPrefix`:: | 
|  | If set, `git diff` uses this source prefix. Defaults to `a/`. | 
|  |  | 
|  | `diff.dstPrefix`:: | 
|  | If set, `git diff` uses this destination prefix. Defaults to `b/`. | 
|  |  | 
|  | `diff.relative`:: | 
|  | If set to `true`, `git diff` does not show changes outside of the directory | 
|  | and show pathnames relative to the current directory. | 
|  |  | 
|  | `diff.orderFile`:: | 
|  | File indicating how to order files within a diff. | 
|  | ifdef::git-diff[] | 
|  | See the `-O` option for details. | 
|  | endif::git-diff[] | 
|  | ifndef::git-diff[] | 
|  | See the `-O` option to linkgit:git-diff[1] for details. | 
|  | endif::git-diff[] | 
|  | If `diff.orderFile` is a relative pathname, it is treated as | 
|  | relative to the top of the working tree. | 
|  |  | 
|  | `diff.renameLimit`:: | 
|  | The number of files to consider in the exhaustive portion of | 
|  | copy/rename detection; equivalent to the `git diff` option | 
|  | `-l`.  If not set, the default value is currently 1000.  This | 
|  | setting has no effect if rename detection is turned off. | 
|  |  | 
|  | `diff.renames`:: | 
|  | Whether and how Git detects renames.  If set to `false`, | 
|  | rename detection is disabled. If set to `true`, basic rename | 
|  | detection is enabled.  If set to `copies` or `copy`, Git will | 
|  | detect copies, as well.  Defaults to `true`.  Note that this | 
|  | affects only `git diff` Porcelain like linkgit:git-diff[1] and | 
|  | linkgit:git-log[1], and not lower level commands such as | 
|  | linkgit:git-diff-files[1]. | 
|  |  | 
|  | `diff.suppressBlankEmpty`:: | 
|  | A boolean to inhibit the standard behavior of printing a space | 
|  | before each empty output line. Defaults to `false`. | 
|  |  | 
|  | `diff.submodule`:: | 
|  | Specify the format in which differences in submodules are | 
|  | shown.  The `short` format just shows the names of the commits | 
|  | at the beginning and end of the range. The `log` format lists | 
|  | the commits in the range like linkgit:git-submodule[1] `summary` | 
|  | does. The `diff` format shows an inline diff of the changed | 
|  | contents of the submodule. Defaults to `short`. | 
|  |  | 
|  | `diff.wordRegex`:: | 
|  | A POSIX Extended Regular Expression used to determine what is a "word" | 
|  | when performing word-by-word difference calculations.  Character | 
|  | sequences that match the regular expression are "words", all other | 
|  | characters are *ignorable* whitespace. | 
|  |  | 
|  | `diff.<driver>.command`:: | 
|  | The custom diff driver command.  See linkgit:gitattributes[5] | 
|  | for details. | 
|  |  | 
|  | `diff.<driver>.trustExitCode`:: | 
|  | If this boolean value is set to `true` then the | 
|  | `diff.<driver>.command` command is expected to return exit code | 
|  | 0 if it considers the input files to be equal or 1 if it | 
|  | considers them to be different, like `diff`(1). | 
|  | If it is set to `false`, which is the default, then the command | 
|  | is expected to return exit code 0 regardless of equality. | 
|  | Any other exit code causes Git to report a fatal error. | 
|  |  | 
|  | `diff.<driver>.xfuncname`:: | 
|  | The regular expression that the diff driver should use to | 
|  | recognize the hunk header.  A built-in pattern may also be used. | 
|  | See linkgit:gitattributes[5] for details. | 
|  |  | 
|  | `diff.<driver>.binary`:: | 
|  | Set this option to `true` to make the diff driver treat files as | 
|  | binary.  See linkgit:gitattributes[5] for details. | 
|  |  | 
|  | `diff.<driver>.textconv`:: | 
|  | The command that the diff driver should call to generate the | 
|  | text-converted version of a file.  The result of the | 
|  | conversion is used to generate a human-readable diff.  See | 
|  | linkgit:gitattributes[5] for details. | 
|  |  | 
|  | `diff.<driver>.wordRegex`:: | 
|  | The regular expression that the diff driver should use to | 
|  | split words in a line.  See linkgit:gitattributes[5] for | 
|  | details. | 
|  |  | 
|  | `diff.<driver>.cachetextconv`:: | 
|  | Set this option to `true` to make the diff driver cache the text | 
|  | conversion outputs.  See linkgit:gitattributes[5] for details. | 
|  |  | 
|  | include::{build_dir}/mergetools-diff.txt[] | 
|  |  | 
|  | `diff.indentHeuristic`:: | 
|  | Set this option to `false` to disable the default heuristics | 
|  | that shift diff hunk boundaries to make patches easier to read. | 
|  |  | 
|  | `diff.algorithm`:: | 
|  | Choose a diff algorithm.  The variants are as follows: | 
|  | + | 
|  | -- | 
|  | `default`;; | 
|  | `myers`;; | 
|  | The basic greedy diff algorithm. Currently, this is the default. | 
|  | `minimal`;; | 
|  | Spend extra time to make sure the smallest possible diff is | 
|  | produced. | 
|  | `patience`;; | 
|  | Use "patience diff" algorithm when generating patches. | 
|  | `histogram`;; | 
|  | This algorithm extends the patience algorithm to "support | 
|  | low-occurrence common elements". | 
|  | -- | 
|  | + | 
|  |  | 
|  | `diff.wsErrorHighlight`:: | 
|  | Highlight whitespace errors in the `context`, `old` or `new` | 
|  | lines of the diff.  Multiple values are separated by comma, | 
|  | `none` resets previous values, `default` reset the list to | 
|  | `new` and `all` is a shorthand for `old,new,context`.  The | 
|  | whitespace errors are colored with `color.diff.whitespace`. | 
|  | The command line option `--ws-error-highlight=<kind>` | 
|  | overrides this setting. | 
|  |  | 
|  | `diff.colorMoved`:: | 
|  | If set to either a valid _<mode>_ or a `true` value, moved lines | 
|  | in a diff are colored differently. | 
|  | ifdef::git-diff[] | 
|  | For details of valid modes see `--color-moved`. | 
|  | endif::git-diff[] | 
|  | ifndef::git-diff[] | 
|  | For details of valid modes see `--color-moved` in linkgit:git-diff[1]. | 
|  | endif::git-diff[] | 
|  | If simply set to `true` the default color mode will be used. When | 
|  | set to `false`, moved lines are not colored. | 
|  |  | 
|  | `diff.colorMovedWS`:: | 
|  | When moved lines are colored using e.g. the `diff.colorMoved` setting, | 
|  | this option controls the mode how spaces are treated. | 
|  | For details of valid modes see `--color-moved-ws` in linkgit:git-diff[1]. |