]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/config/core.txt
Sync with 2.25.5
[thirdparty/git.git] / Documentation / config / core.txt
CommitLineData
1a394fa9
NTND
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
dfaed028
KW
71core.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.
81
1a394fa9
NTND
82core.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.
88
89core.splitIndex::
90 If true, the split-index feature of the index will be used.
91 See linkgit:git-update-index[1]. False by default.
92
93core.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.
c6cc4c5a
DS
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.
1a394fa9
NTND
103
104core.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.
114+
115There are implementations of Git that do not leave usable values in
116some fields (e.g. JGit); by excluding these fields from the
117comparison, the `minimal` mode may help interoperability when the
118same repository is used by these other systems at the same time.
119
120core.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.
134
135core.eol::
136 Sets the line ending type to use in the working directory for
c9446f05
JK
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).
1a394fa9
NTND
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
c9446f05
JK
143 conversion. Note that this value is ignored if `core.autocrlf`
144 is set to `true` or `input`.
1a394fa9
NTND
145
146core.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.
156+
157CRLF conversion bears a slight chance of corrupting data.
158When it is enabled, Git will convert CRLF to LF during commit and LF to
159CRLF during checkout. A file that contains a mixture of LF and
160CRLF before the commit cannot be recreated by Git. For text
161files this is the right thing to do: it corrects line endings
162such that we have only LF line endings in the repository.
163But for binary files that are accidentally classified as text the
164conversion can corrupt data.
165+
166If you recognize such corruption early you can easily fix it by
167setting the conversion type explicitly in .gitattributes. Right
168after committing you still have the original file in your work
169tree and this file is not yet corrupted. You can explicitly tell
170Git that this file is binary and Git will handle the file
171appropriately.
172+
173Unfortunately, the desired effect of cleaning up text files with
174mixed line endings and the undesired effect of corrupting binary
175files cannot be distinguished. In both cases CRLFs are removed
176in an irreversible way. For text files this is the right thing
177to do because CRLFs are line endings, while for binary files
178converting CRLFs corrupts data.
179+
180Note, this safety check does not mean that a checkout will generate a
181file identical to the original file for a different setting of
182`core.eol` and `core.autocrlf`, but only for the current one. For
183example, a text file with `LF` would be accepted with `core.eol=lf`
184and could later be checked out with `core.eol=crlf`, in which case the
185resulting file would contain `CRLF`, although the original file
186contained `LF`. However, in both work trees the line endings would be
187consistent, that is either all `LF` or all `CRLF`, but never mixed. A
188file with mixed line endings would be reported by the `core.safecrlf`
189mechanism.
190
191core.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.
198
199core.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`.
204
205core.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.
211+
212The default is true, except linkgit:git-clone[1] or linkgit:git-init[1]
213will probe and set core.symlinks false if appropriate when the repository
214is created.
215
216core.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.
224+
225Can be overridden by the `GIT_PROXY_COMMAND` environment variable
226(which always applies universally, without the special "for"
227handling).
228+
229The special string `none` can be used as the proxy command to
230specify that no proxy be used for a given domain pattern.
231This is useful for excluding servers inside a firewall from
232proxy use, while defaulting to a common proxy for external domains.
233
234core.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.
240
241core.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.
245+
246When files are modified outside of Git, the user will need to stage
247the modified files explicitly (e.g. see 'Examples' section in
248linkgit:git-update-index[1]).
249Git will not normally detect changes to those files.
250+
251This is useful on systems where lstat() calls are very slow, such as
252CIFS/Microsoft Windows.
253+
254False by default.
255
256core.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.
261
262core.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
fd7761a1 266 hex object id per line (i.e., the same as produced by `git for-each-ref
1a394fa9
NTND
267 --format='%(objectname)'`).
268+
269Note that you cannot generally put `git for-each-ref` directly into the config
270value, as it does not take a repository path as an argument (but you can wrap
271the command above in a shell script).
272
273core.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.
279
280core.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].
285+
286This setting is automatically guessed by linkgit:git-clone[1] or
287linkgit:git-init[1] when the repository was created. By default a
288repository that ends in "/.git" is assumed to be not bare (bare =
289false), while all other repositories are assumed to be bare (bare
290= true).
291
292core.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.
305+
306Note that this variable is honored even when set in a configuration
307file in a ".git" subdirectory of a directory and its value differs
308from the latter directory (e.g. "/path/to/.git/config" has
309core.worktree set to "/different/path"), which is most likely a
310misconfiguration. Running Git commands in the "/path/to" directory will
311still use "/different/path" as the root of the work tree and can cause
312confusion unless you know what you are doing (e.g. you are creating a
313read-only snapshot of the same index to a location different from the
314repository's usual working tree).
315
316core.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/`.
327+
328This information can be used to determine what commit
329was the tip of a branch "2 days ago".
330+
331This value is true by default in a repository that has
332a working directory associated with it, and false by
333default in a bare repository.
334
335core.repositoryFormatVersion::
336 Internal variable identifying the repository format and layout
337 version.
338
339core.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.
353
354core.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.
357
358core.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`.
364
365core.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).
371
372core.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.
380+
381Default is 1 MiB if NO_MMAP was set at compile time, otherwise 32
382MiB on 32 bit platforms and 1 GiB on 64 bit platforms. This should
383be reasonable for all users/operating systems. You probably do
384not need to adjust this value.
385+
386Common unit suffixes of 'k', 'm', or 'g' are supported.
387
388core.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.
393+
394Default is 256 MiB on 32 bit platforms and 32 TiB (effectively
395unlimited) on 64 bit platforms.
396This should be reasonable for all users/operating systems, except on
397the largest projects. You probably do not need to adjust this value.
398+
399Common unit suffixes of 'k', 'm', or 'g' are supported.
400
401core.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.
407+
408Default is 96 MiB on all platforms. This should be reasonable
409for all users/operating systems, except on the largest projects.
410You probably do not need to adjust this value.
411+
412Common unit suffixes of 'k', 'm', or 'g' are supported.
413
414core.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.
420+
421Default is 512 MiB on all platforms. This should be reasonable
422for most projects as source code and other text files can still
423be delta compressed, but larger binary media files won't be.
424+
425Common unit suffixes of 'k', 'm', or 'g' are supported.
426
427core.excludesFile::
428 Specifies the pathname to the file that contains patterns to
429 describe paths that are not meant to be tracked, in addition
68ed71b5 430 to `.gitignore` (per-directory) and `.git/info/exclude`.
1a394fa9
NTND
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].
434
435core.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.
443
444core.attributesFile::
68ed71b5
CB
445 In addition to `.gitattributes` (per-directory) and
446 `.git/info/attributes`, Git looks into this file for attributes
1a394fa9
NTND
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.
451
452core.hooksPath::
453 By default Git will look for your hooks in the
68ed71b5
CB
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`.
1a394fa9
NTND
458+
459The path can be either absolute or relative. A relative path is
460taken as relative to the directory where the hooks are run (see
461the "DESCRIPTION" section of linkgit:githooks[5]).
462+
463This configuration variable is useful in cases where you'd like to
464centrally configure your Git hooks instead of configuring them on a
465per-repository basis, or as a more flexible and centralized
466alternative to having an `init.templateDir` where you've changed
467default hooks.
468
469core.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].
474
475core.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 '#').
480+
481If set to "auto", `git-commit` would select a character that is not
482the beginning character of any line in existing commit messages.
483
484core.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).
489
490core.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).
495
496core.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').
502+
503When the `LESS` environment variable is unset, Git sets it to `FRX`
504(if `LESS` environment variable is set, Git does not change it at
505all). If you want to selectively override Git's default setting
506for `LESS`, you can set `core.pager` to e.g. `less -S`. This will
507be passed to the shell by Git, which will translate the final
508command to `LESS=FRX less -S`. The environment does not set the
509`S` option but the command line does, instructing less to truncate
510long lines. Similarly, setting `core.pager` to `less -+F` will
511deactivate the `F` option specified by the environment from the
512command-line, deactivating the "quit if one screen" behavior of
513`less`. One can specifically activate some flags for particular
514commands: for example, setting `pager.blame` to `less -S` enables
515line truncation only for `git blame`.
516+
517Likewise, when the `LV` environment variable is unset, Git sets it
518to `-c`. You can override this setting by exporting `LV` with
519another value or setting `core.pager` to `lv +c`.
520
521core.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`):
527+
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.
549
550core.fsyncObjectFiles::
551 This boolean will enable 'fsync()' when writing object files.
552+
553This is a total waste of time and effort on a filesystem that orders
554data writes properly, but can be useful for filesystems that do not use
555journalling (traditional UNIX filesystems) or that only journal metadata
556and not file contents (OS X's HFS+, or Linux ext3 with "data=writeback").
557
558core.preloadIndex::
559 Enable parallel index preload for operations like 'git diff'
560+
561This can speed up operations like 'git diff' and 'git status' especially
562on filesystems like NFS that have weak caching semantics and thus
563relatively high IO latencies. When enabled, Git will do the
564index comparison to the filesystem data in parallel, allowing
565overlapping IO's. Defaults to true.
566
6c268fdd
JH
567core.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.
572
ac33519d
JS
573core.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.
578
1a394fa9
NTND
579core.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.
583+
584On some file system/operating system combinations, this is unreliable.
585Set this config setting to 'rename' there; However, This will remove the
586check that makes sure that existing object files will not get overwritten.
587
588core.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.
593+
594This setting defaults to "refs/notes/commits", and it can be overridden by
595the `GIT_NOTES_REF` environment variable. See linkgit:git-notes[1].
596
597core.commitGraph::
598 If true, then git will read the commit-graph file (if it exists)
31b1de6a 599 to parse the graph structure of commits. Defaults to true. See
1a394fa9
NTND
600 linkgit:git-commit-graph[1] for more information.
601
602core.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.
606
607core.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].
611
612core.sparseCheckout::
879321eb
DS
613 Enable "sparse checkout" feature. See linkgit:git-sparse-checkout[1]
614 for more information.
615
616core.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.
1a394fa9
NTND
621
622core.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.