| `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. | |
| `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]. |