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