--- /dev/null
- hex object id per line (i.e., the same as produce by `git for-each-ref
+ core.fileMode::
+ Tells Git if the executable bit of files in the working tree
+ is to be honored.
+ +
+ Some filesystems lose the executable bit when a file that is
+ marked as executable is checked out, or checks out a
+ non-executable file with executable bit on.
+ linkgit:git-clone[1] or linkgit:git-init[1] probe the filesystem
+ to see if it handles the executable bit correctly
+ and this variable is automatically set as necessary.
+ +
+ A repository, however, may be on a filesystem that handles
+ the filemode correctly, and this variable is set to 'true'
+ when created, but later may be made accessible from another
+ environment that loses the filemode (e.g. exporting ext4 via
+ CIFS mount, visiting a Cygwin created repository with
+ Git for Windows or Eclipse).
+ In such a case it may be necessary to set this variable to 'false'.
+ See linkgit:git-update-index[1].
+ +
+ The default is true (when core.filemode is not specified in the config file).
+
+ core.hideDotFiles::
+ (Windows-only) If true, mark newly-created directories and files whose
+ name starts with a dot as hidden. If 'dotGitOnly', only the `.git/`
+ directory is hidden, but no other files starting with a dot. The
+ default mode is 'dotGitOnly'.
+
+ core.ignoreCase::
+ Internal variable which enables various workarounds to enable
+ Git to work better on filesystems that are not case sensitive,
+ like APFS, HFS+, FAT, NTFS, etc. For example, if a directory listing
+ finds "makefile" when Git expects "Makefile", Git will assume
+ it is really the same file, and continue to remember it as
+ "Makefile".
+ +
+ The default is false, except linkgit:git-clone[1] or linkgit:git-init[1]
+ will probe and set core.ignoreCase true if appropriate when the repository
+ is created.
+ +
+ Git relies on the proper configuration of this variable for your operating
+ and file system. Modifying this value may result in unexpected behavior.
+
+ core.precomposeUnicode::
+ This option is only used by Mac OS implementation of Git.
+ When core.precomposeUnicode=true, Git reverts the unicode decomposition
+ of filenames done by Mac OS. This is useful when sharing a repository
+ between Mac OS and Linux or Windows.
+ (Git for Windows 1.7.10 or higher is needed, or Git under cygwin 1.7).
+ When false, file names are handled fully transparent by Git,
+ which is backward compatible with older versions of Git.
+
+ core.protectHFS::
+ If set to true, do not allow checkout of paths that would
+ be considered equivalent to `.git` on an HFS+ filesystem.
+ Defaults to `true` on Mac OS, and `false` elsewhere.
+
+ core.protectNTFS::
+ If set to true, do not allow checkout of paths that would
+ cause problems with the NTFS filesystem, e.g. conflict with
+ 8.3 "short" names.
+ Defaults to `true` on Windows, and `false` elsewhere.
+
+ core.fsmonitor::
+ If set, the value of this variable is used as a command which
+ will identify all files that may have changed since the
+ requested date/time. This information is used to speed up git by
+ avoiding unnecessary processing of files that have not changed.
+ See the "fsmonitor-watchman" section of linkgit:githooks[5].
+
+ core.trustctime::
+ If false, the ctime differences between the index and the
+ working tree are ignored; useful when the inode change time
+ is regularly modified by something outside Git (file system
+ crawlers and some backup systems).
+ See linkgit:git-update-index[1]. True by default.
+
+ core.splitIndex::
+ If true, the split-index feature of the index will be used.
+ See linkgit:git-update-index[1]. False by default.
+
+ core.untrackedCache::
+ Determines what to do about the untracked cache feature of the
+ index. It will be kept, if this variable is unset or set to
+ `keep`. It will automatically be added if set to `true`. And
+ it will automatically be removed, if set to `false`. Before
+ setting it to `true`, you should check that mtime is working
+ properly on your system.
+ See linkgit:git-update-index[1]. `keep` by default.
+
+ core.checkStat::
+ When missing or is set to `default`, many fields in the stat
+ structure are checked to detect if a file has been modified
+ since Git looked at it. When this configuration variable is
+ set to `minimal`, sub-second part of mtime and ctime, the
+ uid and gid of the owner of the file, the inode number (and
+ the device number, if Git was compiled to use it), are
+ excluded from the check among these fields, leaving only the
+ whole-second part of mtime (and ctime, if `core.trustCtime`
+ is set) and the filesize to be checked.
+ +
+ There are implementations of Git that do not leave usable values in
+ some fields (e.g. JGit); by excluding these fields from the
+ comparison, the `minimal` mode may help interoperability when the
+ same repository is used by these other systems at the same time.
+
+ core.quotePath::
+ Commands that output paths (e.g. 'ls-files', 'diff'), will
+ quote "unusual" characters in the pathname by enclosing the
+ pathname in double-quotes and escaping those characters with
+ backslashes in the same way C escapes control characters (e.g.
+ `\t` for TAB, `\n` for LF, `\\` for backslash) or bytes with
+ values larger than 0x80 (e.g. octal `\302\265` for "micro" in
+ UTF-8). If this variable is set to false, bytes higher than
+ 0x80 are not considered "unusual" any more. Double-quotes,
+ backslash and control characters are always escaped regardless
+ of the setting of this variable. A simple space character is
+ not considered "unusual". Many commands can output pathnames
+ completely verbatim using the `-z` option. The default value
+ is true.
+
+ core.eol::
+ Sets the line ending type to use in the working directory for
+ files that have the `text` property set when core.autocrlf is false.
+ Alternatives are 'lf', 'crlf' and 'native', which uses the platform's
+ native line ending. The default value is `native`. See
+ linkgit:gitattributes[5] for more information on end-of-line
+ conversion.
+
+ core.safecrlf::
+ If true, makes Git check if converting `CRLF` is reversible when
+ end-of-line conversion is active. Git will verify if a command
+ modifies a file in the work tree either directly or indirectly.
+ For example, committing a file followed by checking out the
+ same file should yield the original file in the work tree. If
+ this is not the case for the current setting of
+ `core.autocrlf`, Git will reject the file. The variable can
+ be set to "warn", in which case Git will only warn about an
+ irreversible conversion but continue the operation.
+ +
+ CRLF conversion bears a slight chance of corrupting data.
+ When it is enabled, Git will convert CRLF to LF during commit and LF to
+ CRLF during checkout. A file that contains a mixture of LF and
+ CRLF before the commit cannot be recreated by Git. For text
+ files this is the right thing to do: it corrects line endings
+ such that we have only LF line endings in the repository.
+ But for binary files that are accidentally classified as text the
+ conversion can corrupt data.
+ +
+ If you recognize such corruption early you can easily fix it by
+ setting the conversion type explicitly in .gitattributes. Right
+ after committing you still have the original file in your work
+ tree and this file is not yet corrupted. You can explicitly tell
+ Git that this file is binary and Git will handle the file
+ appropriately.
+ +
+ Unfortunately, the desired effect of cleaning up text files with
+ mixed line endings and the undesired effect of corrupting binary
+ files cannot be distinguished. In both cases CRLFs are removed
+ in an irreversible way. For text files this is the right thing
+ to do because CRLFs are line endings, while for binary files
+ converting CRLFs corrupts data.
+ +
+ Note, this safety check does not mean that a checkout will generate a
+ file identical to the original file for a different setting of
+ `core.eol` and `core.autocrlf`, but only for the current one. For
+ example, a text file with `LF` would be accepted with `core.eol=lf`
+ and could later be checked out with `core.eol=crlf`, in which case the
+ resulting file would contain `CRLF`, although the original file
+ contained `LF`. However, in both work trees the line endings would be
+ consistent, that is either all `LF` or all `CRLF`, but never mixed. A
+ file with mixed line endings would be reported by the `core.safecrlf`
+ mechanism.
+
+ core.autocrlf::
+ Setting this variable to "true" is the same as setting
+ the `text` attribute to "auto" on all files and core.eol to "crlf".
+ Set to true if you want to have `CRLF` line endings in your
+ working directory and the repository has LF line endings.
+ This variable can be set to 'input',
+ in which case no output conversion is performed.
+
+ core.checkRoundtripEncoding::
+ A comma and/or whitespace separated list of encodings that Git
+ performs UTF-8 round trip checks on if they are used in an
+ `working-tree-encoding` attribute (see linkgit:gitattributes[5]).
+ The default value is `SHIFT-JIS`.
+
+ core.symlinks::
+ If false, symbolic links are checked out as small plain files that
+ contain the link text. linkgit:git-update-index[1] and
+ linkgit:git-add[1] will not change the recorded type to regular
+ file. Useful on filesystems like FAT that do not support
+ symbolic links.
+ +
+ The default is true, except linkgit:git-clone[1] or linkgit:git-init[1]
+ will probe and set core.symlinks false if appropriate when the repository
+ is created.
+
+ core.gitProxy::
+ A "proxy command" to execute (as 'command host port') instead
+ of establishing direct connection to the remote server when
+ using the Git protocol for fetching. If the variable value is
+ in the "COMMAND for DOMAIN" format, the command is applied only
+ on hostnames ending with the specified domain string. This variable
+ may be set multiple times and is matched in the given order;
+ the first match wins.
+ +
+ Can be overridden by the `GIT_PROXY_COMMAND` environment variable
+ (which always applies universally, without the special "for"
+ handling).
+ +
+ The special string `none` can be used as the proxy command to
+ specify that no proxy be used for a given domain pattern.
+ This is useful for excluding servers inside a firewall from
+ proxy use, while defaulting to a common proxy for external domains.
+
+ core.sshCommand::
+ If this variable is set, `git fetch` and `git push` will
+ use the specified command instead of `ssh` when they need to
+ connect to a remote system. The command is in the same form as
+ the `GIT_SSH_COMMAND` environment variable and is overridden
+ when the environment variable is set.
+
+ core.ignoreStat::
+ If true, Git will avoid using lstat() calls to detect if files have
+ changed by setting the "assume-unchanged" bit for those tracked files
+ which it has updated identically in both the index and working tree.
+ +
+ When files are modified outside of Git, the user will need to stage
+ the modified files explicitly (e.g. see 'Examples' section in
+ linkgit:git-update-index[1]).
+ Git will not normally detect changes to those files.
+ +
+ This is useful on systems where lstat() calls are very slow, such as
+ CIFS/Microsoft Windows.
+ +
+ False by default.
+
+ core.preferSymlinkRefs::
+ Instead of the default "symref" format for HEAD
+ and other symbolic reference files, use symbolic links.
+ This is sometimes needed to work with old scripts that
+ expect HEAD to be a symbolic link.
+
+ core.alternateRefsCommand::
+ When advertising tips of available history from an alternate, use the shell to
+ execute the specified command instead of linkgit:git-for-each-ref[1]. The
+ first argument is the absolute path of the alternate. Output must contain one
++ hex object id per line (i.e., the same as produced by `git for-each-ref
+ --format='%(objectname)'`).
+ +
+ Note that you cannot generally put `git for-each-ref` directly into the config
+ value, as it does not take a repository path as an argument (but you can wrap
+ the command above in a shell script).
+
+ core.alternateRefsPrefixes::
+ When listing references from an alternate, list only references that begin
+ with the given prefix. Prefixes match as if they were given as arguments to
+ linkgit:git-for-each-ref[1]. To list multiple prefixes, separate them with
+ whitespace. If `core.alternateRefsCommand` is set, setting
+ `core.alternateRefsPrefixes` has no effect.
+
+ core.bare::
+ If true this repository is assumed to be 'bare' and has no
+ working directory associated with it. If this is the case a
+ number of commands that require a working directory will be
+ disabled, such as linkgit:git-add[1] or linkgit:git-merge[1].
+ +
+ This setting is automatically guessed by linkgit:git-clone[1] or
+ linkgit:git-init[1] when the repository was created. By default a
+ repository that ends in "/.git" is assumed to be not bare (bare =
+ false), while all other repositories are assumed to be bare (bare
+ = true).
+
+ core.worktree::
+ Set the path to the root of the working tree.
+ If `GIT_COMMON_DIR` environment variable is set, core.worktree
+ is ignored and not used for determining the root of working tree.
+ This can be overridden by the `GIT_WORK_TREE` environment
+ variable and the `--work-tree` command-line option.
+ The value can be an absolute path or relative to the path to
+ the .git directory, which is either specified by --git-dir
+ or GIT_DIR, or automatically discovered.
+ If --git-dir or GIT_DIR is specified but none of
+ --work-tree, GIT_WORK_TREE and core.worktree is specified,
+ the current working directory is regarded as the top level
+ of your working tree.
+ +
+ Note that this variable is honored even when set in a configuration
+ file in a ".git" subdirectory of a directory and its value differs
+ from the latter directory (e.g. "/path/to/.git/config" has
+ core.worktree set to "/different/path"), which is most likely a
+ misconfiguration. Running Git commands in the "/path/to" directory will
+ still use "/different/path" as the root of the work tree and can cause
+ confusion unless you know what you are doing (e.g. you are creating a
+ read-only snapshot of the same index to a location different from the
+ repository's usual working tree).
+
+ core.logAllRefUpdates::
+ Enable the reflog. Updates to a ref <ref> is logged to the file
+ "`$GIT_DIR/logs/<ref>`", by appending the new and old
+ SHA-1, the date/time and the reason of the update, but
+ only when the file exists. If this configuration
+ variable is set to `true`, missing "`$GIT_DIR/logs/<ref>`"
+ file is automatically created for branch heads (i.e. under
+ `refs/heads/`), remote refs (i.e. under `refs/remotes/`),
+ note refs (i.e. under `refs/notes/`), and the symbolic ref `HEAD`.
+ If it is set to `always`, then a missing reflog is automatically
+ created for any ref under `refs/`.
+ +
+ This information can be used to determine what commit
+ was the tip of a branch "2 days ago".
+ +
+ This value is true by default in a repository that has
+ a working directory associated with it, and false by
+ default in a bare repository.
+
+ core.repositoryFormatVersion::
+ Internal variable identifying the repository format and layout
+ version.
+
+ core.sharedRepository::
+ When 'group' (or 'true'), the repository is made shareable between
+ several users in a group (making sure all the files and objects are
+ group-writable). When 'all' (or 'world' or 'everybody'), the
+ repository will be readable by all users, additionally to being
+ group-shareable. When 'umask' (or 'false'), Git will use permissions
+ reported by umask(2). When '0xxx', where '0xxx' is an octal number,
+ files in the repository will have this mode value. '0xxx' will override
+ user's umask value (whereas the other options will only override
+ requested parts of the user's umask value). Examples: '0660' will make
+ the repo read/write-able for the owner and group, but inaccessible to
+ others (equivalent to 'group' unless umask is e.g. '0022'). '0640' is a
+ repository that is group-readable but not group-writable.
+ See linkgit:git-init[1]. False by default.
+
+ core.warnAmbiguousRefs::
+ If true, Git will warn you if the ref name you passed it is ambiguous
+ and might match multiple refs in the repository. True by default.
+
+ core.compression::
+ An integer -1..9, indicating a default compression level.
+ -1 is the zlib default. 0 means no compression,
+ and 1..9 are various speed/size tradeoffs, 9 being slowest.
+ If set, this provides a default to other compression variables,
+ such as `core.looseCompression` and `pack.compression`.
+
+ core.looseCompression::
+ An integer -1..9, indicating the compression level for objects that
+ are not in a pack file. -1 is the zlib default. 0 means no
+ compression, and 1..9 are various speed/size tradeoffs, 9 being
+ slowest. If not set, defaults to core.compression. If that is
+ not set, defaults to 1 (best speed).
+
+ core.packedGitWindowSize::
+ Number of bytes of a pack file to map into memory in a
+ single mapping operation. Larger window sizes may allow
+ your system to process a smaller number of large pack files
+ more quickly. Smaller window sizes will negatively affect
+ performance due to increased calls to the operating system's
+ memory manager, but may improve performance when accessing
+ a large number of large pack files.
+ +
+ Default is 1 MiB if NO_MMAP was set at compile time, otherwise 32
+ MiB on 32 bit platforms and 1 GiB on 64 bit platforms. This should
+ be reasonable for all users/operating systems. You probably do
+ not need to adjust this value.
+ +
+ Common unit suffixes of 'k', 'm', or 'g' are supported.
+
+ core.packedGitLimit::
+ Maximum number of bytes to map simultaneously into memory
+ from pack files. If Git needs to access more than this many
+ bytes at once to complete an operation it will unmap existing
+ regions to reclaim virtual address space within the process.
+ +
+ Default is 256 MiB on 32 bit platforms and 32 TiB (effectively
+ unlimited) on 64 bit platforms.
+ This should be reasonable for all users/operating systems, except on
+ the largest projects. You probably do not need to adjust this value.
+ +
+ Common unit suffixes of 'k', 'm', or 'g' are supported.
+
+ core.deltaBaseCacheLimit::
+ Maximum number of bytes to reserve for caching base objects
+ that may be referenced by multiple deltified objects. By storing the
+ entire decompressed base objects in a cache Git is able
+ to avoid unpacking and decompressing frequently used base
+ objects multiple times.
+ +
+ Default is 96 MiB on all platforms. This should be reasonable
+ for all users/operating systems, except on the largest projects.
+ You probably do not need to adjust this value.
+ +
+ Common unit suffixes of 'k', 'm', or 'g' are supported.
+
+ core.bigFileThreshold::
+ Files larger than this size are stored deflated, without
+ attempting delta compression. Storing large files without
+ delta compression avoids excessive memory usage, at the
+ slight expense of increased disk usage. Additionally files
+ larger than this size are always treated as binary.
+ +
+ Default is 512 MiB on all platforms. This should be reasonable
+ for most projects as source code and other text files can still
+ be delta compressed, but larger binary media files won't be.
+ +
+ Common unit suffixes of 'k', 'm', or 'g' are supported.
+
+ core.excludesFile::
+ Specifies the pathname to the file that contains patterns to
+ describe paths that are not meant to be tracked, in addition
+ to '.gitignore' (per-directory) and '.git/info/exclude'.
+ Defaults to `$XDG_CONFIG_HOME/git/ignore`.
+ If `$XDG_CONFIG_HOME` is either not set or empty, `$HOME/.config/git/ignore`
+ is used instead. See linkgit:gitignore[5].
+
+ core.askPass::
+ Some commands (e.g. svn and http interfaces) that interactively
+ ask for a password can be told to use an external program given
+ via the value of this variable. Can be overridden by the `GIT_ASKPASS`
+ environment variable. If not set, fall back to the value of the
+ `SSH_ASKPASS` environment variable or, failing that, a simple password
+ prompt. The external program shall be given a suitable prompt as
+ command-line argument and write the password on its STDOUT.
+
+ core.attributesFile::
+ In addition to '.gitattributes' (per-directory) and
+ '.git/info/attributes', Git looks into this file for attributes
+ (see linkgit:gitattributes[5]). Path expansions are made the same
+ way as for `core.excludesFile`. Its default value is
+ `$XDG_CONFIG_HOME/git/attributes`. If `$XDG_CONFIG_HOME` is either not
+ set or empty, `$HOME/.config/git/attributes` is used instead.
+
+ core.hooksPath::
+ By default Git will look for your hooks in the
+ '$GIT_DIR/hooks' directory. Set this to different path,
+ e.g. '/etc/git/hooks', and Git will try to find your hooks in
+ that directory, e.g. '/etc/git/hooks/pre-receive' instead of
+ in '$GIT_DIR/hooks/pre-receive'.
+ +
+ The path can be either absolute or relative. A relative path is
+ taken as relative to the directory where the hooks are run (see
+ the "DESCRIPTION" section of linkgit:githooks[5]).
+ +
+ This configuration variable is useful in cases where you'd like to
+ centrally configure your Git hooks instead of configuring them on a
+ per-repository basis, or as a more flexible and centralized
+ alternative to having an `init.templateDir` where you've changed
+ default hooks.
+
+ core.editor::
+ Commands such as `commit` and `tag` that let you edit
+ messages by launching an editor use the value of this
+ variable when it is set, and the environment variable
+ `GIT_EDITOR` is not set. See linkgit:git-var[1].
+
+ core.commentChar::
+ Commands such as `commit` and `tag` that let you edit
+ messages consider a line that begins with this character
+ commented, and removes them after the editor returns
+ (default '#').
+ +
+ If set to "auto", `git-commit` would select a character that is not
+ the beginning character of any line in existing commit messages.
+
+ core.filesRefLockTimeout::
+ The length of time, in milliseconds, to retry when trying to
+ lock an individual reference. Value 0 means not to retry at
+ all; -1 means to try indefinitely. Default is 100 (i.e.,
+ retry for 100ms).
+
+ core.packedRefsTimeout::
+ The length of time, in milliseconds, to retry when trying to
+ lock the `packed-refs` file. Value 0 means not to retry at
+ all; -1 means to try indefinitely. Default is 1000 (i.e.,
+ retry for 1 second).
+
+ core.pager::
+ Text viewer for use by Git commands (e.g., 'less'). The value
+ is meant to be interpreted by the shell. The order of preference
+ is the `$GIT_PAGER` environment variable, then `core.pager`
+ configuration, then `$PAGER`, and then the default chosen at
+ compile time (usually 'less').
+ +
+ When the `LESS` environment variable is unset, Git sets it to `FRX`
+ (if `LESS` environment variable is set, Git does not change it at
+ all). If you want to selectively override Git's default setting
+ for `LESS`, you can set `core.pager` to e.g. `less -S`. This will
+ be passed to the shell by Git, which will translate the final
+ command to `LESS=FRX less -S`. The environment does not set the
+ `S` option but the command line does, instructing less to truncate
+ long lines. Similarly, setting `core.pager` to `less -+F` will
+ deactivate the `F` option specified by the environment from the
+ command-line, deactivating the "quit if one screen" behavior of
+ `less`. One can specifically activate some flags for particular
+ commands: for example, setting `pager.blame` to `less -S` enables
+ line truncation only for `git blame`.
+ +
+ Likewise, when the `LV` environment variable is unset, Git sets it
+ to `-c`. You can override this setting by exporting `LV` with
+ another value or setting `core.pager` to `lv +c`.
+
+ core.whitespace::
+ A comma separated list of common whitespace problems to
+ notice. 'git diff' will use `color.diff.whitespace` to
+ highlight them, and 'git apply --whitespace=error' will
+ consider them as errors. You can prefix `-` to disable
+ any of them (e.g. `-trailing-space`):
+ +
+ * `blank-at-eol` treats trailing whitespaces at the end of the line
+ as an error (enabled by default).
+ * `space-before-tab` treats a space character that appears immediately
+ before a tab character in the initial indent part of the line as an
+ error (enabled by default).
+ * `indent-with-non-tab` treats a line that is indented with space
+ characters instead of the equivalent tabs as an error (not enabled by
+ default).
+ * `tab-in-indent` treats a tab character in the initial indent part of
+ the line as an error (not enabled by default).
+ * `blank-at-eof` treats blank lines added at the end of file as an error
+ (enabled by default).
+ * `trailing-space` is a short-hand to cover both `blank-at-eol` and
+ `blank-at-eof`.
+ * `cr-at-eol` treats a carriage-return at the end of line as
+ part of the line terminator, i.e. with it, `trailing-space`
+ does not trigger if the character before such a carriage-return
+ is not a whitespace (not enabled by default).
+ * `tabwidth=<n>` tells how many character positions a tab occupies; this
+ is relevant for `indent-with-non-tab` and when Git fixes `tab-in-indent`
+ errors. The default tab width is 8. Allowed values are 1 to 63.
+
+ core.fsyncObjectFiles::
+ This boolean will enable 'fsync()' when writing object files.
+ +
+ This is a total waste of time and effort on a filesystem that orders
+ data writes properly, but can be useful for filesystems that do not use
+ journalling (traditional UNIX filesystems) or that only journal metadata
+ and not file contents (OS X's HFS+, or Linux ext3 with "data=writeback").
+
+ core.preloadIndex::
+ Enable parallel index preload for operations like 'git diff'
+ +
+ This can speed up operations like 'git diff' and 'git status' especially
+ on filesystems like NFS that have weak caching semantics and thus
+ relatively high IO latencies. When enabled, Git will do the
+ index comparison to the filesystem data in parallel, allowing
+ overlapping IO's. Defaults to true.
+
+ core.createObject::
+ You can set this to 'link', in which case a hardlink followed by
+ a delete of the source are used to make sure that object creation
+ will not overwrite existing objects.
+ +
+ On some file system/operating system combinations, this is unreliable.
+ Set this config setting to 'rename' there; However, This will remove the
+ check that makes sure that existing object files will not get overwritten.
+
+ core.notesRef::
+ When showing commit messages, also show notes which are stored in
+ the given ref. The ref must be fully qualified. If the given
+ ref does not exist, it is not an error but means that no
+ notes should be printed.
+ +
+ This setting defaults to "refs/notes/commits", and it can be overridden by
+ the `GIT_NOTES_REF` environment variable. See linkgit:git-notes[1].
+
+ core.commitGraph::
+ If true, then git will read the commit-graph file (if it exists)
+ to parse the graph structure of commits. Defaults to false. See
+ linkgit:git-commit-graph[1] for more information.
+
+ core.useReplaceRefs::
+ If set to `false`, behave as if the `--no-replace-objects`
+ option was given on the command line. See linkgit:git[1] and
+ linkgit:git-replace[1] for more information.
+
+ core.multiPackIndex::
+ Use the multi-pack-index file to track multiple packfiles using a
+ single index. See link:technical/multi-pack-index.html[the
+ multi-pack-index design document].
+
+ core.sparseCheckout::
+ Enable "sparse checkout" feature. See section "Sparse checkout" in
+ linkgit:git-read-tree[1] for more information.
+
+ core.abbrev::
+ Set the length object names are abbreviated to. If
+ unspecified or set to "auto", an appropriate value is
+ computed based on the approximate number of packed objects
+ in your repository, which hopefully is enough for
+ abbreviated object names to stay unique for some time.
+ The minimum length is 4.
--- /dev/null
+ diff.autoRefreshIndex::
+ When using 'git diff' to compare with work tree
+ files, do not consider stat-only change 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::
+ A comma separated list of `--dirstat` parameters specifying the
+ default behavior of the `--dirstat` option to linkgit:git-diff[1]`
+ and friends. The defaults can be overridden on the command line
+ (using `--dirstat=<param1,param2,...>`). 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.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.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' also honors
+ 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.
+
+ 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 (1) and (2).
+
+ diff.noprefix::
+ If set, 'git diff' does not show any source or destination prefix.
+
+ diff.orderFile::
+ File indicating how to order files within a diff.
+ See the '-O' option to linkgit:git-diff[1] for details.
+ 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 when performing the copy/rename
+ detection; equivalent to the 'git diff' option `-l`. 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>.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.tool::
+ Controls which diff tool is used by linkgit:git-difftool[1].
+ This variable overrides the value configured in `merge.tool`.
+ The list below shows the valid built-in values.
+ Any other value is treated as a custom diff tool and requires
+ that a corresponding difftool.<tool>.cmd variable is defined.
+
++diff.guitool::
++ Controls which diff tool is used by linkgit:git-difftool[1] when
++ the -g/--gui flag is specified. This variable overrides the value
++ configured in `merge.guitool`. The list below shows the valid
++ built-in values. Any other value is treated as a custom diff tool
++ and requires that a corresponding difftool.<guitool>.cmd variable
++ is defined.
++
+ include::../mergetools-diff.txt[]
+
+ diff.indentHeuristic::
+ Set this option to `true` to enable experimental 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, for details of valid modes
+ see '--color-moved' in linkgit:git-diff[1]. 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].