Documentation / config / core.txton commit Merge branch 'sg/test-atexit' (579b75a)
   1core.fileMode::
   2        Tells Git if the executable bit of files in the working tree
   3        is to be honored.
   4+
   5Some filesystems lose the executable bit when a file that is
   6marked as executable is checked out, or checks out a
   7non-executable file with executable bit on.
   8linkgit:git-clone[1] or linkgit:git-init[1] probe the filesystem
   9to see if it handles the executable bit correctly
  10and this variable is automatically set as necessary.
  11+
  12A repository, however, may be on a filesystem that handles
  13the filemode correctly, and this variable is set to 'true'
  14when created, but later may be made accessible from another
  15environment that loses the filemode (e.g. exporting ext4 via
  16CIFS mount, visiting a Cygwin created repository with
  17Git for Windows or Eclipse).
  18In such a case it may be necessary to set this variable to 'false'.
  19See linkgit:git-update-index[1].
  20+
  21The default is true (when core.filemode is not specified in the config file).
  22
  23core.hideDotFiles::
  24        (Windows-only) If true, mark newly-created directories and files whose
  25        name starts with a dot as hidden.  If 'dotGitOnly', only the `.git/`
  26        directory is hidden, but no other files starting with a dot.  The
  27        default mode is 'dotGitOnly'.
  28
  29core.ignoreCase::
  30        Internal variable which enables various workarounds to enable
  31        Git to work better on filesystems that are not case sensitive,
  32        like APFS, HFS+, FAT, NTFS, etc. For example, if a directory listing
  33        finds "makefile" when Git expects "Makefile", Git will assume
  34        it is really the same file, and continue to remember it as
  35        "Makefile".
  36+
  37The default is false, except linkgit:git-clone[1] or linkgit:git-init[1]
  38will probe and set core.ignoreCase true if appropriate when the repository
  39is created.
  40+
  41Git relies on the proper configuration of this variable for your operating
  42and file system. Modifying this value may result in unexpected behavior.
  43
  44core.precomposeUnicode::
  45        This option is only used by Mac OS implementation of Git.
  46        When core.precomposeUnicode=true, Git reverts the unicode decomposition
  47        of filenames done by Mac OS. This is useful when sharing a repository
  48        between Mac OS and Linux or Windows.
  49        (Git for Windows 1.7.10 or higher is needed, or Git under cygwin 1.7).
  50        When false, file names are handled fully transparent by Git,
  51        which is backward compatible with older versions of Git.
  52
  53core.protectHFS::
  54        If set to true, do not allow checkout of paths that would
  55        be considered equivalent to `.git` on an HFS+ filesystem.
  56        Defaults to `true` on Mac OS, and `false` elsewhere.
  57
  58core.protectNTFS::
  59        If set to true, do not allow checkout of paths that would
  60        cause problems with the NTFS filesystem, e.g. conflict with
  61        8.3 "short" names.
  62        Defaults to `true` on Windows, and `false` elsewhere.
  63
  64core.fsmonitor::
  65        If set, the value of this variable is used as a command which
  66        will identify all files that may have changed since the
  67        requested date/time. This information is used to speed up git by
  68        avoiding unnecessary processing of files that have not changed.
  69        See the "fsmonitor-watchman" section of linkgit:githooks[5].
  70
  71core.trustctime::
  72        If false, the ctime differences between the index and the
  73        working tree are ignored; useful when the inode change time
  74        is regularly modified by something outside Git (file system
  75        crawlers and some backup systems).
  76        See linkgit:git-update-index[1]. True by default.
  77
  78core.splitIndex::
  79        If true, the split-index feature of the index will be used.
  80        See linkgit:git-update-index[1]. False by default.
  81
  82core.untrackedCache::
  83        Determines what to do about the untracked cache feature of the
  84        index. It will be kept, if this variable is unset or set to
  85        `keep`. It will automatically be added if set to `true`. And
  86        it will automatically be removed, if set to `false`. Before
  87        setting it to `true`, you should check that mtime is working
  88        properly on your system.
  89        See linkgit:git-update-index[1]. `keep` by default.
  90
  91core.checkStat::
  92        When missing or is set to `default`, many fields in the stat
  93        structure are checked to detect if a file has been modified
  94        since Git looked at it.  When this configuration variable is
  95        set to `minimal`, sub-second part of mtime and ctime, the
  96        uid and gid of the owner of the file, the inode number (and
  97        the device number, if Git was compiled to use it), are
  98        excluded from the check among these fields, leaving only the
  99        whole-second part of mtime (and ctime, if `core.trustCtime`
 100        is set) and the filesize to be checked.
 101+
 102There are implementations of Git that do not leave usable values in
 103some fields (e.g. JGit); by excluding these fields from the
 104comparison, the `minimal` mode may help interoperability when the
 105same repository is used by these other systems at the same time.
 106
 107core.quotePath::
 108        Commands that output paths (e.g. 'ls-files', 'diff'), will
 109        quote "unusual" characters in the pathname by enclosing the
 110        pathname in double-quotes and escaping those characters with
 111        backslashes in the same way C escapes control characters (e.g.
 112        `\t` for TAB, `\n` for LF, `\\` for backslash) or bytes with
 113        values larger than 0x80 (e.g. octal `\302\265` for "micro" in
 114        UTF-8).  If this variable is set to false, bytes higher than
 115        0x80 are not considered "unusual" any more. Double-quotes,
 116        backslash and control characters are always escaped regardless
 117        of the setting of this variable.  A simple space character is
 118        not considered "unusual".  Many commands can output pathnames
 119        completely verbatim using the `-z` option. The default value
 120        is true.
 121
 122core.eol::
 123        Sets the line ending type to use in the working directory for
 124        files that are marked as text (either by having the `text`
 125        attribute set, or by having `text=auto` and Git auto-detecting
 126        the contents as text).
 127        Alternatives are 'lf', 'crlf' and 'native', which uses the platform's
 128        native line ending.  The default value is `native`.  See
 129        linkgit:gitattributes[5] for more information on end-of-line
 130        conversion. Note that this value is ignored if `core.autocrlf`
 131        is set to `true` or `input`.
 132
 133core.safecrlf::
 134        If true, makes Git check if converting `CRLF` is reversible when
 135        end-of-line conversion is active.  Git will verify if a command
 136        modifies a file in the work tree either directly or indirectly.
 137        For example, committing a file followed by checking out the
 138        same file should yield the original file in the work tree.  If
 139        this is not the case for the current setting of
 140        `core.autocrlf`, Git will reject the file.  The variable can
 141        be set to "warn", in which case Git will only warn about an
 142        irreversible conversion but continue the operation.
 143+
 144CRLF conversion bears a slight chance of corrupting data.
 145When it is enabled, Git will convert CRLF to LF during commit and LF to
 146CRLF during checkout.  A file that contains a mixture of LF and
 147CRLF before the commit cannot be recreated by Git.  For text
 148files this is the right thing to do: it corrects line endings
 149such that we have only LF line endings in the repository.
 150But for binary files that are accidentally classified as text the
 151conversion can corrupt data.
 152+
 153If you recognize such corruption early you can easily fix it by
 154setting the conversion type explicitly in .gitattributes.  Right
 155after committing you still have the original file in your work
 156tree and this file is not yet corrupted.  You can explicitly tell
 157Git that this file is binary and Git will handle the file
 158appropriately.
 159+
 160Unfortunately, the desired effect of cleaning up text files with
 161mixed line endings and the undesired effect of corrupting binary
 162files cannot be distinguished.  In both cases CRLFs are removed
 163in an irreversible way.  For text files this is the right thing
 164to do because CRLFs are line endings, while for binary files
 165converting CRLFs corrupts data.
 166+
 167Note, this safety check does not mean that a checkout will generate a
 168file identical to the original file for a different setting of
 169`core.eol` and `core.autocrlf`, but only for the current one.  For
 170example, a text file with `LF` would be accepted with `core.eol=lf`
 171and could later be checked out with `core.eol=crlf`, in which case the
 172resulting file would contain `CRLF`, although the original file
 173contained `LF`.  However, in both work trees the line endings would be
 174consistent, that is either all `LF` or all `CRLF`, but never mixed.  A
 175file with mixed line endings would be reported by the `core.safecrlf`
 176mechanism.
 177
 178core.autocrlf::
 179        Setting this variable to "true" is the same as setting
 180        the `text` attribute to "auto" on all files and core.eol to "crlf".
 181        Set to true if you want to have `CRLF` line endings in your
 182        working directory and the repository has LF line endings.
 183        This variable can be set to 'input',
 184        in which case no output conversion is performed.
 185
 186core.checkRoundtripEncoding::
 187        A comma and/or whitespace separated list of encodings that Git
 188        performs UTF-8 round trip checks on if they are used in an
 189        `working-tree-encoding` attribute (see linkgit:gitattributes[5]).
 190        The default value is `SHIFT-JIS`.
 191
 192core.symlinks::
 193        If false, symbolic links are checked out as small plain files that
 194        contain the link text. linkgit:git-update-index[1] and
 195        linkgit:git-add[1] will not change the recorded type to regular
 196        file. Useful on filesystems like FAT that do not support
 197        symbolic links.
 198+
 199The default is true, except linkgit:git-clone[1] or linkgit:git-init[1]
 200will probe and set core.symlinks false if appropriate when the repository
 201is created.
 202
 203core.gitProxy::
 204        A "proxy command" to execute (as 'command host port') instead
 205        of establishing direct connection to the remote server when
 206        using the Git protocol for fetching. If the variable value is
 207        in the "COMMAND for DOMAIN" format, the command is applied only
 208        on hostnames ending with the specified domain string. This variable
 209        may be set multiple times and is matched in the given order;
 210        the first match wins.
 211+
 212Can be overridden by the `GIT_PROXY_COMMAND` environment variable
 213(which always applies universally, without the special "for"
 214handling).
 215+
 216The special string `none` can be used as the proxy command to
 217specify that no proxy be used for a given domain pattern.
 218This is useful for excluding servers inside a firewall from
 219proxy use, while defaulting to a common proxy for external domains.
 220
 221core.sshCommand::
 222        If this variable is set, `git fetch` and `git push` will
 223        use the specified command instead of `ssh` when they need to
 224        connect to a remote system. The command is in the same form as
 225        the `GIT_SSH_COMMAND` environment variable and is overridden
 226        when the environment variable is set.
 227
 228core.ignoreStat::
 229        If true, Git will avoid using lstat() calls to detect if files have
 230        changed by setting the "assume-unchanged" bit for those tracked files
 231        which it has updated identically in both the index and working tree.
 232+
 233When files are modified outside of Git, the user will need to stage
 234the modified files explicitly (e.g. see 'Examples' section in
 235linkgit:git-update-index[1]).
 236Git will not normally detect changes to those files.
 237+
 238This is useful on systems where lstat() calls are very slow, such as
 239CIFS/Microsoft Windows.
 240+
 241False by default.
 242
 243core.preferSymlinkRefs::
 244        Instead of the default "symref" format for HEAD
 245        and other symbolic reference files, use symbolic links.
 246        This is sometimes needed to work with old scripts that
 247        expect HEAD to be a symbolic link.
 248
 249core.alternateRefsCommand::
 250        When advertising tips of available history from an alternate, use the shell to
 251        execute the specified command instead of linkgit:git-for-each-ref[1]. The
 252        first argument is the absolute path of the alternate. Output must contain one
 253        hex object id per line (i.e., the same as produced by `git for-each-ref
 254        --format='%(objectname)'`).
 255+
 256Note that you cannot generally put `git for-each-ref` directly into the config
 257value, as it does not take a repository path as an argument (but you can wrap
 258the command above in a shell script).
 259
 260core.alternateRefsPrefixes::
 261        When listing references from an alternate, list only references that begin
 262        with the given prefix. Prefixes match as if they were given as arguments to
 263        linkgit:git-for-each-ref[1]. To list multiple prefixes, separate them with
 264        whitespace. If `core.alternateRefsCommand` is set, setting
 265        `core.alternateRefsPrefixes` has no effect.
 266
 267core.bare::
 268        If true this repository is assumed to be 'bare' and has no
 269        working directory associated with it.  If this is the case a
 270        number of commands that require a working directory will be
 271        disabled, such as linkgit:git-add[1] or linkgit:git-merge[1].
 272+
 273This setting is automatically guessed by linkgit:git-clone[1] or
 274linkgit:git-init[1] when the repository was created.  By default a
 275repository that ends in "/.git" is assumed to be not bare (bare =
 276false), while all other repositories are assumed to be bare (bare
 277= true).
 278
 279core.worktree::
 280        Set the path to the root of the working tree.
 281        If `GIT_COMMON_DIR` environment variable is set, core.worktree
 282        is ignored and not used for determining the root of working tree.
 283        This can be overridden by the `GIT_WORK_TREE` environment
 284        variable and the `--work-tree` command-line option.
 285        The value can be an absolute path or relative to the path to
 286        the .git directory, which is either specified by --git-dir
 287        or GIT_DIR, or automatically discovered.
 288        If --git-dir or GIT_DIR is specified but none of
 289        --work-tree, GIT_WORK_TREE and core.worktree is specified,
 290        the current working directory is regarded as the top level
 291        of your working tree.
 292+
 293Note that this variable is honored even when set in a configuration
 294file in a ".git" subdirectory of a directory and its value differs
 295from the latter directory (e.g. "/path/to/.git/config" has
 296core.worktree set to "/different/path"), which is most likely a
 297misconfiguration.  Running Git commands in the "/path/to" directory will
 298still use "/different/path" as the root of the work tree and can cause
 299confusion unless you know what you are doing (e.g. you are creating a
 300read-only snapshot of the same index to a location different from the
 301repository's usual working tree).
 302
 303core.logAllRefUpdates::
 304        Enable the reflog. Updates to a ref <ref> is logged to the file
 305        "`$GIT_DIR/logs/<ref>`", by appending the new and old
 306        SHA-1, the date/time and the reason of the update, but
 307        only when the file exists.  If this configuration
 308        variable is set to `true`, missing "`$GIT_DIR/logs/<ref>`"
 309        file is automatically created for branch heads (i.e. under
 310        `refs/heads/`), remote refs (i.e. under `refs/remotes/`),
 311        note refs (i.e. under `refs/notes/`), and the symbolic ref `HEAD`.
 312        If it is set to `always`, then a missing reflog is automatically
 313        created for any ref under `refs/`.
 314+
 315This information can be used to determine what commit
 316was the tip of a branch "2 days ago".
 317+
 318This value is true by default in a repository that has
 319a working directory associated with it, and false by
 320default in a bare repository.
 321
 322core.repositoryFormatVersion::
 323        Internal variable identifying the repository format and layout
 324        version.
 325
 326core.sharedRepository::
 327        When 'group' (or 'true'), the repository is made shareable between
 328        several users in a group (making sure all the files and objects are
 329        group-writable). When 'all' (or 'world' or 'everybody'), the
 330        repository will be readable by all users, additionally to being
 331        group-shareable. When 'umask' (or 'false'), Git will use permissions
 332        reported by umask(2). When '0xxx', where '0xxx' is an octal number,
 333        files in the repository will have this mode value. '0xxx' will override
 334        user's umask value (whereas the other options will only override
 335        requested parts of the user's umask value). Examples: '0660' will make
 336        the repo read/write-able for the owner and group, but inaccessible to
 337        others (equivalent to 'group' unless umask is e.g. '0022'). '0640' is a
 338        repository that is group-readable but not group-writable.
 339        See linkgit:git-init[1]. False by default.
 340
 341core.warnAmbiguousRefs::
 342        If true, Git will warn you if the ref name you passed it is ambiguous
 343        and might match multiple refs in the repository. True by default.
 344
 345core.compression::
 346        An integer -1..9, indicating a default compression level.
 347        -1 is the zlib default. 0 means no compression,
 348        and 1..9 are various speed/size tradeoffs, 9 being slowest.
 349        If set, this provides a default to other compression variables,
 350        such as `core.looseCompression` and `pack.compression`.
 351
 352core.looseCompression::
 353        An integer -1..9, indicating the compression level for objects that
 354        are not in a pack file. -1 is the zlib default. 0 means no
 355        compression, and 1..9 are various speed/size tradeoffs, 9 being
 356        slowest.  If not set,  defaults to core.compression.  If that is
 357        not set,  defaults to 1 (best speed).
 358
 359core.packedGitWindowSize::
 360        Number of bytes of a pack file to map into memory in a
 361        single mapping operation.  Larger window sizes may allow
 362        your system to process a smaller number of large pack files
 363        more quickly.  Smaller window sizes will negatively affect
 364        performance due to increased calls to the operating system's
 365        memory manager, but may improve performance when accessing
 366        a large number of large pack files.
 367+
 368Default is 1 MiB if NO_MMAP was set at compile time, otherwise 32
 369MiB on 32 bit platforms and 1 GiB on 64 bit platforms.  This should
 370be reasonable for all users/operating systems.  You probably do
 371not need to adjust this value.
 372+
 373Common unit suffixes of 'k', 'm', or 'g' are supported.
 374
 375core.packedGitLimit::
 376        Maximum number of bytes to map simultaneously into memory
 377        from pack files.  If Git needs to access more than this many
 378        bytes at once to complete an operation it will unmap existing
 379        regions to reclaim virtual address space within the process.
 380+
 381Default is 256 MiB on 32 bit platforms and 32 TiB (effectively
 382unlimited) on 64 bit platforms.
 383This should be reasonable for all users/operating systems, except on
 384the largest projects.  You probably do not need to adjust this value.
 385+
 386Common unit suffixes of 'k', 'm', or 'g' are supported.
 387
 388core.deltaBaseCacheLimit::
 389        Maximum number of bytes to reserve for caching base objects
 390        that may be referenced by multiple deltified objects.  By storing the
 391        entire decompressed base objects in a cache Git is able
 392        to avoid unpacking and decompressing frequently used base
 393        objects multiple times.
 394+
 395Default is 96 MiB on all platforms.  This should be reasonable
 396for all users/operating systems, except on the largest projects.
 397You probably do not need to adjust this value.
 398+
 399Common unit suffixes of 'k', 'm', or 'g' are supported.
 400
 401core.bigFileThreshold::
 402        Files larger than this size are stored deflated, without
 403        attempting delta compression.  Storing large files without
 404        delta compression avoids excessive memory usage, at the
 405        slight expense of increased disk usage. Additionally files
 406        larger than this size are always treated as binary.
 407+
 408Default is 512 MiB on all platforms.  This should be reasonable
 409for most projects as source code and other text files can still
 410be delta compressed, but larger binary media files won't be.
 411+
 412Common unit suffixes of 'k', 'm', or 'g' are supported.
 413
 414core.excludesFile::
 415        Specifies the pathname to the file that contains patterns to
 416        describe paths that are not meant to be tracked, in addition
 417        to `.gitignore` (per-directory) and `.git/info/exclude`.
 418        Defaults to `$XDG_CONFIG_HOME/git/ignore`.
 419        If `$XDG_CONFIG_HOME` is either not set or empty, `$HOME/.config/git/ignore`
 420        is used instead. See linkgit:gitignore[5].
 421
 422core.askPass::
 423        Some commands (e.g. svn and http interfaces) that interactively
 424        ask for a password can be told to use an external program given
 425        via the value of this variable. Can be overridden by the `GIT_ASKPASS`
 426        environment variable. If not set, fall back to the value of the
 427        `SSH_ASKPASS` environment variable or, failing that, a simple password
 428        prompt. The external program shall be given a suitable prompt as
 429        command-line argument and write the password on its STDOUT.
 430
 431core.attributesFile::
 432        In addition to `.gitattributes` (per-directory) and
 433        `.git/info/attributes`, Git looks into this file for attributes
 434        (see linkgit:gitattributes[5]). Path expansions are made the same
 435        way as for `core.excludesFile`. Its default value is
 436        `$XDG_CONFIG_HOME/git/attributes`. If `$XDG_CONFIG_HOME` is either not
 437        set or empty, `$HOME/.config/git/attributes` is used instead.
 438
 439core.hooksPath::
 440        By default Git will look for your hooks in the
 441        `$GIT_DIR/hooks` directory. Set this to different path,
 442        e.g. `/etc/git/hooks`, and Git will try to find your hooks in
 443        that directory, e.g. `/etc/git/hooks/pre-receive` instead of
 444        in `$GIT_DIR/hooks/pre-receive`.
 445+
 446The path can be either absolute or relative. A relative path is
 447taken as relative to the directory where the hooks are run (see
 448the "DESCRIPTION" section of linkgit:githooks[5]).
 449+
 450This configuration variable is useful in cases where you'd like to
 451centrally configure your Git hooks instead of configuring them on a
 452per-repository basis, or as a more flexible and centralized
 453alternative to having an `init.templateDir` where you've changed
 454default hooks.
 455
 456core.editor::
 457        Commands such as `commit` and `tag` that let you edit
 458        messages by launching an editor use the value of this
 459        variable when it is set, and the environment variable
 460        `GIT_EDITOR` is not set.  See linkgit:git-var[1].
 461
 462core.commentChar::
 463        Commands such as `commit` and `tag` that let you edit
 464        messages consider a line that begins with this character
 465        commented, and removes them after the editor returns
 466        (default '#').
 467+
 468If set to "auto", `git-commit` would select a character that is not
 469the beginning character of any line in existing commit messages.
 470
 471core.filesRefLockTimeout::
 472        The length of time, in milliseconds, to retry when trying to
 473        lock an individual reference. Value 0 means not to retry at
 474        all; -1 means to try indefinitely. Default is 100 (i.e.,
 475        retry for 100ms).
 476
 477core.packedRefsTimeout::
 478        The length of time, in milliseconds, to retry when trying to
 479        lock the `packed-refs` file. Value 0 means not to retry at
 480        all; -1 means to try indefinitely. Default is 1000 (i.e.,
 481        retry for 1 second).
 482
 483core.pager::
 484        Text viewer for use by Git commands (e.g., 'less').  The value
 485        is meant to be interpreted by the shell.  The order of preference
 486        is the `$GIT_PAGER` environment variable, then `core.pager`
 487        configuration, then `$PAGER`, and then the default chosen at
 488        compile time (usually 'less').
 489+
 490When the `LESS` environment variable is unset, Git sets it to `FRX`
 491(if `LESS` environment variable is set, Git does not change it at
 492all).  If you want to selectively override Git's default setting
 493for `LESS`, you can set `core.pager` to e.g. `less -S`.  This will
 494be passed to the shell by Git, which will translate the final
 495command to `LESS=FRX less -S`. The environment does not set the
 496`S` option but the command line does, instructing less to truncate
 497long lines. Similarly, setting `core.pager` to `less -+F` will
 498deactivate the `F` option specified by the environment from the
 499command-line, deactivating the "quit if one screen" behavior of
 500`less`.  One can specifically activate some flags for particular
 501commands: for example, setting `pager.blame` to `less -S` enables
 502line truncation only for `git blame`.
 503+
 504Likewise, when the `LV` environment variable is unset, Git sets it
 505to `-c`.  You can override this setting by exporting `LV` with
 506another value or setting `core.pager` to `lv +c`.
 507
 508core.whitespace::
 509        A comma separated list of common whitespace problems to
 510        notice.  'git diff' will use `color.diff.whitespace` to
 511        highlight them, and 'git apply --whitespace=error' will
 512        consider them as errors.  You can prefix `-` to disable
 513        any of them (e.g. `-trailing-space`):
 514+
 515* `blank-at-eol` treats trailing whitespaces at the end of the line
 516  as an error (enabled by default).
 517* `space-before-tab` treats a space character that appears immediately
 518  before a tab character in the initial indent part of the line as an
 519  error (enabled by default).
 520* `indent-with-non-tab` treats a line that is indented with space
 521  characters instead of the equivalent tabs as an error (not enabled by
 522  default).
 523* `tab-in-indent` treats a tab character in the initial indent part of
 524  the line as an error (not enabled by default).
 525* `blank-at-eof` treats blank lines added at the end of file as an error
 526  (enabled by default).
 527* `trailing-space` is a short-hand to cover both `blank-at-eol` and
 528  `blank-at-eof`.
 529* `cr-at-eol` treats a carriage-return at the end of line as
 530  part of the line terminator, i.e. with it, `trailing-space`
 531  does not trigger if the character before such a carriage-return
 532  is not a whitespace (not enabled by default).
 533* `tabwidth=<n>` tells how many character positions a tab occupies; this
 534  is relevant for `indent-with-non-tab` and when Git fixes `tab-in-indent`
 535  errors. The default tab width is 8. Allowed values are 1 to 63.
 536
 537core.fsyncObjectFiles::
 538        This boolean will enable 'fsync()' when writing object files.
 539+
 540This is a total waste of time and effort on a filesystem that orders
 541data writes properly, but can be useful for filesystems that do not use
 542journalling (traditional UNIX filesystems) or that only journal metadata
 543and not file contents (OS X's HFS+, or Linux ext3 with "data=writeback").
 544
 545core.preloadIndex::
 546        Enable parallel index preload for operations like 'git diff'
 547+
 548This can speed up operations like 'git diff' and 'git status' especially
 549on filesystems like NFS that have weak caching semantics and thus
 550relatively high IO latencies.  When enabled, Git will do the
 551index comparison to the filesystem data in parallel, allowing
 552overlapping IO's.  Defaults to true.
 553
 554core.unsetenvvars::
 555        Windows-only: comma-separated list of environment variables'
 556        names that need to be unset before spawning any other process.
 557        Defaults to `PERL5LIB` to account for the fact that Git for
 558        Windows insists on using its own Perl interpreter.
 559
 560core.createObject::
 561        You can set this to 'link', in which case a hardlink followed by
 562        a delete of the source are used to make sure that object creation
 563        will not overwrite existing objects.
 564+
 565On some file system/operating system combinations, this is unreliable.
 566Set this config setting to 'rename' there; However, This will remove the
 567check that makes sure that existing object files will not get overwritten.
 568
 569core.notesRef::
 570        When showing commit messages, also show notes which are stored in
 571        the given ref.  The ref must be fully qualified.  If the given
 572        ref does not exist, it is not an error but means that no
 573        notes should be printed.
 574+
 575This setting defaults to "refs/notes/commits", and it can be overridden by
 576the `GIT_NOTES_REF` environment variable.  See linkgit:git-notes[1].
 577
 578core.commitGraph::
 579        If true, then git will read the commit-graph file (if it exists)
 580        to parse the graph structure of commits. Defaults to false. See
 581        linkgit:git-commit-graph[1] for more information.
 582
 583core.useReplaceRefs::
 584        If set to `false`, behave as if the `--no-replace-objects`
 585        option was given on the command line. See linkgit:git[1] and
 586        linkgit:git-replace[1] for more information.
 587
 588core.multiPackIndex::
 589        Use the multi-pack-index file to track multiple packfiles using a
 590        single index. See link:technical/multi-pack-index.html[the
 591        multi-pack-index design document].
 592
 593core.sparseCheckout::
 594        Enable "sparse checkout" feature. See section "Sparse checkout" in
 595        linkgit:git-read-tree[1] for more information.
 596
 597core.abbrev::
 598        Set the length object names are abbreviated to.  If
 599        unspecified or set to "auto", an appropriate value is
 600        computed based on the approximate number of packed objects
 601        in your repository, which hopefully is enough for
 602        abbreviated object names to stay unique for some time.
 603        The minimum length is 4.