1GIT-CONFIG(1)                     Git Manual                     GIT-CONFIG(1)
2
3
4

NAME

6       git-config - Get and set repository or global options
7

SYNOPSIS

9       git config [<file-option>] [--type=<type>] [--fixed-value] [--show-origin] [--show-scope] [-z|--null] name [value [value-pattern]]
10       git config [<file-option>] [--type=<type>] --add name value
11       git config [<file-option>] [--type=<type>] [--fixed-value] --replace-all name value [value-pattern]
12       git config [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] [--fixed-value] --get name [value-pattern]
13       git config [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] [--fixed-value] --get-all name [value-pattern]
14       git config [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] [--fixed-value] [--name-only] --get-regexp name_regex [value-pattern]
15       git config [<file-option>] [--type=<type>] [-z|--null] --get-urlmatch name URL
16       git config [<file-option>] [--fixed-value] --unset name [value-pattern]
17       git config [<file-option>] [--fixed-value] --unset-all name [value-pattern]
18       git config [<file-option>] --rename-section old_name new_name
19       git config [<file-option>] --remove-section name
20       git config [<file-option>] [--show-origin] [--show-scope] [-z|--null] [--name-only] -l | --list
21       git config [<file-option>] --get-color name [default]
22       git config [<file-option>] --get-colorbool name [stdout-is-tty]
23       git config [<file-option>] -e | --edit
24

DESCRIPTION

26       You can query/set/replace/unset options with this command. The name is
27       actually the section and the key separated by a dot, and the value will
28       be escaped.
29
30       Multiple lines can be added to an option by using the --add option. If
31       you want to update or unset an option which can occur on multiple
32       lines, a value-pattern (which is an extended regular expression, unless
33       the --fixed-value option is given) needs to be given. Only the existing
34       values that match the pattern are updated or unset. If you want to
35       handle the lines that do not match the pattern, just prepend a single
36       exclamation mark in front (see also the section called “EXAMPLES”), but
37       note that this only works when the --fixed-value option is not in use.
38
39       The --type=<type> option instructs git config to ensure that incoming
40       and outgoing values are canonicalize-able under the given <type>. If no
41       --type=<type> is given, no canonicalization will be performed. Callers
42       may unset an existing --type specifier with --no-type.
43
44       When reading, the values are read from the system, global and
45       repository local configuration files by default, and options --system,
46       --global, --local, --worktree and --file <filename> can be used to tell
47       the command to read from only that location (see the section called
48       “FILES”).
49
50       When writing, the new value is written to the repository local
51       configuration file by default, and options --system, --global,
52       --worktree, --file <filename> can be used to tell the command to write
53       to that location (you can say --local but that is the default).
54
55       This command will fail with non-zero status upon error. Some exit codes
56       are:
57
58       •   The section or key is invalid (ret=1),
59
60       •   no section or name was provided (ret=2),
61
62       •   the config file is invalid (ret=3),
63
64       •   the config file cannot be written (ret=4),
65
66       •   you try to unset an option which does not exist (ret=5),
67
68       •   you try to unset/set an option for which multiple lines match
69           (ret=5), or
70
71       •   you try to use an invalid regexp (ret=6).
72
73       On success, the command returns the exit code 0.
74
75       A list of all available configuration variables can be obtained using
76       the git help --config command.
77

OPTIONS

79       --replace-all
80           Default behavior is to replace at most one line. This replaces all
81           lines matching the key (and optionally the value-pattern).
82
83       --add
84           Adds a new line to the option without altering any existing values.
85           This is the same as providing ^$ as the value-pattern in
86           --replace-all.
87
88       --get
89           Get the value for a given key (optionally filtered by a regex
90           matching the value). Returns error code 1 if the key was not found
91           and the last value if multiple key values were found.
92
93       --get-all
94           Like get, but returns all values for a multi-valued key.
95
96       --get-regexp
97           Like --get-all, but interprets the name as a regular expression and
98           writes out the key names. Regular expression matching is currently
99           case-sensitive and done against a canonicalized version of the key
100           in which section and variable names are lowercased, but subsection
101           names are not.
102
103       --get-urlmatch name URL
104           When given a two-part name section.key, the value for
105           section.<url>.key whose <url> part matches the best to the given
106           URL is returned (if no such key exists, the value for section.key
107           is used as a fallback). When given just the section as name, do so
108           for all the keys in the section and list them. Returns error code 1
109           if no value is found.
110
111       --global
112           For writing options: write to global ~/.gitconfig file rather than
113           the repository .git/config, write to $XDG_CONFIG_HOME/git/config
114           file if this file exists and the ~/.gitconfig file doesn’t.
115
116           For reading options: read only from global ~/.gitconfig and from
117           $XDG_CONFIG_HOME/git/config rather than from all available files.
118
119           See also the section called “FILES”.
120
121       --system
122           For writing options: write to system-wide $(prefix)/etc/gitconfig
123           rather than the repository .git/config.
124
125           For reading options: read only from system-wide
126           $(prefix)/etc/gitconfig rather than from all available files.
127
128           See also the section called “FILES”.
129
130       --local
131           For writing options: write to the repository .git/config file. This
132           is the default behavior.
133
134           For reading options: read only from the repository .git/config
135           rather than from all available files.
136
137           See also the section called “FILES”.
138
139       --worktree
140           Similar to --local except that .git/config.worktree is read from or
141           written to if extensions.worktreeConfig is present. If not it’s the
142           same as --local.
143
144       -f config-file, --file config-file
145           For writing options: write to the specified file rather than the
146           repository .git/config.
147
148           For reading options: read only from the specified file rather than
149           from all available files.
150
151           See also the section called “FILES”.
152
153       --blob blob
154           Similar to --file but use the given blob instead of a file. E.g.
155           you can use master:.gitmodules to read values from the file
156           .gitmodules in the master branch. See "SPECIFYING REVISIONS"
157           section in gitrevisions(7) for a more complete list of ways to
158           spell blob names.
159
160       --remove-section
161           Remove the given section from the configuration file.
162
163       --rename-section
164           Rename the given section to a new name.
165
166       --unset
167           Remove the line matching the key from config file.
168
169       --unset-all
170           Remove all lines matching the key from config file.
171
172       -l, --list
173           List all variables set in config file, along with their values.
174
175       --fixed-value
176           When used with the value-pattern argument, treat value-pattern as
177           an exact string instead of a regular expression. This will restrict
178           the name/value pairs that are matched to only those where the value
179           is exactly equal to the value-pattern.
180
181       --type <type>
182           git config will ensure that any input or output is valid under the
183           given type constraint(s), and will canonicalize outgoing values in
184           <type>'s canonical form.
185
186           Valid <type>'s include:
187
188bool: canonicalize values as either "true" or "false".
189
190int: canonicalize values as simple decimal numbers. An optional
191               suffix of k, m, or g will cause the value to be multiplied by
192               1024, 1048576, or 1073741824 upon input.
193
194bool-or-int: canonicalize according to either bool or int, as
195               described above.
196
197path: canonicalize by adding a leading ~ to the value of $HOME
198               and ~user to the home directory for the specified user. This
199               specifier has no effect when setting the value (but you can use
200               git config section.variable ~/ from the command line to let
201               your shell do the expansion.)
202
203expiry-date: canonicalize by converting from a fixed or
204               relative date-string to a timestamp. This specifier has no
205               effect when setting the value.
206
207color: When getting a value, canonicalize by converting to an
208               ANSI color escape sequence. When setting a value, a
209               sanity-check is performed to ensure that the given value is
210               canonicalize-able as an ANSI color, but it is written as-is.
211
212       --bool, --int, --bool-or-int, --path, --expiry-date
213           Historical options for selecting a type specifier. Prefer instead
214           --type (see above).
215
216       --no-type
217           Un-sets the previously set type specifier (if one was previously
218           set). This option requests that git config not canonicalize the
219           retrieved variable.  --no-type has no effect without --type=<type>
220           or --<type>.
221
222       -z, --null
223           For all options that output values and/or keys, always end values
224           with the null character (instead of a newline). Use newline instead
225           as a delimiter between key and value. This allows for secure
226           parsing of the output without getting confused e.g. by values that
227           contain line breaks.
228
229       --name-only
230           Output only the names of config variables for --list or
231           --get-regexp.
232
233       --show-origin
234           Augment the output of all queried config options with the origin
235           type (file, standard input, blob, command line) and the actual
236           origin (config file path, ref, or blob id if applicable).
237
238       --show-scope
239           Similar to --show-origin in that it augments the output of all
240           queried config options with the scope of that value (local, global,
241           system, command).
242
243       --get-colorbool name [stdout-is-tty]
244           Find the color setting for name (e.g.  color.diff) and output
245           "true" or "false".  stdout-is-tty should be either "true" or
246           "false", and is taken into account when configuration says "auto".
247           If stdout-is-tty is missing, then checks the standard output of the
248           command itself, and exits with status 0 if color is to be used, or
249           exits with status 1 otherwise. When the color setting for name is
250           undefined, the command uses color.ui as fallback.
251
252       --get-color name [default]
253           Find the color configured for name (e.g.  color.diff.new) and
254           output it as the ANSI color escape sequence to the standard output.
255           The optional default parameter is used instead, if there is no
256           color configured for name.
257
258           --type=color [--default=<default>] is preferred over --get-color
259           (but note that --get-color will omit the trailing newline printed
260           by --type=color).
261
262       -e, --edit
263           Opens an editor to modify the specified config file; either
264           --system, --global, or repository (default).
265
266       --[no-]includes
267           Respect include.*  directives in config files when looking up
268           values. Defaults to off when a specific file is given (e.g., using
269           --file, --global, etc) and on when searching all config files.
270
271       --default <value>
272           When using --get, and the requested variable is not found, behave
273           as if <value> were the value assigned to the that variable.
274

CONFIGURATION

276       pager.config is only respected when listing configuration, i.e., when
277       using --list or any of the --get-* which may return multiple results.
278       The default is to use a pager.
279

FILES

281       If not set explicitly with --file, there are four files where git
282       config will search for configuration options:
283
284       $(prefix)/etc/gitconfig
285           System-wide configuration file.
286
287       $XDG_CONFIG_HOME/git/config
288           Second user-specific configuration file. If $XDG_CONFIG_HOME is not
289           set or empty, $HOME/.config/git/config will be used. Any
290           single-valued variable set in this file will be overwritten by
291           whatever is in ~/.gitconfig. It is a good idea not to create this
292           file if you sometimes use older versions of Git, as support for
293           this file was added fairly recently.
294
295       ~/.gitconfig
296           User-specific configuration file. Also called "global"
297           configuration file.
298
299       $GIT_DIR/config
300           Repository specific configuration file.
301
302       $GIT_DIR/config.worktree
303           This is optional and is only searched when
304           extensions.worktreeConfig is present in $GIT_DIR/config.
305
306       If no further options are given, all reading options will read all of
307       these files that are available. If the global or the system-wide
308       configuration file are not available they will be ignored. If the
309       repository configuration file is not available or readable, git config
310       will exit with a non-zero error code. However, in neither case will an
311       error message be issued.
312
313       The files are read in the order given above, with last value found
314       taking precedence over values read earlier. When multiple values are
315       taken then all values of a key from all files will be used.
316
317       You may override individual configuration parameters when running any
318       git command by using the -c option. See git(1) for details.
319
320       All writing options will per default write to the repository specific
321       configuration file. Note that this also affects options like
322       --replace-all and --unset. git config will only ever change one file at
323       a time.
324
325       You can override these rules using the --global, --system, --local,
326       --worktree, and --file command-line options; see the section called
327       “OPTIONS” above.
328

ENVIRONMENT

330       GIT_CONFIG_GLOBAL, GIT_CONFIG_SYSTEM
331           Take the configuration from the given files instead from global or
332           system-level configuration. See git(1) for details.
333
334       GIT_CONFIG_NOSYSTEM
335           Whether to skip reading settings from the system-wide
336           $(prefix)/etc/gitconfig file. See git(1) for details.
337
338       See also the section called “FILES”.
339
340       GIT_CONFIG_COUNT, GIT_CONFIG_KEY_<n>, GIT_CONFIG_VALUE_<n>
341           If GIT_CONFIG_COUNT is set to a positive number, all environment
342           pairs GIT_CONFIG_KEY_<n> and GIT_CONFIG_VALUE_<n> up to that number
343           will be added to the process’s runtime configuration. The config
344           pairs are zero-indexed. Any missing key or value is treated as an
345           error. An empty GIT_CONFIG_COUNT is treated the same as
346           GIT_CONFIG_COUNT=0, namely no pairs are processed. These
347           environment variables will override values in configuration files,
348           but will be overridden by any explicit options passed via git -c.
349
350           This is useful for cases where you want to spawn multiple git
351           commands with a common configuration but cannot depend on a
352           configuration file, for example when writing scripts.
353
354       GIT_CONFIG
355           If no --file option is provided to git config, use the file given
356           by GIT_CONFIG as if it were provided via --file. This variable has
357           no effect on other Git commands, and is mostly for historical
358           compatibility; there is generally no reason to use it instead of
359           the --file option.
360

EXAMPLES

362       Given a .git/config like this:
363
364           #
365           # This is the config file, and
366           # a '#' or ';' character indicates
367           # a comment
368           #
369
370           ; core variables
371           [core]
372                   ; Don't trust file modes
373                   filemode = false
374
375           ; Our diff algorithm
376           [diff]
377                   external = /usr/local/bin/diff-wrapper
378                   renames = true
379
380           ; Proxy settings
381           [core]
382                   gitproxy=proxy-command for kernel.org
383                   gitproxy=default-proxy ; for all the rest
384
385           ; HTTP
386           [http]
387                   sslVerify
388           [http "https://weak.example.com"]
389                   sslVerify = false
390                   cookieFile = /tmp/cookie.txt
391
392       you can set the filemode to true with
393
394           % git config core.filemode true
395
396       The hypothetical proxy command entries actually have a postfix to
397       discern what URL they apply to. Here is how to change the entry for
398       kernel.org to "ssh".
399
400           % git config core.gitproxy '"ssh" for kernel.org' 'for kernel.org$'
401
402       This makes sure that only the key/value pair for kernel.org is
403       replaced.
404
405       To delete the entry for renames, do
406
407           % git config --unset diff.renames
408
409       If you want to delete an entry for a multivar (like core.gitproxy
410       above), you have to provide a regex matching the value of exactly one
411       line.
412
413       To query the value for a given key, do
414
415           % git config --get core.filemode
416
417       or
418
419           % git config core.filemode
420
421       or, to query a multivar:
422
423           % git config --get core.gitproxy "for kernel.org$"
424
425       If you want to know all the values for a multivar, do:
426
427           % git config --get-all core.gitproxy
428
429       If you like to live dangerously, you can replace all core.gitproxy by a
430       new one with
431
432           % git config --replace-all core.gitproxy ssh
433
434       However, if you really only want to replace the line for the default
435       proxy, i.e. the one without a "for ..." postfix, do something like
436       this:
437
438           % git config core.gitproxy ssh '! for '
439
440       To actually match only values with an exclamation mark, you have to
441
442           % git config section.key value '[!]'
443
444       To add a new proxy, without altering any of the existing ones, use
445
446           % git config --add core.gitproxy '"proxy-command" for example.com'
447
448       An example to use customized color from the configuration in your
449       script:
450
451           #!/bin/sh
452           WS=$(git config --get-color color.diff.whitespace "blue reverse")
453           RESET=$(git config --get-color "" "reset")
454           echo "${WS}your whitespace color or blue reverse${RESET}"
455
456       For URLs in https://weak.example.com, http.sslVerify is set to false,
457       while it is set to true for all others:
458
459           % git config --type=bool --get-urlmatch http.sslverify https://good.example.com
460           true
461           % git config --type=bool --get-urlmatch http.sslverify https://weak.example.com
462           false
463           % git config --get-urlmatch http https://weak.example.com
464           http.cookieFile /tmp/cookie.txt
465           http.sslverify false
466

CONFIGURATION FILE

468       The Git configuration file contains a number of variables that affect
469       the Git commands' behavior. The files .git/config and optionally
470       config.worktree (see the "CONFIGURATION FILE" section of git-
471       worktree(1)) in each repository are used to store the configuration for
472       that repository, and $HOME/.gitconfig is used to store a per-user
473       configuration as fallback values for the .git/config file. The file
474       /etc/gitconfig can be used to store a system-wide default
475       configuration.
476
477       The configuration variables are used by both the Git plumbing and the
478       porcelains. The variables are divided into sections, wherein the fully
479       qualified variable name of the variable itself is the last
480       dot-separated segment and the section name is everything before the
481       last dot. The variable names are case-insensitive, allow only
482       alphanumeric characters and -, and must start with an alphabetic
483       character. Some variables may appear multiple times; we say then that
484       the variable is multivalued.
485
486   Syntax
487       The syntax is fairly flexible and permissive; whitespaces are mostly
488       ignored. The # and ; characters begin comments to the end of line,
489       blank lines are ignored.
490
491       The file consists of sections and variables. A section begins with the
492       name of the section in square brackets and continues until the next
493       section begins. Section names are case-insensitive. Only alphanumeric
494       characters, - and . are allowed in section names. Each variable must
495       belong to some section, which means that there must be a section header
496       before the first setting of a variable.
497
498       Sections can be further divided into subsections. To begin a subsection
499       put its name in double quotes, separated by space from the section
500       name, in the section header, like in the example below:
501
502                   [section "subsection"]
503
504       Subsection names are case sensitive and can contain any characters
505       except newline and the null byte. Doublequote " and backslash can be
506       included by escaping them as \" and \\, respectively. Backslashes
507       preceding other characters are dropped when reading; for example, \t is
508       read as t and \0 is read as 0. Section headers cannot span multiple
509       lines. Variables may belong directly to a section or to a given
510       subsection. You can have [section] if you have [section "subsection"],
511       but you don’t need to.
512
513       There is also a deprecated [section.subsection] syntax. With this
514       syntax, the subsection name is converted to lower-case and is also
515       compared case sensitively. These subsection names follow the same
516       restrictions as section names.
517
518       All the other lines (and the remainder of the line after the section
519       header) are recognized as setting variables, in the form name = value
520       (or just name, which is a short-hand to say that the variable is the
521       boolean "true"). The variable names are case-insensitive, allow only
522       alphanumeric characters and -, and must start with an alphabetic
523       character.
524
525       A line that defines a value can be continued to the next line by ending
526       it with a \; the backslash and the end-of-line are stripped. Leading
527       whitespaces after name =, the remainder of the line after the first
528       comment character # or ;, and trailing whitespaces of the line are
529       discarded unless they are enclosed in double quotes. Internal
530       whitespaces within the value are retained verbatim.
531
532       Inside double quotes, double quote " and backslash \ characters must be
533       escaped: use \" for " and \\ for \.
534
535       The following escape sequences (beside \" and \\) are recognized: \n
536       for newline character (NL), \t for horizontal tabulation (HT, TAB) and
537       \b for backspace (BS). Other char escape sequences (including octal
538       escape sequences) are invalid.
539
540   Includes
541       The include and includeIf sections allow you to include config
542       directives from another source. These sections behave identically to
543       each other with the exception that includeIf sections may be ignored if
544       their condition does not evaluate to true; see "Conditional includes"
545       below.
546
547       You can include a config file from another by setting the special
548       include.path (or includeIf.*.path) variable to the name of the file to
549       be included. The variable takes a pathname as its value, and is subject
550       to tilde expansion. These variables can be given multiple times.
551
552       The contents of the included file are inserted immediately, as if they
553       had been found at the location of the include directive. If the value
554       of the variable is a relative path, the path is considered to be
555       relative to the configuration file in which the include directive was
556       found. See below for examples.
557
558   Conditional includes
559       You can include a config file from another conditionally by setting a
560       includeIf.<condition>.path variable to the name of the file to be
561       included.
562
563       The condition starts with a keyword followed by a colon and some data
564       whose format and meaning depends on the keyword. Supported keywords
565       are:
566
567       gitdir
568           The data that follows the keyword gitdir: is used as a glob
569           pattern. If the location of the .git directory matches the pattern,
570           the include condition is met.
571
572           The .git location may be auto-discovered, or come from $GIT_DIR
573           environment variable. If the repository is auto discovered via a
574           .git file (e.g. from submodules, or a linked worktree), the .git
575           location would be the final location where the .git directory is,
576           not where the .git file is.
577
578           The pattern can contain standard globbing wildcards and two
579           additional ones, **/ and /**, that can match multiple path
580           components. Please refer to gitignore(5) for details. For
581           convenience:
582
583           •   If the pattern starts with ~/, ~ will be substituted with the
584               content of the environment variable HOME.
585
586           •   If the pattern starts with ./, it is replaced with the
587               directory containing the current config file.
588
589           •   If the pattern does not start with either ~/, ./ or /, **/ will
590               be automatically prepended. For example, the pattern foo/bar
591               becomes **/foo/bar and would match /any/path/to/foo/bar.
592
593           •   If the pattern ends with /, ** will be automatically added. For
594               example, the pattern foo/ becomes foo/**. In other words, it
595               matches "foo" and everything inside, recursively.
596
597       gitdir/i
598           This is the same as gitdir except that matching is done
599           case-insensitively (e.g. on case-insensitive file systems)
600
601       onbranch
602           The data that follows the keyword onbranch: is taken to be a
603           pattern with standard globbing wildcards and two additional ones,
604           **/ and /**, that can match multiple path components. If we are in
605           a worktree where the name of the branch that is currently checked
606           out matches the pattern, the include condition is met.
607
608           If the pattern ends with /, ** will be automatically added. For
609           example, the pattern foo/ becomes foo/**. In other words, it
610           matches all branches that begin with foo/. This is useful if your
611           branches are organized hierarchically and you would like to apply a
612           configuration to all the branches in that hierarchy.
613
614       A few more notes on matching via gitdir and gitdir/i:
615
616       •   Symlinks in $GIT_DIR are not resolved before matching.
617
618       •   Both the symlink & realpath versions of paths will be matched
619           outside of $GIT_DIR. E.g. if ~/git is a symlink to
620           /mnt/storage/git, both gitdir:~/git and gitdir:/mnt/storage/git
621           will match.
622
623           This was not the case in the initial release of this feature in
624           v2.13.0, which only matched the realpath version. Configuration
625           that wants to be compatible with the initial release of this
626           feature needs to either specify only the realpath version, or both
627           versions.
628
629       •   Note that "../" is not special and will match literally, which is
630           unlikely what you want.
631
632   Example
633           # Core variables
634           [core]
635                   ; Don't trust file modes
636                   filemode = false
637
638           # Our diff algorithm
639           [diff]
640                   external = /usr/local/bin/diff-wrapper
641                   renames = true
642
643           [branch "devel"]
644                   remote = origin
645                   merge = refs/heads/devel
646
647           # Proxy settings
648           [core]
649                   gitProxy="ssh" for "kernel.org"
650                   gitProxy=default-proxy ; for the rest
651
652           [include]
653                   path = /path/to/foo.inc ; include by absolute path
654                   path = foo.inc ; find "foo.inc" relative to the current file
655                   path = ~/foo.inc ; find "foo.inc" in your `$HOME` directory
656
657           ; include if $GIT_DIR is /path/to/foo/.git
658           [includeIf "gitdir:/path/to/foo/.git"]
659                   path = /path/to/foo.inc
660
661           ; include for all repositories inside /path/to/group
662           [includeIf "gitdir:/path/to/group/"]
663                   path = /path/to/foo.inc
664
665           ; include for all repositories inside $HOME/to/group
666           [includeIf "gitdir:~/to/group/"]
667                   path = /path/to/foo.inc
668
669           ; relative paths are always relative to the including
670           ; file (if the condition is true); their location is not
671           ; affected by the condition
672           [includeIf "gitdir:/path/to/group/"]
673                   path = foo.inc
674
675           ; include only if we are in a worktree where foo-branch is
676           ; currently checked out
677           [includeIf "onbranch:foo-branch"]
678                   path = foo.inc
679
680   Values
681       Values of many variables are treated as a simple string, but there are
682       variables that take values of specific types and there are rules as to
683       how to spell them.
684
685       boolean
686           When a variable is said to take a boolean value, many synonyms are
687           accepted for true and false; these are all case-insensitive.
688
689           true
690               Boolean true literals are yes, on, true, and 1. Also, a
691               variable defined without = <value> is taken as true.
692
693           false
694               Boolean false literals are no, off, false, 0 and the empty
695               string.
696
697               When converting a value to its canonical form using the
698               --type=bool type specifier, git config will ensure that the
699               output is "true" or "false" (spelled in lowercase).
700
701       integer
702           The value for many variables that specify various sizes can be
703           suffixed with k, M,... to mean "scale the number by 1024", "by
704           1024x1024", etc.
705
706       color
707           The value for a variable that takes a color is a list of colors (at
708           most two, one for foreground and one for background) and attributes
709           (as many as you want), separated by spaces.
710
711           The basic colors accepted are normal, black, red, green, yellow,
712           blue, magenta, cyan and white. The first color given is the
713           foreground; the second is the background. All the basic colors
714           except normal have a bright variant that can be specified by
715           prefixing the color with bright, like brightred.
716
717           Colors may also be given as numbers between 0 and 255; these use
718           ANSI 256-color mode (but note that not all terminals may support
719           this). If your terminal supports it, you may also specify 24-bit
720           RGB values as hex, like #ff0ab3.
721
722           The accepted attributes are bold, dim, ul, blink, reverse, italic,
723           and strike (for crossed-out or "strikethrough" letters). The
724           position of any attributes with respect to the colors (before,
725           after, or in between), doesn’t matter. Specific attributes may be
726           turned off by prefixing them with no or no- (e.g., noreverse,
727           no-ul, etc).
728
729           An empty color string produces no color effect at all. This can be
730           used to avoid coloring specific elements without disabling color
731           entirely.
732
733           For git’s pre-defined color slots, the attributes are meant to be
734           reset at the beginning of each item in the colored output. So
735           setting color.decorate.branch to black will paint that branch name
736           in a plain black, even if the previous thing on the same output
737           line (e.g. opening parenthesis before the list of branch names in
738           log --decorate output) is set to be painted with bold or some other
739           attribute. However, custom log formats may do more complicated and
740           layered coloring, and the negated forms may be useful there.
741
742       pathname
743           A variable that takes a pathname value can be given a string that
744           begins with "~/" or "~user/", and the usual tilde expansion happens
745           to such a string: ~/ is expanded to the value of $HOME, and ~user/
746           to the specified user’s home directory.
747
748   Variables
749       Note that this list is non-comprehensive and not necessarily complete.
750       For command-specific variables, you will find a more detailed
751       description in the appropriate manual page.
752
753       Other git-related tools may and do use their own variables. When
754       inventing new variables for use in your own tool, make sure their names
755       do not conflict with those that are used by Git itself and other
756       popular tools, and describe them in your documentation.
757
758       advice.*
759           These variables control various optional help messages designed to
760           aid new users. All advice.*  variables default to true, and you can
761           tell Git that you do not need help by setting these to false:
762
763           fetchShowForcedUpdates
764               Advice shown when git-fetch(1) takes a long time to calculate
765               forced updates after ref updates, or to warn that the check is
766               disabled.
767
768           pushUpdateRejected
769               Set this variable to false if you want to disable
770               pushNonFFCurrent, pushNonFFMatching, pushAlreadyExists,
771               pushFetchFirst, pushNeedsForce, and pushRefNeedsUpdate
772               simultaneously.
773
774           pushNonFFCurrent
775               Advice shown when git-push(1) fails due to a non-fast-forward
776               update to the current branch.
777
778           pushNonFFMatching
779               Advice shown when you ran git-push(1) and pushed matching refs
780               explicitly (i.e. you used :, or specified a refspec that isn’t
781               your current branch) and it resulted in a non-fast-forward
782               error.
783
784           pushAlreadyExists
785               Shown when git-push(1) rejects an update that does not qualify
786               for fast-forwarding (e.g., a tag.)
787
788           pushFetchFirst
789               Shown when git-push(1) rejects an update that tries to
790               overwrite a remote ref that points at an object we do not have.
791
792           pushNeedsForce
793               Shown when git-push(1) rejects an update that tries to
794               overwrite a remote ref that points at an object that is not a
795               commit-ish, or make the remote ref point at an object that is
796               not a commit-ish.
797
798           pushUnqualifiedRefname
799               Shown when git-push(1) gives up trying to guess based on the
800               source and destination refs what remote ref namespace the
801               source belongs in, but where we can still suggest that the user
802               push to either refs/heads/* or refs/tags/* based on the type of
803               the source object.
804
805           pushRefNeedsUpdate
806               Shown when git-push(1) rejects a forced update of a branch when
807               its remote-tracking ref has updates that we do not have
808               locally.
809
810           statusAheadBehind
811               Shown when git-status(1) computes the ahead/behind counts for a
812               local ref compared to its remote tracking ref, and that
813               calculation takes longer than expected. Will not appear if
814               status.aheadBehind is false or the option --no-ahead-behind is
815               given.
816
817           statusHints
818               Show directions on how to proceed from the current state in the
819               output of git-status(1), in the template shown when writing
820               commit messages in git-commit(1), and in the help message shown
821               by git-switch(1) or git-checkout(1) when switching branch.
822
823           statusUoption
824               Advise to consider using the -u option to git-status(1) when
825               the command takes more than 2 seconds to enumerate untracked
826               files.
827
828           commitBeforeMerge
829               Advice shown when git-merge(1) refuses to merge to avoid
830               overwriting local changes.
831
832           resetQuiet
833               Advice to consider using the --quiet option to git-reset(1)
834               when the command takes more than 2 seconds to enumerate
835               unstaged changes after reset.
836
837           resolveConflict
838               Advice shown by various commands when conflicts prevent the
839               operation from being performed.
840
841           sequencerInUse
842               Advice shown when a sequencer command is already in progress.
843
844           implicitIdentity
845               Advice on how to set your identity configuration when your
846               information is guessed from the system username and domain
847               name.
848
849           detachedHead
850               Advice shown when you used git-switch(1) or git-checkout(1) to
851               move to the detach HEAD state, to instruct how to create a
852               local branch after the fact.
853
854           checkoutAmbiguousRemoteBranchName
855               Advice shown when the argument to git-checkout(1) and git-
856               switch(1) ambiguously resolves to a remote tracking branch on
857               more than one remote in situations where an unambiguous
858               argument would have otherwise caused a remote-tracking branch
859               to be checked out. See the checkout.defaultRemote configuration
860               variable for how to set a given remote to used by default in
861               some situations where this advice would be printed.
862
863           amWorkDir
864               Advice that shows the location of the patch file when git-am(1)
865               fails to apply it.
866
867           rmHints
868               In case of failure in the output of git-rm(1), show directions
869               on how to proceed from the current state.
870
871           addEmbeddedRepo
872               Advice on what to do when you’ve accidentally added one git
873               repo inside of another.
874
875           ignoredHook
876               Advice shown if a hook is ignored because the hook is not set
877               as executable.
878
879           waitingForEditor
880               Print a message to the terminal whenever Git is waiting for
881               editor input from the user.
882
883           nestedTag
884               Advice shown if a user attempts to recursively tag a tag
885               object.
886
887           submoduleAlternateErrorStrategyDie
888               Advice shown when a submodule.alternateErrorStrategy option
889               configured to "die" causes a fatal error.
890
891           addIgnoredFile
892               Advice shown if a user attempts to add an ignored file to the
893               index.
894
895           addEmptyPathspec
896               Advice shown if a user runs the add command without providing
897               the pathspec parameter.
898
899           updateSparsePath
900               Advice shown when either git-add(1) or git-rm(1) is asked to
901               update index entries outside the current sparse checkout.
902
903       core.fileMode
904           Tells Git if the executable bit of files in the working tree is to
905           be honored.
906
907           Some filesystems lose the executable bit when a file that is marked
908           as executable is checked out, or checks out a non-executable file
909           with executable bit on.  git-clone(1) or git-init(1) probe the
910           filesystem to see if it handles the executable bit correctly and
911           this variable is automatically set as necessary.
912
913           A repository, however, may be on a filesystem that handles the
914           filemode correctly, and this variable is set to true when created,
915           but later may be made accessible from another environment that
916           loses the filemode (e.g. exporting ext4 via CIFS mount, visiting a
917           Cygwin created repository with Git for Windows or Eclipse). In such
918           a case it may be necessary to set this variable to false. See git-
919           update-index(1).
920
921           The default is true (when core.filemode is not specified in the
922           config file).
923
924       core.hideDotFiles
925           (Windows-only) If true, mark newly-created directories and files
926           whose name starts with a dot as hidden. If dotGitOnly, only the
927           .git/ directory is hidden, but no other files starting with a dot.
928           The default mode is dotGitOnly.
929
930       core.ignoreCase
931           Internal variable which enables various workarounds to enable Git
932           to work better on filesystems that are not case sensitive, like
933           APFS, HFS+, FAT, NTFS, etc. For example, if a directory listing
934           finds "makefile" when Git expects "Makefile", Git will assume it is
935           really the same file, and continue to remember it as "Makefile".
936
937           The default is false, except git-clone(1) or git-init(1) will probe
938           and set core.ignoreCase true if appropriate when the repository is
939           created.
940
941           Git relies on the proper configuration of this variable for your
942           operating and file system. Modifying this value may result in
943           unexpected behavior.
944
945       core.precomposeUnicode
946           This option is only used by Mac OS implementation of Git. When
947           core.precomposeUnicode=true, Git reverts the unicode decomposition
948           of filenames done by Mac OS. This is useful when sharing a
949           repository between Mac OS and Linux or Windows. (Git for Windows
950           1.7.10 or higher is needed, or Git under cygwin 1.7). When false,
951           file names are handled fully transparent by Git, which is backward
952           compatible with older versions of Git.
953
954       core.protectHFS
955           If set to true, do not allow checkout of paths that would be
956           considered equivalent to .git on an HFS+ filesystem. Defaults to
957           true on Mac OS, and false elsewhere.
958
959       core.protectNTFS
960           If set to true, do not allow checkout of paths that would cause
961           problems with the NTFS filesystem, e.g. conflict with 8.3 "short"
962           names. Defaults to true on Windows, and false elsewhere.
963
964       core.fsmonitor
965           If set, the value of this variable is used as a command which will
966           identify all files that may have changed since the requested
967           date/time. This information is used to speed up git by avoiding
968           unnecessary processing of files that have not changed. See the
969           "fsmonitor-watchman" section of githooks(5).
970
971       core.fsmonitorHookVersion
972           Sets the version of hook that is to be used when calling fsmonitor.
973           There are currently versions 1 and 2. When this is not set, version
974           2 will be tried first and if it fails then version 1 will be tried.
975           Version 1 uses a timestamp as input to determine which files have
976           changes since that time but some monitors like watchman have race
977           conditions when used with a timestamp. Version 2 uses an opaque
978           string so that the monitor can return something that can be used to
979           determine what files have changed without race conditions.
980
981       core.trustctime
982           If false, the ctime differences between the index and the working
983           tree are ignored; useful when the inode change time is regularly
984           modified by something outside Git (file system crawlers and some
985           backup systems). See git-update-index(1). True by default.
986
987       core.splitIndex
988           If true, the split-index feature of the index will be used. See
989           git-update-index(1). False by default.
990
991       core.untrackedCache
992           Determines what to do about the untracked cache feature of the
993           index. It will be kept, if this variable is unset or set to keep.
994           It will automatically be added if set to true. And it will
995           automatically be removed, if set to false. Before setting it to
996           true, you should check that mtime is working properly on your
997           system. See git-update-index(1).  keep by default, unless
998           feature.manyFiles is enabled which sets this setting to true by
999           default.
1000
1001       core.checkStat
1002           When missing or is set to default, many fields in the stat
1003           structure are checked to detect if a file has been modified since
1004           Git looked at it. When this configuration variable is set to
1005           minimal, sub-second part of mtime and ctime, the uid and gid of the
1006           owner of the file, the inode number (and the device number, if Git
1007           was compiled to use it), are excluded from the check among these
1008           fields, leaving only the whole-second part of mtime (and ctime, if
1009           core.trustCtime is set) and the filesize to be checked.
1010
1011           There are implementations of Git that do not leave usable values in
1012           some fields (e.g. JGit); by excluding these fields from the
1013           comparison, the minimal mode may help interoperability when the
1014           same repository is used by these other systems at the same time.
1015
1016       core.quotePath
1017           Commands that output paths (e.g.  ls-files, diff), will quote
1018           "unusual" characters in the pathname by enclosing the pathname in
1019           double-quotes and escaping those characters with backslashes in the
1020           same way C escapes control characters (e.g.  \t for TAB, \n for LF,
1021           \\ for backslash) or bytes with values larger than 0x80 (e.g. octal
1022           \302\265 for "micro" in UTF-8). If this variable is set to false,
1023           bytes higher than 0x80 are not considered "unusual" any more.
1024           Double-quotes, backslash and control characters are always escaped
1025           regardless of the setting of this variable. A simple space
1026           character is not considered "unusual". Many commands can output
1027           pathnames completely verbatim using the -z option. The default
1028           value is true.
1029
1030       core.eol
1031           Sets the line ending type to use in the working directory for files
1032           that are marked as text (either by having the text attribute set,
1033           or by having text=auto and Git auto-detecting the contents as
1034           text). Alternatives are lf, crlf and native, which uses the
1035           platform’s native line ending. The default value is native. See
1036           gitattributes(5) for more information on end-of-line conversion.
1037           Note that this value is ignored if core.autocrlf is set to true or
1038           input.
1039
1040       core.safecrlf
1041           If true, makes Git check if converting CRLF is reversible when
1042           end-of-line conversion is active. Git will verify if a command
1043           modifies a file in the work tree either directly or indirectly. For
1044           example, committing a file followed by checking out the same file
1045           should yield the original file in the work tree. If this is not the
1046           case for the current setting of core.autocrlf, Git will reject the
1047           file. The variable can be set to "warn", in which case Git will
1048           only warn about an irreversible conversion but continue the
1049           operation.
1050
1051           CRLF conversion bears a slight chance of corrupting data. When it
1052           is enabled, Git will convert CRLF to LF during commit and LF to
1053           CRLF during checkout. A file that contains a mixture of LF and CRLF
1054           before the commit cannot be recreated by Git. For text files this
1055           is the right thing to do: it corrects line endings such that we
1056           have only LF line endings in the repository. But for binary files
1057           that are accidentally classified as text the conversion can corrupt
1058           data.
1059
1060           If you recognize such corruption early you can easily fix it by
1061           setting the conversion type explicitly in .gitattributes. Right
1062           after committing you still have the original file in your work tree
1063           and this file is not yet corrupted. You can explicitly tell Git
1064           that this file is binary and Git will handle the file
1065           appropriately.
1066
1067           Unfortunately, the desired effect of cleaning up text files with
1068           mixed line endings and the undesired effect of corrupting binary
1069           files cannot be distinguished. In both cases CRLFs are removed in
1070           an irreversible way. For text files this is the right thing to do
1071           because CRLFs are line endings, while for binary files converting
1072           CRLFs corrupts data.
1073
1074           Note, this safety check does not mean that a checkout will generate
1075           a file identical to the original file for a different setting of
1076           core.eol and core.autocrlf, but only for the current one. For
1077           example, a text file with LF would be accepted with core.eol=lf and
1078           could later be checked out with core.eol=crlf, in which case the
1079           resulting file would contain CRLF, although the original file
1080           contained LF. However, in both work trees the line endings would be
1081           consistent, that is either all LF or all CRLF, but never mixed. A
1082           file with mixed line endings would be reported by the core.safecrlf
1083           mechanism.
1084
1085       core.autocrlf
1086           Setting this variable to "true" is the same as setting the text
1087           attribute to "auto" on all files and core.eol to "crlf". Set to
1088           true if you want to have CRLF line endings in your working
1089           directory and the repository has LF line endings. This variable can
1090           be set to input, in which case no output conversion is performed.
1091
1092       core.checkRoundtripEncoding
1093           A comma and/or whitespace separated list of encodings that Git
1094           performs UTF-8 round trip checks on if they are used in an
1095           working-tree-encoding attribute (see gitattributes(5)). The default
1096           value is SHIFT-JIS.
1097
1098       core.symlinks
1099           If false, symbolic links are checked out as small plain files that
1100           contain the link text.  git-update-index(1) and git-add(1) will not
1101           change the recorded type to regular file. Useful on filesystems
1102           like FAT that do not support symbolic links.
1103
1104           The default is true, except git-clone(1) or git-init(1) will probe
1105           and set core.symlinks false if appropriate when the repository is
1106           created.
1107
1108       core.gitProxy
1109           A "proxy command" to execute (as command host port) instead of
1110           establishing direct connection to the remote server when using the
1111           Git protocol for fetching. If the variable value is in the "COMMAND
1112           for DOMAIN" format, the command is applied only on hostnames ending
1113           with the specified domain string. This variable may be set multiple
1114           times and is matched in the given order; the first match wins.
1115
1116           Can be overridden by the GIT_PROXY_COMMAND environment variable
1117           (which always applies universally, without the special "for"
1118           handling).
1119
1120           The special string none can be used as the proxy command to specify
1121           that no proxy be used for a given domain pattern. This is useful
1122           for excluding servers inside a firewall from proxy use, while
1123           defaulting to a common proxy for external domains.
1124
1125       core.sshCommand
1126           If this variable is set, git fetch and git push will use the
1127           specified command instead of ssh when they need to connect to a
1128           remote system. The command is in the same form as the
1129           GIT_SSH_COMMAND environment variable and is overridden when the
1130           environment variable is set.
1131
1132       core.ignoreStat
1133           If true, Git will avoid using lstat() calls to detect if files have
1134           changed by setting the "assume-unchanged" bit for those tracked
1135           files which it has updated identically in both the index and
1136           working tree.
1137
1138           When files are modified outside of Git, the user will need to stage
1139           the modified files explicitly (e.g. see Examples section in git-
1140           update-index(1)). Git will not normally detect changes to those
1141           files.
1142
1143           This is useful on systems where lstat() calls are very slow, such
1144           as CIFS/Microsoft Windows.
1145
1146           False by default.
1147
1148       core.preferSymlinkRefs
1149           Instead of the default "symref" format for HEAD and other symbolic
1150           reference files, use symbolic links. This is sometimes needed to
1151           work with old scripts that expect HEAD to be a symbolic link.
1152
1153       core.alternateRefsCommand
1154           When advertising tips of available history from an alternate, use
1155           the shell to execute the specified command instead of git-for-each-
1156           ref(1). The first argument is the absolute path of the alternate.
1157           Output must contain one hex object id per line (i.e., the same as
1158           produced by git for-each-ref --format='%(objectname)').
1159
1160           Note that you cannot generally put git for-each-ref directly into
1161           the config value, as it does not take a repository path as an
1162           argument (but you can wrap the command above in a shell script).
1163
1164       core.alternateRefsPrefixes
1165           When listing references from an alternate, list only references
1166           that begin with the given prefix. Prefixes match as if they were
1167           given as arguments to git-for-each-ref(1). To list multiple
1168           prefixes, separate them with whitespace. If
1169           core.alternateRefsCommand is set, setting
1170           core.alternateRefsPrefixes has no effect.
1171
1172       core.bare
1173           If true this repository is assumed to be bare and has no working
1174           directory associated with it. If this is the case a number of
1175           commands that require a working directory will be disabled, such as
1176           git-add(1) or git-merge(1).
1177
1178           This setting is automatically guessed by git-clone(1) or git-
1179           init(1) when the repository was created. By default a repository
1180           that ends in "/.git" is assumed to be not bare (bare = false),
1181           while all other repositories are assumed to be bare (bare = true).
1182
1183       core.worktree
1184           Set the path to the root of the working tree. If GIT_COMMON_DIR
1185           environment variable is set, core.worktree is ignored and not used
1186           for determining the root of working tree. This can be overridden by
1187           the GIT_WORK_TREE environment variable and the --work-tree
1188           command-line option. The value can be an absolute path or relative
1189           to the path to the .git directory, which is either specified by
1190           --git-dir or GIT_DIR, or automatically discovered. If --git-dir or
1191           GIT_DIR is specified but none of --work-tree, GIT_WORK_TREE and
1192           core.worktree is specified, the current working directory is
1193           regarded as the top level of your working tree.
1194
1195           Note that this variable is honored even when set in a configuration
1196           file in a ".git" subdirectory of a directory and its value differs
1197           from the latter directory (e.g. "/path/to/.git/config" has
1198           core.worktree set to "/different/path"), which is most likely a
1199           misconfiguration. Running Git commands in the "/path/to" directory
1200           will still use "/different/path" as the root of the work tree and
1201           can cause confusion unless you know what you are doing (e.g. you
1202           are creating a read-only snapshot of the same index to a location
1203           different from the repository’s usual working tree).
1204
1205       core.logAllRefUpdates
1206           Enable the reflog. Updates to a ref <ref> is logged to the file
1207           "$GIT_DIR/logs/<ref>", by appending the new and old SHA-1, the
1208           date/time and the reason of the update, but only when the file
1209           exists. If this configuration variable is set to true, missing
1210           "$GIT_DIR/logs/<ref>" file is automatically created for branch
1211           heads (i.e. under refs/heads/), remote refs (i.e. under
1212           refs/remotes/), note refs (i.e. under refs/notes/), and the
1213           symbolic ref HEAD. If it is set to always, then a missing reflog is
1214           automatically created for any ref under refs/.
1215
1216           This information can be used to determine what commit was the tip
1217           of a branch "2 days ago".
1218
1219           This value is true by default in a repository that has a working
1220           directory associated with it, and false by default in a bare
1221           repository.
1222
1223       core.repositoryFormatVersion
1224           Internal variable identifying the repository format and layout
1225           version.
1226
1227       core.sharedRepository
1228           When group (or true), the repository is made shareable between
1229           several users in a group (making sure all the files and objects are
1230           group-writable). When all (or world or everybody), the repository
1231           will be readable by all users, additionally to being
1232           group-shareable. When umask (or false), Git will use permissions
1233           reported by umask(2). When 0xxx, where 0xxx is an octal number,
1234           files in the repository will have this mode value.  0xxx will
1235           override user’s umask value (whereas the other options will only
1236           override requested parts of the user’s umask value). Examples: 0660
1237           will make the repo read/write-able for the owner and group, but
1238           inaccessible to others (equivalent to group unless umask is e.g.
1239           0022).  0640 is a repository that is group-readable but not
1240           group-writable. See git-init(1). False by default.
1241
1242       core.warnAmbiguousRefs
1243           If true, Git will warn you if the ref name you passed it is
1244           ambiguous and might match multiple refs in the repository. True by
1245           default.
1246
1247       core.compression
1248           An integer -1..9, indicating a default compression level. -1 is the
1249           zlib default. 0 means no compression, and 1..9 are various
1250           speed/size tradeoffs, 9 being slowest. If set, this provides a
1251           default to other compression variables, such as
1252           core.looseCompression and pack.compression.
1253
1254       core.looseCompression
1255           An integer -1..9, indicating the compression level for objects that
1256           are not in a pack file. -1 is the zlib default. 0 means no
1257           compression, and 1..9 are various speed/size tradeoffs, 9 being
1258           slowest. If not set, defaults to core.compression. If that is not
1259           set, defaults to 1 (best speed).
1260
1261       core.packedGitWindowSize
1262           Number of bytes of a pack file to map into memory in a single
1263           mapping operation. Larger window sizes may allow your system to
1264           process a smaller number of large pack files more quickly. Smaller
1265           window sizes will negatively affect performance due to increased
1266           calls to the operating system’s memory manager, but may improve
1267           performance when accessing a large number of large pack files.
1268
1269           Default is 1 MiB if NO_MMAP was set at compile time, otherwise 32
1270           MiB on 32 bit platforms and 1 GiB on 64 bit platforms. This should
1271           be reasonable for all users/operating systems. You probably do not
1272           need to adjust this value.
1273
1274           Common unit suffixes of k, m, or g are supported.
1275
1276       core.packedGitLimit
1277           Maximum number of bytes to map simultaneously into memory from pack
1278           files. If Git needs to access more than this many bytes at once to
1279           complete an operation it will unmap existing regions to reclaim
1280           virtual address space within the process.
1281
1282           Default is 256 MiB on 32 bit platforms and 32 TiB (effectively
1283           unlimited) on 64 bit platforms. This should be reasonable for all
1284           users/operating systems, except on the largest projects. You
1285           probably do not need to adjust this value.
1286
1287           Common unit suffixes of k, m, or g are supported.
1288
1289       core.deltaBaseCacheLimit
1290           Maximum number of bytes per thread to reserve for caching base
1291           objects that may be referenced by multiple deltified objects. By
1292           storing the entire decompressed base objects in a cache Git is able
1293           to avoid unpacking and decompressing frequently used base objects
1294           multiple times.
1295
1296           Default is 96 MiB on all platforms. This should be reasonable for
1297           all users/operating systems, except on the largest projects. You
1298           probably do not need to adjust this value.
1299
1300           Common unit suffixes of k, m, or g are supported.
1301
1302       core.bigFileThreshold
1303           Files larger than this size are stored deflated, without attempting
1304           delta compression. Storing large files without delta compression
1305           avoids excessive memory usage, at the slight expense of increased
1306           disk usage. Additionally files larger than this size are always
1307           treated as binary.
1308
1309           Default is 512 MiB on all platforms. This should be reasonable for
1310           most projects as source code and other text files can still be
1311           delta compressed, but larger binary media files won’t be.
1312
1313           Common unit suffixes of k, m, or g are supported.
1314
1315       core.excludesFile
1316           Specifies the pathname to the file that contains patterns to
1317           describe paths that are not meant to be tracked, in addition to
1318           .gitignore (per-directory) and .git/info/exclude. Defaults to
1319           $XDG_CONFIG_HOME/git/ignore. If $XDG_CONFIG_HOME is either not set
1320           or empty, $HOME/.config/git/ignore is used instead. See
1321           gitignore(5).
1322
1323       core.askPass
1324           Some commands (e.g. svn and http interfaces) that interactively ask
1325           for a password can be told to use an external program given via the
1326           value of this variable. Can be overridden by the GIT_ASKPASS
1327           environment variable. If not set, fall back to the value of the
1328           SSH_ASKPASS environment variable or, failing that, a simple
1329           password prompt. The external program shall be given a suitable
1330           prompt as command-line argument and write the password on its
1331           STDOUT.
1332
1333       core.attributesFile
1334           In addition to .gitattributes (per-directory) and
1335           .git/info/attributes, Git looks into this file for attributes (see
1336           gitattributes(5)). Path expansions are made the same way as for
1337           core.excludesFile. Its default value is
1338           $XDG_CONFIG_HOME/git/attributes. If $XDG_CONFIG_HOME is either not
1339           set or empty, $HOME/.config/git/attributes is used instead.
1340
1341       core.hooksPath
1342           By default Git will look for your hooks in the $GIT_DIR/hooks
1343           directory. Set this to different path, e.g.  /etc/git/hooks, and
1344           Git will try to find your hooks in that directory, e.g.
1345           /etc/git/hooks/pre-receive instead of in
1346           $GIT_DIR/hooks/pre-receive.
1347
1348           The path can be either absolute or relative. A relative path is
1349           taken as relative to the directory where the hooks are run (see the
1350           "DESCRIPTION" section of githooks(5)).
1351
1352           This configuration variable is useful in cases where you’d like to
1353           centrally configure your Git hooks instead of configuring them on a
1354           per-repository basis, or as a more flexible and centralized
1355           alternative to having an init.templateDir where you’ve changed
1356           default hooks.
1357
1358       core.editor
1359           Commands such as commit and tag that let you edit messages by
1360           launching an editor use the value of this variable when it is set,
1361           and the environment variable GIT_EDITOR is not set. See git-var(1).
1362
1363       core.commentChar
1364           Commands such as commit and tag that let you edit messages consider
1365           a line that begins with this character commented, and removes them
1366           after the editor returns (default #).
1367
1368           If set to "auto", git-commit would select a character that is not
1369           the beginning character of any line in existing commit messages.
1370
1371       core.filesRefLockTimeout
1372           The length of time, in milliseconds, to retry when trying to lock
1373           an individual reference. Value 0 means not to retry at all; -1
1374           means to try indefinitely. Default is 100 (i.e., retry for 100ms).
1375
1376       core.packedRefsTimeout
1377           The length of time, in milliseconds, to retry when trying to lock
1378           the packed-refs file. Value 0 means not to retry at all; -1 means
1379           to try indefinitely. Default is 1000 (i.e., retry for 1 second).
1380
1381       core.pager
1382           Text viewer for use by Git commands (e.g., less). The value is
1383           meant to be interpreted by the shell. The order of preference is
1384           the $GIT_PAGER environment variable, then core.pager configuration,
1385           then $PAGER, and then the default chosen at compile time (usually
1386           less).
1387
1388           When the LESS environment variable is unset, Git sets it to FRX (if
1389           LESS environment variable is set, Git does not change it at all).
1390           If you want to selectively override Git’s default setting for LESS,
1391           you can set core.pager to e.g.  less -S. This will be passed to the
1392           shell by Git, which will translate the final command to LESS=FRX
1393           less -S. The environment does not set the S option but the command
1394           line does, instructing less to truncate long lines. Similarly,
1395           setting core.pager to less -+F will deactivate the F option
1396           specified by the environment from the command-line, deactivating
1397           the "quit if one screen" behavior of less. One can specifically
1398           activate some flags for particular commands: for example, setting
1399           pager.blame to less -S enables line truncation only for git blame.
1400
1401           Likewise, when the LV environment variable is unset, Git sets it to
1402           -c. You can override this setting by exporting LV with another
1403           value or setting core.pager to lv +c.
1404
1405       core.whitespace
1406           A comma separated list of common whitespace problems to notice.
1407           git diff will use color.diff.whitespace to highlight them, and git
1408           apply --whitespace=error will consider them as errors. You can
1409           prefix - to disable any of them (e.g.  -trailing-space):
1410
1411blank-at-eol treats trailing whitespaces at the end of the line
1412               as an error (enabled by default).
1413
1414space-before-tab treats a space character that appears
1415               immediately before a tab character in the initial indent part
1416               of the line as an error (enabled by default).
1417
1418indent-with-non-tab treats a line that is indented with space
1419               characters instead of the equivalent tabs as an error (not
1420               enabled by default).
1421
1422tab-in-indent treats a tab character in the initial indent part
1423               of the line as an error (not enabled by default).
1424
1425blank-at-eof treats blank lines added at the end of file as an
1426               error (enabled by default).
1427
1428trailing-space is a short-hand to cover both blank-at-eol and
1429               blank-at-eof.
1430
1431cr-at-eol treats a carriage-return at the end of line as part
1432               of the line terminator, i.e. with it, trailing-space does not
1433               trigger if the character before such a carriage-return is not a
1434               whitespace (not enabled by default).
1435
1436tabwidth=<n> tells how many character positions a tab occupies;
1437               this is relevant for indent-with-non-tab and when Git fixes
1438               tab-in-indent errors. The default tab width is 8. Allowed
1439               values are 1 to 63.
1440
1441       core.fsyncObjectFiles
1442           This boolean will enable fsync() when writing object files.
1443
1444           This is a total waste of time and effort on a filesystem that
1445           orders data writes properly, but can be useful for filesystems that
1446           do not use journalling (traditional UNIX filesystems) or that only
1447           journal metadata and not file contents (OS X’s HFS+, or Linux ext3
1448           with "data=writeback").
1449
1450       core.preloadIndex
1451           Enable parallel index preload for operations like git diff
1452
1453           This can speed up operations like git diff and git status
1454           especially on filesystems like NFS that have weak caching semantics
1455           and thus relatively high IO latencies. When enabled, Git will do
1456           the index comparison to the filesystem data in parallel, allowing
1457           overlapping IO’s. Defaults to true.
1458
1459       core.unsetenvvars
1460           Windows-only: comma-separated list of environment variables' names
1461           that need to be unset before spawning any other process. Defaults
1462           to PERL5LIB to account for the fact that Git for Windows insists on
1463           using its own Perl interpreter.
1464
1465       core.restrictinheritedhandles
1466           Windows-only: override whether spawned processes inherit only
1467           standard file handles (stdin, stdout and stderr) or all handles.
1468           Can be auto, true or false. Defaults to auto, which means true on
1469           Windows 7 and later, and false on older Windows versions.
1470
1471       core.createObject
1472           You can set this to link, in which case a hardlink followed by a
1473           delete of the source are used to make sure that object creation
1474           will not overwrite existing objects.
1475
1476           On some file system/operating system combinations, this is
1477           unreliable. Set this config setting to rename there; However, This
1478           will remove the check that makes sure that existing object files
1479           will not get overwritten.
1480
1481       core.notesRef
1482           When showing commit messages, also show notes which are stored in
1483           the given ref. The ref must be fully qualified. If the given ref
1484           does not exist, it is not an error but means that no notes should
1485           be printed.
1486
1487           This setting defaults to "refs/notes/commits", and it can be
1488           overridden by the GIT_NOTES_REF environment variable. See git-
1489           notes(1).
1490
1491       core.commitGraph
1492           If true, then git will read the commit-graph file (if it exists) to
1493           parse the graph structure of commits. Defaults to true. See git-
1494           commit-graph(1) for more information.
1495
1496       core.useReplaceRefs
1497           If set to false, behave as if the --no-replace-objects option was
1498           given on the command line. See git(1) and git-replace(1) for more
1499           information.
1500
1501       core.multiPackIndex
1502           Use the multi-pack-index file to track multiple packfiles using a
1503           single index. See git-multi-pack-index(1) for more information.
1504           Defaults to true.
1505
1506       core.sparseCheckout
1507           Enable "sparse checkout" feature. See git-sparse-checkout(1) for
1508           more information.
1509
1510       core.sparseCheckoutCone
1511           Enables the "cone mode" of the sparse checkout feature. When the
1512           sparse-checkout file contains a limited set of patterns, then this
1513           mode provides significant performance advantages. See git-sparse-
1514           checkout(1) for more information.
1515
1516       core.abbrev
1517           Set the length object names are abbreviated to. If unspecified or
1518           set to "auto", an appropriate value is computed based on the
1519           approximate number of packed objects in your repository, which
1520           hopefully is enough for abbreviated object names to stay unique for
1521           some time. If set to "no", no abbreviation is made and the object
1522           names are shown in their full length. The minimum length is 4.
1523
1524       add.ignoreErrors, add.ignore-errors (deprecated)
1525           Tells git add to continue adding files when some files cannot be
1526           added due to indexing errors. Equivalent to the --ignore-errors
1527           option of git-add(1).  add.ignore-errors is deprecated, as it does
1528           not follow the usual naming convention for configuration variables.
1529
1530       add.interactive.useBuiltin
1531           [EXPERIMENTAL] Set to true to use the experimental built-in
1532           implementation of the interactive version of git-add(1) instead of
1533           the Perl script version. Is false by default.
1534
1535       alias.*
1536           Command aliases for the git(1) command wrapper - e.g. after
1537           defining alias.last = cat-file commit HEAD, the invocation git last
1538           is equivalent to git cat-file commit HEAD. To avoid confusion and
1539           troubles with script usage, aliases that hide existing Git commands
1540           are ignored. Arguments are split by spaces, the usual shell quoting
1541           and escaping is supported. A quote pair or a backslash can be used
1542           to quote them.
1543
1544           Note that the first word of an alias does not necessarily have to
1545           be a command. It can be a command-line option that will be passed
1546           into the invocation of git. In particular, this is useful when used
1547           with -c to pass in one-time configurations or -p to force
1548           pagination. For example, loud-rebase = -c commit.verbose=true
1549           rebase can be defined such that running git loud-rebase would be
1550           equivalent to git -c commit.verbose=true rebase. Also, ps = -p
1551           status would be a helpful alias since git ps would paginate the
1552           output of git status where the original command does not.
1553
1554           If the alias expansion is prefixed with an exclamation point, it
1555           will be treated as a shell command. For example, defining alias.new
1556           = !gitk --all --not ORIG_HEAD, the invocation git new is equivalent
1557           to running the shell command gitk --all --not ORIG_HEAD. Note that
1558           shell commands will be executed from the top-level directory of a
1559           repository, which may not necessarily be the current directory.
1560           GIT_PREFIX is set as returned by running git rev-parse
1561           --show-prefix from the original current directory. See git-rev-
1562           parse(1).
1563
1564       am.keepcr
1565           If true, git-am will call git-mailsplit for patches in mbox format
1566           with parameter --keep-cr. In this case git-mailsplit will not
1567           remove \r from lines ending with \r\n. Can be overridden by giving
1568           --no-keep-cr from the command line. See git-am(1), git-
1569           mailsplit(1).
1570
1571       am.threeWay
1572           By default, git am will fail if the patch does not apply cleanly.
1573           When set to true, this setting tells git am to fall back on 3-way
1574           merge if the patch records the identity of blobs it is supposed to
1575           apply to and we have those blobs available locally (equivalent to
1576           giving the --3way option from the command line). Defaults to false.
1577           See git-am(1).
1578
1579       apply.ignoreWhitespace
1580           When set to change, tells git apply to ignore changes in
1581           whitespace, in the same way as the --ignore-space-change option.
1582           When set to one of: no, none, never, false tells git apply to
1583           respect all whitespace differences. See git-apply(1).
1584
1585       apply.whitespace
1586           Tells git apply how to handle whitespaces, in the same way as the
1587           --whitespace option. See git-apply(1).
1588
1589       blame.blankBoundary
1590           Show blank commit object name for boundary commits in git-blame(1).
1591           This option defaults to false.
1592
1593       blame.coloring
1594           This determines the coloring scheme to be applied to blame output.
1595           It can be repeatedLines, highlightRecent, or none which is the
1596           default.
1597
1598       blame.date
1599           Specifies the format used to output dates in git-blame(1). If unset
1600           the iso format is used. For supported values, see the discussion of
1601           the --date option at git-log(1).
1602
1603       blame.showEmail
1604           Show the author email instead of author name in git-blame(1). This
1605           option defaults to false.
1606
1607       blame.showRoot
1608           Do not treat root commits as boundaries in git-blame(1). This
1609           option defaults to false.
1610
1611       blame.ignoreRevsFile
1612           Ignore revisions listed in the file, one unabbreviated object name
1613           per line, in git-blame(1). Whitespace and comments beginning with #
1614           are ignored. This option may be repeated multiple times. Empty file
1615           names will reset the list of ignored revisions. This option will be
1616           handled before the command line option --ignore-revs-file.
1617
1618       blame.markUnblamableLines
1619           Mark lines that were changed by an ignored revision that we could
1620           not attribute to another commit with a * in the output of git-
1621           blame(1).
1622
1623       blame.markIgnoredLines
1624           Mark lines that were changed by an ignored revision that we
1625           attributed to another commit with a ?  in the output of git-
1626           blame(1).
1627
1628       branch.autoSetupMerge
1629           Tells git branch, git switch and git checkout to set up new
1630           branches so that git-pull(1) will appropriately merge from the
1631           starting point branch. Note that even if this option is not set,
1632           this behavior can be chosen per-branch using the --track and
1633           --no-track options. The valid settings are: false — no automatic
1634           setup is done; true — automatic setup is done when the starting
1635           point is a remote-tracking branch; always — automatic setup is done
1636           when the starting point is either a local branch or remote-tracking
1637           branch. This option defaults to true.
1638
1639       branch.autoSetupRebase
1640           When a new branch is created with git branch, git switch or git
1641           checkout that tracks another branch, this variable tells Git to set
1642           up pull to rebase instead of merge (see "branch.<name>.rebase").
1643           When never, rebase is never automatically set to true. When local,
1644           rebase is set to true for tracked branches of other local branches.
1645           When remote, rebase is set to true for tracked branches of
1646           remote-tracking branches. When always, rebase will be set to true
1647           for all tracking branches. See "branch.autoSetupMerge" for details
1648           on how to set up a branch to track another branch. This option
1649           defaults to never.
1650
1651       branch.sort
1652           This variable controls the sort ordering of branches when displayed
1653           by git-branch(1). Without the "--sort=<value>" option provided, the
1654           value of this variable will be used as the default. See git-for-
1655           each-ref(1) field names for valid values.
1656
1657       branch.<name>.remote
1658           When on branch <name>, it tells git fetch and git push which remote
1659           to fetch from/push to. The remote to push to may be overridden with
1660           remote.pushDefault (for all branches). The remote to push to, for
1661           the current branch, may be further overridden by
1662           branch.<name>.pushRemote. If no remote is configured, or if you are
1663           not on any branch, it defaults to origin for fetching and
1664           remote.pushDefault for pushing. Additionally, .  (a period) is the
1665           current local repository (a dot-repository), see
1666           branch.<name>.merge's final note below.
1667
1668       branch.<name>.pushRemote
1669           When on branch <name>, it overrides branch.<name>.remote for
1670           pushing. It also overrides remote.pushDefault for pushing from
1671           branch <name>. When you pull from one place (e.g. your upstream)
1672           and push to another place (e.g. your own publishing repository),
1673           you would want to set remote.pushDefault to specify the remote to
1674           push to for all branches, and use this option to override it for a
1675           specific branch.
1676
1677       branch.<name>.merge
1678           Defines, together with branch.<name>.remote, the upstream branch
1679           for the given branch. It tells git fetch/git pull/git rebase which
1680           branch to merge and can also affect git push (see push.default).
1681           When in branch <name>, it tells git fetch the default refspec to be
1682           marked for merging in FETCH_HEAD. The value is handled like the
1683           remote part of a refspec, and must match a ref which is fetched
1684           from the remote given by "branch.<name>.remote". The merge
1685           information is used by git pull (which at first calls git fetch) to
1686           lookup the default branch for merging. Without this option, git
1687           pull defaults to merge the first refspec fetched. Specify multiple
1688           values to get an octopus merge. If you wish to setup git pull so
1689           that it merges into <name> from another branch in the local
1690           repository, you can point branch.<name>.merge to the desired
1691           branch, and use the relative path setting .  (a period) for
1692           branch.<name>.remote.
1693
1694       branch.<name>.mergeOptions
1695           Sets default options for merging into branch <name>. The syntax and
1696           supported options are the same as those of git-merge(1), but option
1697           values containing whitespace characters are currently not
1698           supported.
1699
1700       branch.<name>.rebase
1701           When true, rebase the branch <name> on top of the fetched branch,
1702           instead of merging the default branch from the default remote when
1703           "git pull" is run. See "pull.rebase" for doing this in a non
1704           branch-specific manner.
1705
1706           When merges (or just m), pass the --rebase-merges option to git
1707           rebase so that the local merge commits are included in the rebase
1708           (see git-rebase(1) for details).
1709
1710           When preserve (or just p, deprecated in favor of merges), also pass
1711           --preserve-merges along to git rebase so that locally committed
1712           merge commits will not be flattened by running git pull.
1713
1714           When the value is interactive (or just i), the rebase is run in
1715           interactive mode.
1716
1717           NOTE: this is a possibly dangerous operation; do not use it unless
1718           you understand the implications (see git-rebase(1) for details).
1719
1720       branch.<name>.description
1721           Branch description, can be edited with git branch
1722           --edit-description. Branch description is automatically added in
1723           the format-patch cover letter or request-pull summary.
1724
1725       browser.<tool>.cmd
1726           Specify the command to invoke the specified browser. The specified
1727           command is evaluated in shell with the URLs passed as arguments.
1728           (See git-web--browse(1).)
1729
1730       browser.<tool>.path
1731           Override the path for the given tool that may be used to browse
1732           HTML help (see -w option in git-help(1)) or a working repository in
1733           gitweb (see git-instaweb(1)).
1734
1735       checkout.defaultRemote
1736           When you run git checkout <something> or git switch <something> and
1737           only have one remote, it may implicitly fall back on checking out
1738           and tracking e.g.  origin/<something>. This stops working as soon
1739           as you have more than one remote with a <something> reference. This
1740           setting allows for setting the name of a preferred remote that
1741           should always win when it comes to disambiguation. The typical
1742           use-case is to set this to origin.
1743
1744           Currently this is used by git-switch(1) and git-checkout(1) when
1745           git checkout <something> or git switch <something> will checkout
1746           the <something> branch on another remote, and by git-worktree(1)
1747           when git worktree add refers to a remote branch. This setting might
1748           be used for other checkout-like commands or functionality in the
1749           future.
1750
1751       checkout.guess
1752           Provides the default value for the --guess or --no-guess option in
1753           git checkout and git switch. See git-switch(1) and git-checkout(1).
1754
1755       checkout.workers
1756           The number of parallel workers to use when updating the working
1757           tree. The default is one, i.e. sequential execution. If set to a
1758           value less than one, Git will use as many workers as the number of
1759           logical cores available. This setting and
1760           checkout.thresholdForParallelism affect all commands that perform
1761           checkout. E.g. checkout, clone, reset, sparse-checkout, etc.
1762
1763           Note: parallel checkout usually delivers better performance for
1764           repositories located on SSDs or over NFS. For repositories on
1765           spinning disks and/or machines with a small number of cores, the
1766           default sequential checkout often performs better. The size and
1767           compression level of a repository might also influence how well the
1768           parallel version performs.
1769
1770       checkout.thresholdForParallelism
1771           When running parallel checkout with a small number of files, the
1772           cost of subprocess spawning and inter-process communication might
1773           outweigh the parallelization gains. This setting allows to define
1774           the minimum number of files for which parallel checkout should be
1775           attempted. The default is 100.
1776
1777       clean.requireForce
1778           A boolean to make git-clean do nothing unless given -f, -i or -n.
1779           Defaults to true.
1780
1781       clone.defaultRemoteName
1782           The name of the remote to create when cloning a repository.
1783           Defaults to origin, and can be overridden by passing the --origin
1784           command-line option to git-clone(1).
1785
1786       clone.rejectShallow
1787           Reject to clone a repository if it is a shallow one, can be
1788           overridden by passing option --reject-shallow in command line. See
1789           git-clone(1)
1790
1791       color.advice
1792           A boolean to enable/disable color in hints (e.g. when a push
1793           failed, see advice.*  for a list). May be set to always, false (or
1794           never) or auto (or true), in which case colors are used only when
1795           the error output goes to a terminal. If unset, then the value of
1796           color.ui is used (auto by default).
1797
1798       color.advice.hint
1799           Use customized color for hints.
1800
1801       color.blame.highlightRecent
1802           This can be used to color the metadata of a blame line depending on
1803           age of the line.
1804
1805           This setting should be set to a comma-separated list of color and
1806           date settings, starting and ending with a color, the dates should
1807           be set from oldest to newest. The metadata will be colored given
1808           the colors if the line was introduced before the given timestamp,
1809           overwriting older timestamped colors.
1810
1811           Instead of an absolute timestamp relative timestamps work as well,
1812           e.g. 2.weeks.ago is valid to address anything older than 2 weeks.
1813
1814           It defaults to blue,12 month ago,white,1 month ago,red, which
1815           colors everything older than one year blue, recent changes between
1816           one month and one year old are kept white, and lines introduced
1817           within the last month are colored red.
1818
1819       color.blame.repeatedLines
1820           Use the customized color for the part of git-blame output that is
1821           repeated meta information per line (such as commit id, author name,
1822           date and timezone). Defaults to cyan.
1823
1824       color.branch
1825           A boolean to enable/disable color in the output of git-branch(1).
1826           May be set to always, false (or never) or auto (or true), in which
1827           case colors are used only when the output is to a terminal. If
1828           unset, then the value of color.ui is used (auto by default).
1829
1830       color.branch.<slot>
1831           Use customized color for branch coloration.  <slot> is one of
1832           current (the current branch), local (a local branch), remote (a
1833           remote-tracking branch in refs/remotes/), upstream (upstream
1834           tracking branch), plain (other refs).
1835
1836       color.diff
1837           Whether to use ANSI escape sequences to add color to patches. If
1838           this is set to always, git-diff(1), git-log(1), and git-show(1)
1839           will use color for all patches. If it is set to true or auto, those
1840           commands will only use color when output is to the terminal. If
1841           unset, then the value of color.ui is used (auto by default).
1842
1843           This does not affect git-format-patch(1) or the git-diff-* plumbing
1844           commands. Can be overridden on the command line with the
1845           --color[=<when>] option.
1846
1847       color.diff.<slot>
1848           Use customized color for diff colorization.  <slot> specifies which
1849           part of the patch to use the specified color, and is one of context
1850           (context text - plain is a historical synonym), meta
1851           (metainformation), frag (hunk header), func (function in hunk
1852           header), old (removed lines), new (added lines), commit (commit
1853           headers), whitespace (highlighting whitespace errors), oldMoved
1854           (deleted lines), newMoved (added lines), oldMovedDimmed,
1855           oldMovedAlternative, oldMovedAlternativeDimmed, newMovedDimmed,
1856           newMovedAlternative newMovedAlternativeDimmed (See the <mode>
1857           setting of --color-moved in git-diff(1) for details),
1858           contextDimmed, oldDimmed, newDimmed, contextBold, oldBold, and
1859           newBold (see git-range-diff(1) for details).
1860
1861       color.decorate.<slot>
1862           Use customized color for git log --decorate output.  <slot> is one
1863           of branch, remoteBranch, tag, stash or HEAD for local branches,
1864           remote-tracking branches, tags, stash and HEAD, respectively and
1865           grafted for grafted commits.
1866
1867       color.grep
1868           When set to always, always highlight matches. When false (or
1869           never), never. When set to true or auto, use color only when the
1870           output is written to the terminal. If unset, then the value of
1871           color.ui is used (auto by default).
1872
1873       color.grep.<slot>
1874           Use customized color for grep colorization.  <slot> specifies which
1875           part of the line to use the specified color, and is one of
1876
1877           context
1878               non-matching text in context lines (when using -A, -B, or -C)
1879
1880           filename
1881               filename prefix (when not using -h)
1882
1883           function
1884               function name lines (when using -p)
1885
1886           lineNumber
1887               line number prefix (when using -n)
1888
1889           column
1890               column number prefix (when using --column)
1891
1892           match
1893               matching text (same as setting matchContext and matchSelected)
1894
1895           matchContext
1896               matching text in context lines
1897
1898           matchSelected
1899               matching text in selected lines
1900
1901           selected
1902               non-matching text in selected lines
1903
1904           separator
1905               separators between fields on a line (:, -, and =) and between
1906               hunks (--)
1907
1908       color.interactive
1909           When set to always, always use colors for interactive prompts and
1910           displays (such as those used by "git-add --interactive" and
1911           "git-clean --interactive"). When false (or never), never. When set
1912           to true or auto, use colors only when the output is to the
1913           terminal. If unset, then the value of color.ui is used (auto by
1914           default).
1915
1916       color.interactive.<slot>
1917           Use customized color for git add --interactive and git clean
1918           --interactive output.  <slot> may be prompt, header, help or error,
1919           for four distinct types of normal output from interactive commands.
1920
1921       color.pager
1922           A boolean to specify whether auto color modes should colorize
1923           output going to the pager. Defaults to true; set this to false if
1924           your pager does not understand ANSI color codes.
1925
1926       color.push
1927           A boolean to enable/disable color in push errors. May be set to
1928           always, false (or never) or auto (or true), in which case colors
1929           are used only when the error output goes to a terminal. If unset,
1930           then the value of color.ui is used (auto by default).
1931
1932       color.push.error
1933           Use customized color for push errors.
1934
1935       color.remote
1936           If set, keywords at the start of the line are highlighted. The
1937           keywords are "error", "warning", "hint" and "success", and are
1938           matched case-insensitively. May be set to always, false (or never)
1939           or auto (or true). If unset, then the value of color.ui is used
1940           (auto by default).
1941
1942       color.remote.<slot>
1943           Use customized color for each remote keyword.  <slot> may be hint,
1944           warning, success or error which match the corresponding keyword.
1945
1946       color.showBranch
1947           A boolean to enable/disable color in the output of git-show-
1948           branch(1). May be set to always, false (or never) or auto (or
1949           true), in which case colors are used only when the output is to a
1950           terminal. If unset, then the value of color.ui is used (auto by
1951           default).
1952
1953       color.status
1954           A boolean to enable/disable color in the output of git-status(1).
1955           May be set to always, false (or never) or auto (or true), in which
1956           case colors are used only when the output is to a terminal. If
1957           unset, then the value of color.ui is used (auto by default).
1958
1959       color.status.<slot>
1960           Use customized color for status colorization.  <slot> is one of
1961           header (the header text of the status message), added or updated
1962           (files which are added but not committed), changed (files which are
1963           changed but not added in the index), untracked (files which are not
1964           tracked by Git), branch (the current branch), nobranch (the color
1965           the no branch warning is shown in, defaulting to red), localBranch
1966           or remoteBranch (the local and remote branch names, respectively,
1967           when branch and tracking information is displayed in the status
1968           short-format), or unmerged (files which have unmerged changes).
1969
1970       color.transport
1971           A boolean to enable/disable color when pushes are rejected. May be
1972           set to always, false (or never) or auto (or true), in which case
1973           colors are used only when the error output goes to a terminal. If
1974           unset, then the value of color.ui is used (auto by default).
1975
1976       color.transport.rejected
1977           Use customized color when a push was rejected.
1978
1979       color.ui
1980           This variable determines the default value for variables such as
1981           color.diff and color.grep that control the use of color per command
1982           family. Its scope will expand as more commands learn configuration
1983           to set a default for the --color option. Set it to false or never
1984           if you prefer Git commands not to use color unless enabled
1985           explicitly with some other configuration or the --color option. Set
1986           it to always if you want all output not intended for machine
1987           consumption to use color, to true or auto (this is the default
1988           since Git 1.8.4) if you want such output to use color when written
1989           to the terminal.
1990
1991       column.ui
1992           Specify whether supported commands should output in columns. This
1993           variable consists of a list of tokens separated by spaces or
1994           commas:
1995
1996           These options control when the feature should be enabled (defaults
1997           to never):
1998
1999           always
2000               always show in columns
2001
2002           never
2003               never show in columns
2004
2005           auto
2006               show in columns if the output is to the terminal
2007
2008           These options control layout (defaults to column). Setting any of
2009           these implies always if none of always, never, or auto are
2010           specified.
2011
2012           column
2013               fill columns before rows
2014
2015           row
2016               fill rows before columns
2017
2018           plain
2019               show in one column
2020
2021           Finally, these options can be combined with a layout option
2022           (defaults to nodense):
2023
2024           dense
2025               make unequal size columns to utilize more space
2026
2027           nodense
2028               make equal size columns
2029
2030       column.branch
2031           Specify whether to output branch listing in git branch in columns.
2032           See column.ui for details.
2033
2034       column.clean
2035           Specify the layout when list items in git clean -i, which always
2036           shows files and directories in columns. See column.ui for details.
2037
2038       column.status
2039           Specify whether to output untracked files in git status in columns.
2040           See column.ui for details.
2041
2042       column.tag
2043           Specify whether to output tag listing in git tag in columns. See
2044           column.ui for details.
2045
2046       commit.cleanup
2047           This setting overrides the default of the --cleanup option in git
2048           commit. See git-commit(1) for details. Changing the default can be
2049           useful when you always want to keep lines that begin with comment
2050           character # in your log message, in which case you would do git
2051           config commit.cleanup whitespace (note that you will have to remove
2052           the help lines that begin with # in the commit log template
2053           yourself, if you do this).
2054
2055       commit.gpgSign
2056           A boolean to specify whether all commits should be GPG signed. Use
2057           of this option when doing operations such as rebase can result in a
2058           large number of commits being signed. It may be convenient to use
2059           an agent to avoid typing your GPG passphrase several times.
2060
2061       commit.status
2062           A boolean to enable/disable inclusion of status information in the
2063           commit message template when using an editor to prepare the commit
2064           message. Defaults to true.
2065
2066       commit.template
2067           Specify the pathname of a file to use as the template for new
2068           commit messages.
2069
2070       commit.verbose
2071           A boolean or int to specify the level of verbose with git commit.
2072           See git-commit(1).
2073
2074       commitGraph.generationVersion
2075           Specifies the type of generation number version to use when writing
2076           or reading the commit-graph file. If version 1 is specified, then
2077           the corrected commit dates will not be written or read. Defaults to
2078           2.
2079
2080       commitGraph.maxNewFilters
2081           Specifies the default value for the --max-new-filters option of git
2082           commit-graph write (c.f., git-commit-graph(1)).
2083
2084       commitGraph.readChangedPaths
2085           If true, then git will use the changed-path Bloom filters in the
2086           commit-graph file (if it exists, and they are present). Defaults to
2087           true. See git-commit-graph(1) for more information.
2088
2089       credential.helper
2090           Specify an external helper to be called when a username or password
2091           credential is needed; the helper may consult external storage to
2092           avoid prompting the user for the credentials. This is normally the
2093           name of a credential helper with possible arguments, but may also
2094           be an absolute path with arguments or, if preceded by !, shell
2095           commands.
2096
2097           Note that multiple helpers may be defined. See gitcredentials(7)
2098           for details and examples.
2099
2100       credential.useHttpPath
2101           When acquiring credentials, consider the "path" component of an
2102           http or https URL to be important. Defaults to false. See
2103           gitcredentials(7) for more information.
2104
2105       credential.username
2106           If no username is set for a network authentication, use this
2107           username by default. See credential.<context>.* below, and
2108           gitcredentials(7).
2109
2110       credential.<url>.*
2111           Any of the credential.* options above can be applied selectively to
2112           some credentials. For example
2113           "credential.https://example.com.username" would set the default
2114           username only for https connections to example.com. See
2115           gitcredentials(7) for details on how URLs are matched.
2116
2117       credentialCache.ignoreSIGHUP
2118           Tell git-credential-cache—daemon to ignore SIGHUP, instead of
2119           quitting.
2120
2121       credentialStore.lockTimeoutMS
2122           The length of time, in milliseconds, for git-credential-store to
2123           retry when trying to lock the credentials file. Value 0 means not
2124           to retry at all; -1 means to try indefinitely. Default is 1000
2125           (i.e., retry for 1s).
2126
2127       completion.commands
2128           This is only used by git-completion.bash to add or remove commands
2129           from the list of completed commands. Normally only porcelain
2130           commands and a few select others are completed. You can add more
2131           commands, separated by space, in this variable. Prefixing the
2132           command with - will remove it from the existing list.
2133
2134       diff.autoRefreshIndex
2135           When using git diff to compare with work tree files, do not
2136           consider stat-only change as changed. Instead, silently run git
2137           update-index --refresh to update the cached stat information for
2138           paths whose contents in the work tree match the contents in the
2139           index. This option defaults to true. Note that this affects only
2140           git diff Porcelain, and not lower level diff commands such as git
2141           diff-files.
2142
2143       diff.dirstat
2144           A comma separated list of --dirstat parameters specifying the
2145           default behavior of the --dirstat option to git-diff(1) and
2146           friends. The defaults can be overridden on the command line (using
2147           --dirstat=<param1,param2,...>). The fallback defaults (when not
2148           changed by diff.dirstat) are changes,noncumulative,3. The following
2149           parameters are available:
2150
2151           changes
2152               Compute the dirstat numbers by counting the lines that have
2153               been removed from the source, or added to the destination. This
2154               ignores the amount of pure code movements within a file. In
2155               other words, rearranging lines in a file is not counted as much
2156               as other changes. This is the default behavior when no
2157               parameter is given.
2158
2159           lines
2160               Compute the dirstat numbers by doing the regular line-based
2161               diff analysis, and summing the removed/added line counts. (For
2162               binary files, count 64-byte chunks instead, since binary files
2163               have no natural concept of lines). This is a more expensive
2164               --dirstat behavior than the changes behavior, but it does count
2165               rearranged lines within a file as much as other changes. The
2166               resulting output is consistent with what you get from the other
2167               --*stat options.
2168
2169           files
2170               Compute the dirstat numbers by counting the number of files
2171               changed. Each changed file counts equally in the dirstat
2172               analysis. This is the computationally cheapest --dirstat
2173               behavior, since it does not have to look at the file contents
2174               at all.
2175
2176           cumulative
2177               Count changes in a child directory for the parent directory as
2178               well. Note that when using cumulative, the sum of the
2179               percentages reported may exceed 100%. The default
2180               (non-cumulative) behavior can be specified with the
2181               noncumulative parameter.
2182
2183           <limit>
2184               An integer parameter specifies a cut-off percent (3% by
2185               default). Directories contributing less than this percentage of
2186               the changes are not shown in the output.
2187
2188           Example: The following will count changed files, while ignoring
2189           directories with less than 10% of the total amount of changed
2190           files, and accumulating child directory counts in the parent
2191           directories: files,10,cumulative.
2192
2193       diff.statGraphWidth
2194           Limit the width of the graph part in --stat output. If set, applies
2195           to all commands generating --stat output except format-patch.
2196
2197       diff.context
2198           Generate diffs with <n> lines of context instead of the default of
2199           3. This value is overridden by the -U option.
2200
2201       diff.interHunkContext
2202           Show the context between diff hunks, up to the specified number of
2203           lines, thereby fusing the hunks that are close to each other. This
2204           value serves as the default for the --inter-hunk-context command
2205           line option.
2206
2207       diff.external
2208           If this config variable is set, diff generation is not performed
2209           using the internal diff machinery, but using the given command. Can
2210           be overridden with the “GIT_EXTERNAL_DIFF” environment variable.
2211           The command is called with parameters as described under "git
2212           Diffs" in git(1). Note: if you want to use an external diff program
2213           only on a subset of your files, you might want to use
2214           gitattributes(5) instead.
2215
2216       diff.ignoreSubmodules
2217           Sets the default value of --ignore-submodules. Note that this
2218           affects only git diff Porcelain, and not lower level diff commands
2219           such as git diff-files.  git checkout and git switch also honor
2220           this setting when reporting uncommitted changes. Setting it to all
2221           disables the submodule summary normally shown by git commit and git
2222           status when status.submoduleSummary is set unless it is overridden
2223           by using the --ignore-submodules command-line option. The git
2224           submodule commands are not affected by this setting. By default
2225           this is set to untracked so that any untracked submodules are
2226           ignored.
2227
2228       diff.mnemonicPrefix
2229           If set, git diff uses a prefix pair that is different from the
2230           standard "a/" and "b/" depending on what is being compared. When
2231           this configuration is in effect, reverse diff output also swaps the
2232           order of the prefixes:
2233
2234           git diff
2235               compares the (i)ndex and the (w)ork tree;
2236
2237           git diff HEAD
2238               compares a (c)ommit and the (w)ork tree;
2239
2240           git diff --cached
2241               compares a (c)ommit and the (i)ndex;
2242
2243           git diff HEAD:file1 file2
2244               compares an (o)bject and a (w)ork tree entity;
2245
2246           git diff --no-index a b
2247               compares two non-git things (1) and (2).
2248
2249       diff.noprefix
2250           If set, git diff does not show any source or destination prefix.
2251
2252       diff.relative
2253           If set to true, git diff does not show changes outside of the
2254           directory and show pathnames relative to the current directory.
2255
2256       diff.orderFile
2257           File indicating how to order files within a diff. See the -O option
2258           to git-diff(1) for details. If diff.orderFile is a relative
2259           pathname, it is treated as relative to the top of the working tree.
2260
2261       diff.renameLimit
2262           The number of files to consider in the exhaustive portion of
2263           copy/rename detection; equivalent to the git diff option -l. If not
2264           set, the default value is currently 1000. This setting has no
2265           effect if rename detection is turned off.
2266
2267       diff.renames
2268           Whether and how Git detects renames. If set to "false", rename
2269           detection is disabled. If set to "true", basic rename detection is
2270           enabled. If set to "copies" or "copy", Git will detect copies, as
2271           well. Defaults to true. Note that this affects only git diff
2272           Porcelain like git-diff(1) and git-log(1), and not lower level
2273           commands such as git-diff-files(1).
2274
2275       diff.suppressBlankEmpty
2276           A boolean to inhibit the standard behavior of printing a space
2277           before each empty output line. Defaults to false.
2278
2279       diff.submodule
2280           Specify the format in which differences in submodules are shown.
2281           The "short" format just shows the names of the commits at the
2282           beginning and end of the range. The "log" format lists the commits
2283           in the range like git-submodule(1) summary does. The "diff" format
2284           shows an inline diff of the changed contents of the submodule.
2285           Defaults to "short".
2286
2287       diff.wordRegex
2288           A POSIX Extended Regular Expression used to determine what is a
2289           "word" when performing word-by-word difference calculations.
2290           Character sequences that match the regular expression are "words",
2291           all other characters are ignorable whitespace.
2292
2293       diff.<driver>.command
2294           The custom diff driver command. See gitattributes(5) for details.
2295
2296       diff.<driver>.xfuncname
2297           The regular expression that the diff driver should use to recognize
2298           the hunk header. A built-in pattern may also be used. See
2299           gitattributes(5) for details.
2300
2301       diff.<driver>.binary
2302           Set this option to true to make the diff driver treat files as
2303           binary. See gitattributes(5) for details.
2304
2305       diff.<driver>.textconv
2306           The command that the diff driver should call to generate the
2307           text-converted version of a file. The result of the conversion is
2308           used to generate a human-readable diff. See gitattributes(5) for
2309           details.
2310
2311       diff.<driver>.wordRegex
2312           The regular expression that the diff driver should use to split
2313           words in a line. See gitattributes(5) for details.
2314
2315       diff.<driver>.cachetextconv
2316           Set this option to true to make the diff driver cache the text
2317           conversion outputs. See gitattributes(5) for details.
2318
2319       diff.tool
2320           Controls which diff tool is used by git-difftool(1). This variable
2321           overrides the value configured in merge.tool. The list below shows
2322           the valid built-in values. Any other value is treated as a custom
2323           diff tool and requires that a corresponding difftool.<tool>.cmd
2324           variable is defined.
2325
2326       diff.guitool
2327           Controls which diff tool is used by git-difftool(1) when the
2328           -g/--gui flag is specified. This variable overrides the value
2329           configured in merge.guitool. The list below shows the valid
2330           built-in values. Any other value is treated as a custom diff tool
2331           and requires that a corresponding difftool.<guitool>.cmd variable
2332           is defined.
2333
2334           •   araxis
2335
2336           •   bc
2337
2338           •   bc3
2339
2340           •   bc4
2341
2342           •   codecompare
2343
2344           •   deltawalker
2345
2346           •   diffmerge
2347
2348           •   diffuse
2349
2350           •   ecmerge
2351
2352           •   emerge
2353
2354           •   examdiff
2355
2356           •   guiffy
2357
2358           •   gvimdiff
2359
2360           •   gvimdiff1
2361
2362           •   gvimdiff2
2363
2364           •   gvimdiff3
2365
2366           •   kdiff3
2367
2368           •   kompare
2369
2370           •   meld
2371
2372           •   nvimdiff
2373
2374           •   nvimdiff1
2375
2376           •   nvimdiff2
2377
2378           •   nvimdiff3
2379
2380           •   opendiff
2381
2382           •   p4merge
2383
2384           •   smerge
2385
2386           •   tkdiff
2387
2388           •   vimdiff
2389
2390           •   vimdiff1
2391
2392           •   vimdiff2
2393
2394           •   vimdiff3
2395
2396           •   winmerge
2397
2398           •   xxdiff
2399
2400       diff.indentHeuristic
2401           Set this option to false to disable the default heuristics that
2402           shift diff hunk boundaries to make patches easier to read.
2403
2404       diff.algorithm
2405           Choose a diff algorithm. The variants are as follows:
2406
2407           default, myers
2408               The basic greedy diff algorithm. Currently, this is the
2409               default.
2410
2411           minimal
2412               Spend extra time to make sure the smallest possible diff is
2413               produced.
2414
2415           patience
2416               Use "patience diff" algorithm when generating patches.
2417
2418           histogram
2419               This algorithm extends the patience algorithm to "support
2420               low-occurrence common elements".
2421
2422       diff.wsErrorHighlight
2423           Highlight whitespace errors in the context, old or new lines of the
2424           diff. Multiple values are separated by comma, none resets previous
2425           values, default reset the list to new and all is a shorthand for
2426           old,new,context. The whitespace errors are colored with
2427           color.diff.whitespace. The command line option
2428           --ws-error-highlight=<kind> overrides this setting.
2429
2430       diff.colorMoved
2431           If set to either a valid <mode> or a true value, moved lines in a
2432           diff are colored differently, for details of valid modes see
2433           --color-moved in git-diff(1). If simply set to true the default
2434           color mode will be used. When set to false, moved lines are not
2435           colored.
2436
2437       diff.colorMovedWS
2438           When moved lines are colored using e.g. the diff.colorMoved
2439           setting, this option controls the <mode> how spaces are treated for
2440           details of valid modes see --color-moved-ws in git-diff(1).
2441
2442       difftool.<tool>.path
2443           Override the path for the given tool. This is useful in case your
2444           tool is not in the PATH.
2445
2446       difftool.<tool>.cmd
2447           Specify the command to invoke the specified diff tool. The
2448           specified command is evaluated in shell with the following
2449           variables available: LOCAL is set to the name of the temporary file
2450           containing the contents of the diff pre-image and REMOTE is set to
2451           the name of the temporary file containing the contents of the diff
2452           post-image.
2453
2454       difftool.prompt
2455           Prompt before each invocation of the diff tool.
2456
2457       extensions.objectFormat
2458           Specify the hash algorithm to use. The acceptable values are sha1
2459           and sha256. If not specified, sha1 is assumed. It is an error to
2460           specify this key unless core.repositoryFormatVersion is 1.
2461
2462           Note that this setting should only be set by git-init(1) or git-
2463           clone(1). Trying to change it after initialization will not work
2464           and will produce hard-to-diagnose issues.
2465
2466       fastimport.unpackLimit
2467           If the number of objects imported by git-fast-import(1) is below
2468           this limit, then the objects will be unpacked into loose object
2469           files. However if the number of imported objects equals or exceeds
2470           this limit then the pack will be stored as a pack. Storing the pack
2471           from a fast-import can make the import operation complete faster,
2472           especially on slow filesystems. If not set, the value of
2473           transfer.unpackLimit is used instead.
2474
2475       feature.*
2476           The config settings that start with feature.  modify the defaults
2477           of a group of other config settings. These groups are created by
2478           the Git developer community as recommended defaults and are subject
2479           to change. In particular, new config options may be added with
2480           different defaults.
2481
2482       feature.experimental
2483           Enable config options that are new to Git, and are being considered
2484           for future defaults. Config settings included here may be added or
2485           removed with each release, including minor version updates. These
2486           settings may have unintended interactions since they are so new.
2487           Please enable this setting if you are interested in providing
2488           feedback on experimental features. The new default values are:
2489
2490fetch.negotiationAlgorithm=skipping may improve fetch
2491               negotiation times by skipping more commits at a time, reducing
2492               the number of round trips.
2493
2494       feature.manyFiles
2495           Enable config options that optimize for repos with many files in
2496           the working directory. With many files, commands such as git status
2497           and git checkout may be slow and these new defaults improve
2498           performance:
2499
2500index.version=4 enables path-prefix compression in the index.
2501
2502core.untrackedCache=true enables the untracked cache. This
2503               setting assumes that mtime is working on your machine.
2504
2505       fetch.recurseSubmodules
2506           This option controls whether git fetch (and the underlying fetch in
2507           git pull) will recursively fetch into populated submodules. This
2508           option can be set either to a boolean value or to on-demand.
2509           Setting it to a boolean changes the behavior of fetch and pull to
2510           recurse unconditionally into submodules when set to true or to not
2511           recurse at all when set to false. When set to on-demand, fetch and
2512           pull will only recurse into a populated submodule when its
2513           superproject retrieves a commit that updates the submodule’s
2514           reference. Defaults to on-demand, or to the value of
2515           submodule.recurse if set.
2516
2517       fetch.fsckObjects
2518           If it is set to true, git-fetch-pack will check all fetched
2519           objects. See transfer.fsckObjects for what’s checked. Defaults to
2520           false. If not set, the value of transfer.fsckObjects is used
2521           instead.
2522
2523       fetch.fsck.<msg-id>
2524           Acts like fsck.<msg-id>, but is used by git-fetch-pack(1) instead
2525           of git-fsck(1). See the fsck.<msg-id> documentation for details.
2526
2527       fetch.fsck.skipList
2528           Acts like fsck.skipList, but is used by git-fetch-pack(1) instead
2529           of git-fsck(1). See the fsck.skipList documentation for details.
2530
2531       fetch.unpackLimit
2532           If the number of objects fetched over the Git native transfer is
2533           below this limit, then the objects will be unpacked into loose
2534           object files. However if the number of received objects equals or
2535           exceeds this limit then the received pack will be stored as a pack,
2536           after adding any missing delta bases. Storing the pack from a push
2537           can make the push operation complete faster, especially on slow
2538           filesystems. If not set, the value of transfer.unpackLimit is used
2539           instead.
2540
2541       fetch.prune
2542           If true, fetch will automatically behave as if the --prune option
2543           was given on the command line. See also remote.<name>.prune and the
2544           PRUNING section of git-fetch(1).
2545
2546       fetch.pruneTags
2547           If true, fetch will automatically behave as if the
2548           refs/tags/*:refs/tags/* refspec was provided when pruning, if not
2549           set already. This allows for setting both this option and
2550           fetch.prune to maintain a 1=1 mapping to upstream refs. See also
2551           remote.<name>.pruneTags and the PRUNING section of git-fetch(1).
2552
2553       fetch.output
2554           Control how ref update status is printed. Valid values are full and
2555           compact. Default value is full. See section OUTPUT in git-fetch(1)
2556           for detail.
2557
2558       fetch.negotiationAlgorithm
2559           Control how information about the commits in the local repository
2560           is sent when negotiating the contents of the packfile to be sent by
2561           the server. Set to "skipping" to use an algorithm that skips
2562           commits in an effort to converge faster, but may result in a
2563           larger-than-necessary packfile; or set to "noop" to not send any
2564           information at all, which will almost certainly result in a
2565           larger-than-necessary packfile, but will skip the negotiation step.
2566           The default is "default" which instructs Git to use the default
2567           algorithm that never skips commits (unless the server has
2568           acknowledged it or one of its descendants). If feature.experimental
2569           is enabled, then this setting defaults to "skipping". Unknown
2570           values will cause git fetch to error out.
2571
2572           See also the --negotiate-only and --negotiation-tip options to git-
2573           fetch(1).
2574
2575       fetch.showForcedUpdates
2576           Set to false to enable --no-show-forced-updates in git-fetch(1) and
2577           git-pull(1) commands. Defaults to true.
2578
2579       fetch.parallel
2580           Specifies the maximal number of fetch operations to be run in
2581           parallel at a time (submodules, or remotes when the --multiple
2582           option of git-fetch(1) is in effect).
2583
2584           A value of 0 will give some reasonable default. If unset, it
2585           defaults to 1.
2586
2587           For submodules, this setting can be overridden using the
2588           submodule.fetchJobs config setting.
2589
2590       fetch.writeCommitGraph
2591           Set to true to write a commit-graph after every git fetch command
2592           that downloads a pack-file from a remote. Using the --split option,
2593           most executions will create a very small commit-graph file on top
2594           of the existing commit-graph file(s). Occasionally, these files
2595           will merge and the write may take longer. Having an updated
2596           commit-graph file helps performance of many Git commands, including
2597           git merge-base, git push -f, and git log --graph. Defaults to
2598           false.
2599
2600       format.attach
2601           Enable multipart/mixed attachments as the default for format-patch.
2602           The value can also be a double quoted string which will enable
2603           attachments as the default and set the value as the boundary. See
2604           the --attach option in git-format-patch(1).
2605
2606       format.from
2607           Provides the default value for the --from option to format-patch.
2608           Accepts a boolean value, or a name and email address. If false,
2609           format-patch defaults to --no-from, using commit authors directly
2610           in the "From:" field of patch mails. If true, format-patch defaults
2611           to --from, using your committer identity in the "From:" field of
2612           patch mails and including a "From:" field in the body of the patch
2613           mail if different. If set to a non-boolean value, format-patch uses
2614           that value instead of your committer identity. Defaults to false.
2615
2616       format.numbered
2617           A boolean which can enable or disable sequence numbers in patch
2618           subjects. It defaults to "auto" which enables it only if there is
2619           more than one patch. It can be enabled or disabled for all messages
2620           by setting it to "true" or "false". See --numbered option in git-
2621           format-patch(1).
2622
2623       format.headers
2624           Additional email headers to include in a patch to be submitted by
2625           mail. See git-format-patch(1).
2626
2627       format.to, format.cc
2628           Additional recipients to include in a patch to be submitted by
2629           mail. See the --to and --cc options in git-format-patch(1).
2630
2631       format.subjectPrefix
2632           The default for format-patch is to output files with the [PATCH]
2633           subject prefix. Use this variable to change that prefix.
2634
2635       format.coverFromDescription
2636           The default mode for format-patch to determine which parts of the
2637           cover letter will be populated using the branch’s description. See
2638           the --cover-from-description option in git-format-patch(1).
2639
2640       format.signature
2641           The default for format-patch is to output a signature containing
2642           the Git version number. Use this variable to change that default.
2643           Set this variable to the empty string ("") to suppress signature
2644           generation.
2645
2646       format.signatureFile
2647           Works just like format.signature except the contents of the file
2648           specified by this variable will be used as the signature.
2649
2650       format.suffix
2651           The default for format-patch is to output files with the suffix
2652           .patch. Use this variable to change that suffix (make sure to
2653           include the dot if you want it).
2654
2655       format.encodeEmailHeaders
2656           Encode email headers that have non-ASCII characters with
2657           "Q-encoding" (described in RFC 2047) for email transmission.
2658           Defaults to true.
2659
2660       format.pretty
2661           The default pretty format for log/show/whatchanged command, See
2662           git-log(1), git-show(1), git-whatchanged(1).
2663
2664       format.thread
2665           The default threading style for git format-patch. Can be a boolean
2666           value, or shallow or deep.  shallow threading makes every mail a
2667           reply to the head of the series, where the head is chosen from the
2668           cover letter, the --in-reply-to, and the first patch mail, in this
2669           order.  deep threading makes every mail a reply to the previous
2670           one. A true boolean value is the same as shallow, and a false value
2671           disables threading.
2672
2673       format.signOff
2674           A boolean value which lets you enable the -s/--signoff option of
2675           format-patch by default.  Note: Adding the Signed-off-by trailer to
2676           a patch should be a conscious act and means that you certify you
2677           have the rights to submit this work under the same open source
2678           license. Please see the SubmittingPatches document for further
2679           discussion.
2680
2681       format.coverLetter
2682           A boolean that controls whether to generate a cover-letter when
2683           format-patch is invoked, but in addition can be set to "auto", to
2684           generate a cover-letter only when there’s more than one patch.
2685           Default is false.
2686
2687       format.outputDirectory
2688           Set a custom directory to store the resulting files instead of the
2689           current working directory. All directory components will be
2690           created.
2691
2692       format.filenameMaxLength
2693           The maximum length of the output filenames generated by the
2694           format-patch command; defaults to 64. Can be overridden by the
2695           --filename-max-length=<n> command line option.
2696
2697       format.useAutoBase
2698           A boolean value which lets you enable the --base=auto option of
2699           format-patch by default. Can also be set to "whenAble" to allow
2700           enabling --base=auto if a suitable base is available, but to skip
2701           adding base info otherwise without the format dying.
2702
2703       format.notes
2704           Provides the default value for the --notes option to format-patch.
2705           Accepts a boolean value, or a ref which specifies where to get
2706           notes. If false, format-patch defaults to --no-notes. If true,
2707           format-patch defaults to --notes. If set to a non-boolean value,
2708           format-patch defaults to --notes=<ref>, where ref is the
2709           non-boolean value. Defaults to false.
2710
2711           If one wishes to use the ref ref/notes/true, please use that
2712           literal instead.
2713
2714           This configuration can be specified multiple times in order to
2715           allow multiple notes refs to be included. In that case, it will
2716           behave similarly to multiple --[no-]notes[=] options passed in.
2717           That is, a value of true will show the default notes, a value of
2718           <ref> will also show notes from that notes ref and a value of false
2719           will negate previous configurations and not show notes.
2720
2721           For example,
2722
2723               [format]
2724                       notes = true
2725                       notes = foo
2726                       notes = false
2727                       notes = bar
2728
2729           will only show notes from refs/notes/bar.
2730
2731       filter.<driver>.clean
2732           The command which is used to convert the content of a worktree file
2733           to a blob upon checkin. See gitattributes(5) for details.
2734
2735       filter.<driver>.smudge
2736           The command which is used to convert the content of a blob object
2737           to a worktree file upon checkout. See gitattributes(5) for details.
2738
2739       fsck.<msg-id>
2740           During fsck git may find issues with legacy data which wouldn’t be
2741           generated by current versions of git, and which wouldn’t be sent
2742           over the wire if transfer.fsckObjects was set. This feature is
2743           intended to support working with legacy repositories containing
2744           such data.
2745
2746           Setting fsck.<msg-id> will be picked up by git-fsck(1), but to
2747           accept pushes of such data set receive.fsck.<msg-id> instead, or to
2748           clone or fetch it set fetch.fsck.<msg-id>.
2749
2750           The rest of the documentation discusses fsck.*  for brevity, but
2751           the same applies for the corresponding receive.fsck.*  and
2752           fetch.<msg-id>.*. variables.
2753
2754           Unlike variables like color.ui and core.editor the
2755           receive.fsck.<msg-id> and fetch.fsck.<msg-id> variables will not
2756           fall back on the fsck.<msg-id> configuration if they aren’t set. To
2757           uniformly configure the same fsck settings in different
2758           circumstances all three of them they must all set to the same
2759           values.
2760
2761           When fsck.<msg-id> is set, errors can be switched to warnings and
2762           vice versa by configuring the fsck.<msg-id> setting where the
2763           <msg-id> is the fsck message ID and the value is one of error, warn
2764           or ignore. For convenience, fsck prefixes the error/warning with
2765           the message ID, e.g. "missingEmail: invalid author/committer line -
2766           missing email" means that setting fsck.missingEmail = ignore will
2767           hide that issue.
2768
2769           In general, it is better to enumerate existing objects with
2770           problems with fsck.skipList, instead of listing the kind of
2771           breakages these problematic objects share to be ignored, as doing
2772           the latter will allow new instances of the same breakages go
2773           unnoticed.
2774
2775           Setting an unknown fsck.<msg-id> value will cause fsck to die, but
2776           doing the same for receive.fsck.<msg-id> and fetch.fsck.<msg-id>
2777           will only cause git to warn.
2778
2779       fsck.skipList
2780           The path to a list of object names (i.e. one unabbreviated SHA-1
2781           per line) that are known to be broken in a non-fatal way and should
2782           be ignored. On versions of Git 2.20 and later comments (#), empty
2783           lines, and any leading and trailing whitespace is ignored.
2784           Everything but a SHA-1 per line will error out on older versions.
2785
2786           This feature is useful when an established project should be
2787           accepted despite early commits containing errors that can be safely
2788           ignored such as invalid committer email addresses. Note: corrupt
2789           objects cannot be skipped with this setting.
2790
2791           Like fsck.<msg-id> this variable has corresponding
2792           receive.fsck.skipList and fetch.fsck.skipList variants.
2793
2794           Unlike variables like color.ui and core.editor the
2795           receive.fsck.skipList and fetch.fsck.skipList variables will not
2796           fall back on the fsck.skipList configuration if they aren’t set. To
2797           uniformly configure the same fsck settings in different
2798           circumstances all three of them they must all set to the same
2799           values.
2800
2801           Older versions of Git (before 2.20) documented that the object
2802           names list should be sorted. This was never a requirement, the
2803           object names could appear in any order, but when reading the list
2804           we tracked whether the list was sorted for the purposes of an
2805           internal binary search implementation, which could save itself some
2806           work with an already sorted list. Unless you had a humongous list
2807           there was no reason to go out of your way to pre-sort the list.
2808           After Git version 2.20 a hash implementation is used instead, so
2809           there’s now no reason to pre-sort the list.
2810
2811       gc.aggressiveDepth
2812           The depth parameter used in the delta compression algorithm used by
2813           git gc --aggressive. This defaults to 50, which is the default for
2814           the --depth option when --aggressive isn’t in use.
2815
2816           See the documentation for the --depth option in git-repack(1) for
2817           more details.
2818
2819       gc.aggressiveWindow
2820           The window size parameter used in the delta compression algorithm
2821           used by git gc --aggressive. This defaults to 250, which is a much
2822           more aggressive window size than the default --window of 10.
2823
2824           See the documentation for the --window option in git-repack(1) for
2825           more details.
2826
2827       gc.auto
2828           When there are approximately more than this many loose objects in
2829           the repository, git gc --auto will pack them. Some Porcelain
2830           commands use this command to perform a light-weight garbage
2831           collection from time to time. The default value is 6700.
2832
2833           Setting this to 0 disables not only automatic packing based on the
2834           number of loose objects, but any other heuristic git gc --auto will
2835           otherwise use to determine if there’s work to do, such as
2836           gc.autoPackLimit.
2837
2838       gc.autoPackLimit
2839           When there are more than this many packs that are not marked with
2840           *.keep file in the repository, git gc --auto consolidates them into
2841           one larger pack. The default value is 50. Setting this to 0
2842           disables it. Setting gc.auto to 0 will also disable this.
2843
2844           See the gc.bigPackThreshold configuration variable below. When in
2845           use, it’ll affect how the auto pack limit works.
2846
2847       gc.autoDetach
2848           Make git gc --auto return immediately and run in background if the
2849           system supports it. Default is true.
2850
2851       gc.bigPackThreshold
2852           If non-zero, all packs larger than this limit are kept when git gc
2853           is run. This is very similar to --keep-largest-pack except that all
2854           packs that meet the threshold are kept, not just the largest pack.
2855           Defaults to zero. Common unit suffixes of k, m, or g are supported.
2856
2857           Note that if the number of kept packs is more than
2858           gc.autoPackLimit, this configuration variable is ignored, all packs
2859           except the base pack will be repacked. After this the number of
2860           packs should go below gc.autoPackLimit and gc.bigPackThreshold
2861           should be respected again.
2862
2863           If the amount of memory estimated for git repack to run smoothly is
2864           not available and gc.bigPackThreshold is not set, the largest pack
2865           will also be excluded (this is the equivalent of running git gc
2866           with --keep-largest-pack).
2867
2868       gc.writeCommitGraph
2869           If true, then gc will rewrite the commit-graph file when git-gc(1)
2870           is run. When using git gc --auto the commit-graph will be updated
2871           if housekeeping is required. Default is true. See git-commit-
2872           graph(1) for details.
2873
2874       gc.logExpiry
2875           If the file gc.log exists, then git gc --auto will print its
2876           content and exit with status zero instead of running unless that
2877           file is more than gc.logExpiry old. Default is "1.day". See
2878           gc.pruneExpire for more ways to specify its value.
2879
2880       gc.packRefs
2881           Running git pack-refs in a repository renders it unclonable by Git
2882           versions prior to 1.5.1.2 over dumb transports such as HTTP. This
2883           variable determines whether git gc runs git pack-refs. This can be
2884           set to notbare to enable it within all non-bare repos or it can be
2885           set to a boolean value. The default is true.
2886
2887       gc.pruneExpire
2888           When git gc is run, it will call prune --expire 2.weeks.ago.
2889           Override the grace period with this config variable. The value
2890           "now" may be used to disable this grace period and always prune
2891           unreachable objects immediately, or "never" may be used to suppress
2892           pruning. This feature helps prevent corruption when git gc runs
2893           concurrently with another process writing to the repository; see
2894           the "NOTES" section of git-gc(1).
2895
2896       gc.worktreePruneExpire
2897           When git gc is run, it calls git worktree prune --expire
2898           3.months.ago. This config variable can be used to set a different
2899           grace period. The value "now" may be used to disable the grace
2900           period and prune $GIT_DIR/worktrees immediately, or "never" may be
2901           used to suppress pruning.
2902
2903       gc.reflogExpire, gc.<pattern>.reflogExpire
2904           git reflog expire removes reflog entries older than this time;
2905           defaults to 90 days. The value "now" expires all entries
2906           immediately, and "never" suppresses expiration altogether. With
2907           "<pattern>" (e.g. "refs/stash") in the middle the setting applies
2908           only to the refs that match the <pattern>.
2909
2910       gc.reflogExpireUnreachable, gc.<pattern>.reflogExpireUnreachable
2911           git reflog expire removes reflog entries older than this time and
2912           are not reachable from the current tip; defaults to 30 days. The
2913           value "now" expires all entries immediately, and "never" suppresses
2914           expiration altogether. With "<pattern>" (e.g. "refs/stash") in the
2915           middle, the setting applies only to the refs that match the
2916           <pattern>.
2917
2918           These types of entries are generally created as a result of using
2919           git commit --amend or git rebase and are the commits prior to the
2920           amend or rebase occurring. Since these changes are not part of the
2921           current project most users will want to expire them sooner, which
2922           is why the default is more aggressive than gc.reflogExpire.
2923
2924       gc.rerereResolved
2925           Records of conflicted merge you resolved earlier are kept for this
2926           many days when git rerere gc is run. You can also use more
2927           human-readable "1.month.ago", etc. The default is 60 days. See git-
2928           rerere(1).
2929
2930       gc.rerereUnresolved
2931           Records of conflicted merge you have not resolved are kept for this
2932           many days when git rerere gc is run. You can also use more
2933           human-readable "1.month.ago", etc. The default is 15 days. See git-
2934           rerere(1).
2935
2936       gitcvs.commitMsgAnnotation
2937           Append this string to each commit message. Set to empty string to
2938           disable this feature. Defaults to "via git-CVS emulator".
2939
2940       gitcvs.enabled
2941           Whether the CVS server interface is enabled for this repository.
2942           See git-cvsserver(1).
2943
2944       gitcvs.logFile
2945           Path to a log file where the CVS server interface well... logs
2946           various stuff. See git-cvsserver(1).
2947
2948       gitcvs.usecrlfattr
2949           If true, the server will look up the end-of-line conversion
2950           attributes for files to determine the -k modes to use. If the
2951           attributes force Git to treat a file as text, the -k mode will be
2952           left blank so CVS clients will treat it as text. If they suppress
2953           text conversion, the file will be set with -kb mode, which
2954           suppresses any newline munging the client might otherwise do. If
2955           the attributes do not allow the file type to be determined, then
2956           gitcvs.allBinary is used. See gitattributes(5).
2957
2958       gitcvs.allBinary
2959           This is used if gitcvs.usecrlfattr does not resolve the correct -kb
2960           mode to use. If true, all unresolved files are sent to the client
2961           in mode -kb. This causes the client to treat them as binary files,
2962           which suppresses any newline munging it otherwise might do.
2963           Alternatively, if it is set to "guess", then the contents of the
2964           file are examined to decide if it is binary, similar to
2965           core.autocrlf.
2966
2967       gitcvs.dbName
2968           Database used by git-cvsserver to cache revision information
2969           derived from the Git repository. The exact meaning depends on the
2970           used database driver, for SQLite (which is the default driver) this
2971           is a filename. Supports variable substitution (see git-cvsserver(1)
2972           for details). May not contain semicolons (;). Default:
2973           %Ggitcvs.%m.sqlite
2974
2975       gitcvs.dbDriver
2976           Used Perl DBI driver. You can specify any available driver for this
2977           here, but it might not work. git-cvsserver is tested with
2978           DBD::SQLite, reported to work with DBD::Pg, and reported not to
2979           work with DBD::mysql. Experimental feature. May not contain double
2980           colons (:). Default: SQLite. See git-cvsserver(1).
2981
2982       gitcvs.dbUser, gitcvs.dbPass
2983           Database user and password. Only useful if setting gitcvs.dbDriver,
2984           since SQLite has no concept of database users and/or passwords.
2985           gitcvs.dbUser supports variable substitution (see git-cvsserver(1)
2986           for details).
2987
2988       gitcvs.dbTableNamePrefix
2989           Database table name prefix. Prepended to the names of any database
2990           tables used, allowing a single database to be used for several
2991           repositories. Supports variable substitution (see git-cvsserver(1)
2992           for details). Any non-alphabetic characters will be replaced with
2993           underscores.
2994
2995       All gitcvs variables except for gitcvs.usecrlfattr and gitcvs.allBinary
2996       can also be specified as gitcvs.<access_method>.<varname> (where
2997       access_method is one of "ext" and "pserver") to make them apply only
2998       for the given access method.
2999
3000       gitweb.category, gitweb.description, gitweb.owner, gitweb.url
3001           See gitweb(1) for description.
3002
3003       gitweb.avatar, gitweb.blame, gitweb.grep, gitweb.highlight,
3004       gitweb.patches, gitweb.pickaxe, gitweb.remote_heads, gitweb.showSizes,
3005       gitweb.snapshot
3006           See gitweb.conf(5) for description.
3007
3008       grep.lineNumber
3009           If set to true, enable -n option by default.
3010
3011       grep.column
3012           If set to true, enable the --column option by default.
3013
3014       grep.patternType
3015           Set the default matching behavior. Using a value of basic,
3016           extended, fixed, or perl will enable the --basic-regexp,
3017           --extended-regexp, --fixed-strings, or --perl-regexp option
3018           accordingly, while the value default will return to the default
3019           matching behavior.
3020
3021       grep.extendedRegexp
3022           If set to true, enable --extended-regexp option by default. This
3023           option is ignored when the grep.patternType option is set to a
3024           value other than default.
3025
3026       grep.threads
3027           Number of grep worker threads to use. See grep.threads in git-
3028           grep(1) for more information.
3029
3030       grep.fallbackToNoIndex
3031           If set to true, fall back to git grep --no-index if git grep is
3032           executed outside of a git repository. Defaults to false.
3033
3034       gpg.program
3035           Use this custom program instead of "gpg" found on $PATH when making
3036           or verifying a PGP signature. The program must support the same
3037           command-line interface as GPG, namely, to verify a detached
3038           signature, "gpg --verify $signature - <$file" is run, and the
3039           program is expected to signal a good signature by exiting with code
3040           0, and to generate an ASCII-armored detached signature, the
3041           standard input of "gpg -bsau $key" is fed with the contents to be
3042           signed, and the program is expected to send the result to its
3043           standard output.
3044
3045       gpg.format
3046           Specifies which key format to use when signing with --gpg-sign.
3047           Default is "openpgp" and another possible value is "x509".
3048
3049       gpg.<format>.program
3050           Use this to customize the program used for the signing format you
3051           chose. (see gpg.program and gpg.format) gpg.program can still be
3052           used as a legacy synonym for gpg.openpgp.program. The default value
3053           for gpg.x509.program is "gpgsm".
3054
3055       gpg.minTrustLevel
3056           Specifies a minimum trust level for signature verification. If this
3057           option is unset, then signature verification for merge operations
3058           require a key with at least marginal trust. Other operations that
3059           perform signature verification require a key with at least
3060           undefined trust. Setting this option overrides the required
3061           trust-level for all operations. Supported values, in increasing
3062           order of significance:
3063
3064undefined
3065
3066never
3067
3068marginal
3069
3070fully
3071
3072ultimate
3073
3074       gui.commitMsgWidth
3075           Defines how wide the commit message window is in the git-gui(1).
3076           "75" is the default.
3077
3078       gui.diffContext
3079           Specifies how many context lines should be used in calls to diff
3080           made by the git-gui(1). The default is "5".
3081
3082       gui.displayUntracked
3083           Determines if git-gui(1) shows untracked files in the file list.
3084           The default is "true".
3085
3086       gui.encoding
3087           Specifies the default character encoding to use for displaying of
3088           file contents in git-gui(1) and gitk(1). It can be overridden by
3089           setting the encoding attribute for relevant files (see
3090           gitattributes(5)). If this option is not set, the tools default to
3091           the locale encoding.
3092
3093       gui.matchTrackingBranch
3094           Determines if new branches created with git-gui(1) should default
3095           to tracking remote branches with matching names or not. Default:
3096           "false".
3097
3098       gui.newBranchTemplate
3099           Is used as suggested name when creating new branches using the git-
3100           gui(1).
3101
3102       gui.pruneDuringFetch
3103           "true" if git-gui(1) should prune remote-tracking branches when
3104           performing a fetch. The default value is "false".
3105
3106       gui.trustmtime
3107           Determines if git-gui(1) should trust the file modification
3108           timestamp or not. By default the timestamps are not trusted.
3109
3110       gui.spellingDictionary
3111           Specifies the dictionary used for spell checking commit messages in
3112           the git-gui(1). When set to "none" spell checking is turned off.
3113
3114       gui.fastCopyBlame
3115           If true, git gui blame uses -C instead of -C -C for original
3116           location detection. It makes blame significantly faster on huge
3117           repositories at the expense of less thorough copy detection.
3118
3119       gui.copyBlameThreshold
3120           Specifies the threshold to use in git gui blame original location
3121           detection, measured in alphanumeric characters. See the git-
3122           blame(1) manual for more information on copy detection.
3123
3124       gui.blamehistoryctx
3125           Specifies the radius of history context in days to show in gitk(1)
3126           for the selected commit, when the Show History Context menu item is
3127           invoked from git gui blame. If this variable is set to zero, the
3128           whole history is shown.
3129
3130       guitool.<name>.cmd
3131           Specifies the shell command line to execute when the corresponding
3132           item of the git-gui(1) Tools menu is invoked. This option is
3133           mandatory for every tool. The command is executed from the root of
3134           the working directory, and in the environment it receives the name
3135           of the tool as GIT_GUITOOL, the name of the currently selected file
3136           as FILENAME, and the name of the current branch as CUR_BRANCH (if
3137           the head is detached, CUR_BRANCH is empty).
3138
3139       guitool.<name>.needsFile
3140           Run the tool only if a diff is selected in the GUI. It guarantees
3141           that FILENAME is not empty.
3142
3143       guitool.<name>.noConsole
3144           Run the command silently, without creating a window to display its
3145           output.
3146
3147       guitool.<name>.noRescan
3148           Don’t rescan the working directory for changes after the tool
3149           finishes execution.
3150
3151       guitool.<name>.confirm
3152           Show a confirmation dialog before actually running the tool.
3153
3154       guitool.<name>.argPrompt
3155           Request a string argument from the user, and pass it to the tool
3156           through the ARGS environment variable. Since requesting an argument
3157           implies confirmation, the confirm option has no effect if this is
3158           enabled. If the option is set to true, yes, or 1, the dialog uses a
3159           built-in generic prompt; otherwise the exact value of the variable
3160           is used.
3161
3162       guitool.<name>.revPrompt
3163           Request a single valid revision from the user, and set the REVISION
3164           environment variable. In other aspects this option is similar to
3165           argPrompt, and can be used together with it.
3166
3167       guitool.<name>.revUnmerged
3168           Show only unmerged branches in the revPrompt subdialog. This is
3169           useful for tools similar to merge or rebase, but not for things
3170           like checkout or reset.
3171
3172       guitool.<name>.title
3173           Specifies the title to use for the prompt dialog. The default is
3174           the tool name.
3175
3176       guitool.<name>.prompt
3177           Specifies the general prompt string to display at the top of the
3178           dialog, before subsections for argPrompt and revPrompt. The default
3179           value includes the actual command.
3180
3181       help.browser
3182           Specify the browser that will be used to display help in the web
3183           format. See git-help(1).
3184
3185       help.format
3186           Override the default help format used by git-help(1). Values man,
3187           info, web and html are supported.  man is the default.  web and
3188           html are the same.
3189
3190       help.autoCorrect
3191           If git detects typos and can identify exactly one valid command
3192           similar to the error, git will automatically run the intended
3193           command after waiting a duration of time defined by this
3194           configuration value in deciseconds (0.1 sec). If this value is 0,
3195           the suggested corrections will be shown, but not executed. If it is
3196           a negative integer, or "immediate", the suggested command is run
3197           immediately. If "never", suggestions are not shown at all. The
3198           default value is zero.
3199
3200       help.htmlPath
3201           Specify the path where the HTML documentation resides. File system
3202           paths and URLs are supported. HTML pages will be prefixed with this
3203           path when help is displayed in the web format. This defaults to the
3204           documentation path of your Git installation.
3205
3206       http.proxy
3207           Override the HTTP proxy, normally configured using the http_proxy,
3208           https_proxy, and all_proxy environment variables (see curl(1)). In
3209           addition to the syntax understood by curl, it is possible to
3210           specify a proxy string with a user name but no password, in which
3211           case git will attempt to acquire one in the same way it does for
3212           other credentials. See gitcredentials(7) for more information. The
3213           syntax thus is [protocol://][user[:password]@]proxyhost[:port].
3214           This can be overridden on a per-remote basis; see
3215           remote.<name>.proxy
3216
3217       http.proxyAuthMethod
3218           Set the method with which to authenticate against the HTTP proxy.
3219           This only takes effect if the configured proxy string contains a
3220           user name part (i.e. is of the form user@host or user@host:port).
3221           This can be overridden on a per-remote basis; see
3222           remote.<name>.proxyAuthMethod. Both can be overridden by the
3223           GIT_HTTP_PROXY_AUTHMETHOD environment variable. Possible values
3224           are:
3225
3226anyauth - Automatically pick a suitable authentication method.
3227               It is assumed that the proxy answers an unauthenticated request
3228               with a 407 status code and one or more Proxy-authenticate
3229               headers with supported authentication methods. This is the
3230               default.
3231
3232basic - HTTP Basic authentication
3233
3234digest - HTTP Digest authentication; this prevents the password
3235               from being transmitted to the proxy in clear text
3236
3237negotiate - GSS-Negotiate authentication (compare the
3238               --negotiate option of curl(1))
3239
3240ntlm - NTLM authentication (compare the --ntlm option of
3241               curl(1))
3242
3243       http.proxySSLCert
3244           The pathname of a file that stores a client certificate to use to
3245           authenticate with an HTTPS proxy. Can be overridden by the
3246           GIT_PROXY_SSL_CERT environment variable.
3247
3248       http.proxySSLKey
3249           The pathname of a file that stores a private key to use to
3250           authenticate with an HTTPS proxy. Can be overridden by the
3251           GIT_PROXY_SSL_KEY environment variable.
3252
3253       http.proxySSLCertPasswordProtected
3254           Enable Git’s password prompt for the proxy SSL certificate.
3255           Otherwise OpenSSL will prompt the user, possibly many times, if the
3256           certificate or private key is encrypted. Can be overridden by the
3257           GIT_PROXY_SSL_CERT_PASSWORD_PROTECTED environment variable.
3258
3259       http.proxySSLCAInfo
3260           Pathname to the file containing the certificate bundle that should
3261           be used to verify the proxy with when using an HTTPS proxy. Can be
3262           overridden by the GIT_PROXY_SSL_CAINFO environment variable.
3263
3264       http.emptyAuth
3265           Attempt authentication without seeking a username or password. This
3266           can be used to attempt GSS-Negotiate authentication without
3267           specifying a username in the URL, as libcurl normally requires a
3268           username for authentication.
3269
3270       http.delegation
3271           Control GSSAPI credential delegation. The delegation is disabled by
3272           default in libcurl since version 7.21.7. Set parameter to tell the
3273           server what it is allowed to delegate when it comes to user
3274           credentials. Used with GSS/kerberos. Possible values are:
3275
3276none - Don’t allow any delegation.
3277
3278policy - Delegates if and only if the OK-AS-DELEGATE flag is
3279               set in the Kerberos service ticket, which is a matter of realm
3280               policy.
3281
3282always - Unconditionally allow the server to delegate.
3283
3284       http.extraHeader
3285           Pass an additional HTTP header when communicating with a server. If
3286           more than one such entry exists, all of them are added as extra
3287           headers. To allow overriding the settings inherited from the system
3288           config, an empty value will reset the extra headers to the empty
3289           list.
3290
3291       http.cookieFile
3292           The pathname of a file containing previously stored cookie lines,
3293           which should be used in the Git http session, if they match the
3294           server. The file format of the file to read cookies from should be
3295           plain HTTP headers or the Netscape/Mozilla cookie file format (see
3296           curl(1)). NOTE that the file specified with http.cookieFile is used
3297           only as input unless http.saveCookies is set.
3298
3299       http.saveCookies
3300           If set, store cookies received during requests to the file
3301           specified by http.cookieFile. Has no effect if http.cookieFile is
3302           unset.
3303
3304       http.version
3305           Use the specified HTTP protocol version when communicating with a
3306           server. If you want to force the default. The available and default
3307           version depend on libcurl. Currently the possible values of this
3308           option are:
3309
3310           •   HTTP/2
3311
3312           •   HTTP/1.1
3313
3314       http.sslVersion
3315           The SSL version to use when negotiating an SSL connection, if you
3316           want to force the default. The available and default version depend
3317           on whether libcurl was built against NSS or OpenSSL and the
3318           particular configuration of the crypto library in use. Internally
3319           this sets the CURLOPT_SSL_VERSION option; see the libcurl
3320           documentation for more details on the format of this option and for
3321           the ssl version supported. Currently the possible values of this
3322           option are:
3323
3324           •   sslv2
3325
3326           •   sslv3
3327
3328           •   tlsv1
3329
3330           •   tlsv1.0
3331
3332           •   tlsv1.1
3333
3334           •   tlsv1.2
3335
3336           •   tlsv1.3
3337
3338           Can be overridden by the GIT_SSL_VERSION environment variable. To
3339           force git to use libcurl’s default ssl version and ignore any
3340           explicit http.sslversion option, set GIT_SSL_VERSION to the empty
3341           string.
3342
3343       http.sslCipherList
3344           A list of SSL ciphers to use when negotiating an SSL connection.
3345           The available ciphers depend on whether libcurl was built against
3346           NSS or OpenSSL and the particular configuration of the crypto
3347           library in use. Internally this sets the CURLOPT_SSL_CIPHER_LIST
3348           option; see the libcurl documentation for more details on the
3349           format of this list.
3350
3351           Can be overridden by the GIT_SSL_CIPHER_LIST environment variable.
3352           To force git to use libcurl’s default cipher list and ignore any
3353           explicit http.sslCipherList option, set GIT_SSL_CIPHER_LIST to the
3354           empty string.
3355
3356       http.sslVerify
3357           Whether to verify the SSL certificate when fetching or pushing over
3358           HTTPS. Defaults to true. Can be overridden by the GIT_SSL_NO_VERIFY
3359           environment variable.
3360
3361       http.sslCert
3362           File containing the SSL certificate when fetching or pushing over
3363           HTTPS. Can be overridden by the GIT_SSL_CERT environment variable.
3364
3365       http.sslKey
3366           File containing the SSL private key when fetching or pushing over
3367           HTTPS. Can be overridden by the GIT_SSL_KEY environment variable.
3368
3369       http.sslCertPasswordProtected
3370           Enable Git’s password prompt for the SSL certificate. Otherwise
3371           OpenSSL will prompt the user, possibly many times, if the
3372           certificate or private key is encrypted. Can be overridden by the
3373           GIT_SSL_CERT_PASSWORD_PROTECTED environment variable.
3374
3375       http.sslCAInfo
3376           File containing the certificates to verify the peer with when
3377           fetching or pushing over HTTPS. Can be overridden by the
3378           GIT_SSL_CAINFO environment variable.
3379
3380       http.sslCAPath
3381           Path containing files with the CA certificates to verify the peer
3382           with when fetching or pushing over HTTPS. Can be overridden by the
3383           GIT_SSL_CAPATH environment variable.
3384
3385       http.sslBackend
3386           Name of the SSL backend to use (e.g. "openssl" or "schannel"). This
3387           option is ignored if cURL lacks support for choosing the SSL
3388           backend at runtime.
3389
3390       http.schannelCheckRevoke
3391           Used to enforce or disable certificate revocation checks in cURL
3392           when http.sslBackend is set to "schannel". Defaults to true if
3393           unset. Only necessary to disable this if Git consistently errors
3394           and the message is about checking the revocation status of a
3395           certificate. This option is ignored if cURL lacks support for
3396           setting the relevant SSL option at runtime.
3397
3398       http.schannelUseSSLCAInfo
3399           As of cURL v7.60.0, the Secure Channel backend can use the
3400           certificate bundle provided via http.sslCAInfo, but that would
3401           override the Windows Certificate Store. Since this is not desirable
3402           by default, Git will tell cURL not to use that bundle by default
3403           when the schannel backend was configured via http.sslBackend,
3404           unless http.schannelUseSSLCAInfo overrides this behavior.
3405
3406       http.pinnedpubkey
3407           Public key of the https service. It may either be the filename of a
3408           PEM or DER encoded public key file or a string starting with
3409           sha256// followed by the base64 encoded sha256 hash of the public
3410           key. See also libcurl CURLOPT_PINNEDPUBLICKEY. git will exit with
3411           an error if this option is set but not supported by cURL.
3412
3413       http.sslTry
3414           Attempt to use AUTH SSL/TLS and encrypted data transfers when
3415           connecting via regular FTP protocol. This might be needed if the
3416           FTP server requires it for security reasons or you wish to connect
3417           securely whenever remote FTP server supports it. Default is false
3418           since it might trigger certificate verification errors on
3419           misconfigured servers.
3420
3421       http.maxRequests
3422           How many HTTP requests to launch in parallel. Can be overridden by
3423           the GIT_HTTP_MAX_REQUESTS environment variable. Default is 5.
3424
3425       http.minSessions
3426           The number of curl sessions (counted across slots) to be kept
3427           across requests. They will not be ended with curl_easy_cleanup()
3428           until http_cleanup() is invoked. If USE_CURL_MULTI is not defined,
3429           this value will be capped at 1. Defaults to 1.
3430
3431       http.postBuffer
3432           Maximum size in bytes of the buffer used by smart HTTP transports
3433           when POSTing data to the remote system. For requests larger than
3434           this buffer size, HTTP/1.1 and Transfer-Encoding: chunked is used
3435           to avoid creating a massive pack file locally. Default is 1 MiB,
3436           which is sufficient for most requests.
3437
3438           Note that raising this limit is only effective for disabling
3439           chunked transfer encoding and therefore should be used only where
3440           the remote server or a proxy only supports HTTP/1.0 or is
3441           noncompliant with the HTTP standard. Raising this is not, in
3442           general, an effective solution for most push problems, but can
3443           increase memory consumption significantly since the entire buffer
3444           is allocated even for small pushes.
3445
3446       http.lowSpeedLimit, http.lowSpeedTime
3447           If the HTTP transfer speed is less than http.lowSpeedLimit for
3448           longer than http.lowSpeedTime seconds, the transfer is aborted. Can
3449           be overridden by the GIT_HTTP_LOW_SPEED_LIMIT and
3450           GIT_HTTP_LOW_SPEED_TIME environment variables.
3451
3452       http.noEPSV
3453           A boolean which disables using of EPSV ftp command by curl. This
3454           can helpful with some "poor" ftp servers which don’t support EPSV
3455           mode. Can be overridden by the GIT_CURL_FTP_NO_EPSV environment
3456           variable. Default is false (curl will use EPSV).
3457
3458       http.userAgent
3459           The HTTP USER_AGENT string presented to an HTTP server. The default
3460           value represents the version of the client Git such as git/1.7.1.
3461           This option allows you to override this value to a more common
3462           value such as Mozilla/4.0. This may be necessary, for instance, if
3463           connecting through a firewall that restricts HTTP connections to a
3464           set of common USER_AGENT strings (but not including those like
3465           git/1.7.1). Can be overridden by the GIT_HTTP_USER_AGENT
3466           environment variable.
3467
3468       http.followRedirects
3469           Whether git should follow HTTP redirects. If set to true, git will
3470           transparently follow any redirect issued by a server it encounters.
3471           If set to false, git will treat all redirects as errors. If set to
3472           initial, git will follow redirects only for the initial request to
3473           a remote, but not for subsequent follow-up HTTP requests. Since git
3474           uses the redirected URL as the base for the follow-up requests,
3475           this is generally sufficient. The default is initial.
3476
3477       http.<url>.*
3478           Any of the http.* options above can be applied selectively to some
3479           URLs. For a config key to match a URL, each element of the config
3480           key is compared to that of the URL, in the following order:
3481
3482            1. Scheme (e.g., https in https://example.com/). This field must
3483               match exactly between the config key and the URL.
3484
3485            2. Host/domain name (e.g., example.com in https://example.com/).
3486               This field must match between the config key and the URL. It is
3487               possible to specify a * as part of the host name to match all
3488               subdomains at this level.  https://*.example.com/ for example
3489               would match https://foo.example.com/, but not
3490               https://foo.bar.example.com/.
3491
3492            3. Port number (e.g., 8080 in http://example.com:8080/). This
3493               field must match exactly between the config key and the URL.
3494               Omitted port numbers are automatically converted to the correct
3495               default for the scheme before matching.
3496
3497            4. Path (e.g., repo.git in https://example.com/repo.git). The path
3498               field of the config key must match the path field of the URL
3499               either exactly or as a prefix of slash-delimited path elements.
3500               This means a config key with path foo/ matches URL path
3501               foo/bar. A prefix can only match on a slash (/) boundary.
3502               Longer matches take precedence (so a config key with path
3503               foo/bar is a better match to URL path foo/bar than a config key
3504               with just path foo/).
3505
3506            5. User name (e.g., user in https://user@example.com/repo.git). If
3507               the config key has a user name it must match the user name in
3508               the URL exactly. If the config key does not have a user name,
3509               that config key will match a URL with any user name (including
3510               none), but at a lower precedence than a config key with a user
3511               name.
3512
3513           The list above is ordered by decreasing precedence; a URL that
3514           matches a config key’s path is preferred to one that matches its
3515           user name. For example, if the URL is
3516           https://user@example.com/foo/bar a config key match of
3517           https://example.com/foo will be preferred over a config key match
3518           of https://user@example.com.
3519
3520           All URLs are normalized before attempting any matching (the
3521           password part, if embedded in the URL, is always ignored for
3522           matching purposes) so that equivalent URLs that are simply spelled
3523           differently will match properly. Environment variable settings
3524           always override any matches. The URLs that are matched against are
3525           those given directly to Git commands. This means any URLs visited
3526           as a result of a redirection do not participate in matching.
3527
3528       i18n.commitEncoding
3529           Character encoding the commit messages are stored in; Git itself
3530           does not care per se, but this information is necessary e.g. when
3531           importing commits from emails or in the gitk graphical history
3532           browser (and possibly at other places in the future or in other
3533           porcelains). See e.g.  git-mailinfo(1). Defaults to utf-8.
3534
3535       i18n.logOutputEncoding
3536           Character encoding the commit messages are converted to when
3537           running git log and friends.
3538
3539       imap.folder
3540           The folder to drop the mails into, which is typically the Drafts
3541           folder. For example: "INBOX.Drafts", "INBOX/Drafts" or
3542           "[Gmail]/Drafts". Required.
3543
3544       imap.tunnel
3545           Command used to setup a tunnel to the IMAP server through which
3546           commands will be piped instead of using a direct network connection
3547           to the server. Required when imap.host is not set.
3548
3549       imap.host
3550           A URL identifying the server. Use an imap:// prefix for non-secure
3551           connections and an imaps:// prefix for secure connections. Ignored
3552           when imap.tunnel is set, but required otherwise.
3553
3554       imap.user
3555           The username to use when logging in to the server.
3556
3557       imap.pass
3558           The password to use when logging in to the server.
3559
3560       imap.port
3561           An integer port number to connect to on the server. Defaults to 143
3562           for imap:// hosts and 993 for imaps:// hosts. Ignored when
3563           imap.tunnel is set.
3564
3565       imap.sslverify
3566           A boolean to enable/disable verification of the server certificate
3567           used by the SSL/TLS connection. Default is true. Ignored when
3568           imap.tunnel is set.
3569
3570       imap.preformattedHTML
3571           A boolean to enable/disable the use of html encoding when sending a
3572           patch. An html encoded patch will be bracketed with <pre> and have
3573           a content type of text/html. Ironically, enabling this option
3574           causes Thunderbird to send the patch as a plain/text, format=fixed
3575           email. Default is false.
3576
3577       imap.authMethod
3578           Specify authenticate method for authentication with IMAP server. If
3579           Git was built with the NO_CURL option, or if your curl version is
3580           older than 7.34.0, or if you’re running git-imap-send with the
3581           --no-curl option, the only supported method is CRAM-MD5. If this is
3582           not set then git imap-send uses the basic IMAP plaintext LOGIN
3583           command.
3584
3585       index.recordEndOfIndexEntries
3586           Specifies whether the index file should include an "End Of Index
3587           Entry" section. This reduces index load time on multiprocessor
3588           machines but produces a message "ignoring EOIE extension" when
3589           reading the index using Git versions before 2.20. Defaults to true
3590           if index.threads has been explicitly enabled, false otherwise.
3591
3592       index.recordOffsetTable
3593           Specifies whether the index file should include an "Index Entry
3594           Offset Table" section. This reduces index load time on
3595           multiprocessor machines but produces a message "ignoring IEOT
3596           extension" when reading the index using Git versions before 2.20.
3597           Defaults to true if index.threads has been explicitly enabled,
3598           false otherwise.
3599
3600       index.sparse
3601           When enabled, write the index using sparse-directory entries. This
3602           has no effect unless core.sparseCheckout and
3603           core.sparseCheckoutCone are both enabled. Defaults to false.
3604
3605       index.threads
3606           Specifies the number of threads to spawn when loading the index.
3607           This is meant to reduce index load time on multiprocessor machines.
3608           Specifying 0 or true will cause Git to auto-detect the number of
3609           CPU’s and set the number of threads accordingly. Specifying 1 or
3610           false will disable multithreading. Defaults to true.
3611
3612       index.version
3613           Specify the version with which new index files should be
3614           initialized. This does not affect existing repositories. If
3615           feature.manyFiles is enabled, then the default is 4.
3616
3617       init.templateDir
3618           Specify the directory from which templates will be copied. (See the
3619           "TEMPLATE DIRECTORY" section of git-init(1).)
3620
3621       init.defaultBranch
3622           Allows overriding the default branch name e.g. when initializing a
3623           new repository.
3624
3625       instaweb.browser
3626           Specify the program that will be used to browse your working
3627           repository in gitweb. See git-instaweb(1).
3628
3629       instaweb.httpd
3630           The HTTP daemon command-line to start gitweb on your working
3631           repository. See git-instaweb(1).
3632
3633       instaweb.local
3634           If true the web server started by git-instaweb(1) will be bound to
3635           the local IP (127.0.0.1).
3636
3637       instaweb.modulePath
3638           The default module path for git-instaweb(1) to use instead of
3639           /usr/lib/apache2/modules. Only used if httpd is Apache.
3640
3641       instaweb.port
3642           The port number to bind the gitweb httpd to. See git-instaweb(1).
3643
3644       interactive.singleKey
3645           In interactive commands, allow the user to provide one-letter input
3646           with a single key (i.e., without hitting enter). Currently this is
3647           used by the --patch mode of git-add(1), git-checkout(1), git-
3648           restore(1), git-commit(1), git-reset(1), and git-stash(1). Note
3649           that this setting is silently ignored if portable keystroke input
3650           is not available; requires the Perl module Term::ReadKey.
3651
3652       interactive.diffFilter
3653           When an interactive command (such as git add --patch) shows a
3654           colorized diff, git will pipe the diff through the shell command
3655           defined by this configuration variable. The command may mark up the
3656           diff further for human consumption, provided that it retains a
3657           one-to-one correspondence with the lines in the original diff.
3658           Defaults to disabled (no filtering).
3659
3660       log.abbrevCommit
3661           If true, makes git-log(1), git-show(1), and git-whatchanged(1)
3662           assume --abbrev-commit. You may override this option with
3663           --no-abbrev-commit.
3664
3665       log.date
3666           Set the default date-time mode for the log command. Setting a value
3667           for log.date is similar to using git log's --date option. See git-
3668           log(1) for details.
3669
3670       log.decorate
3671           Print out the ref names of any commits that are shown by the log
3672           command. If short is specified, the ref name prefixes refs/heads/,
3673           refs/tags/ and refs/remotes/ will not be printed. If full is
3674           specified, the full ref name (including prefix) will be printed. If
3675           auto is specified, then if the output is going to a terminal, the
3676           ref names are shown as if short were given, otherwise no ref names
3677           are shown. This is the same as the --decorate option of the git
3678           log.
3679
3680       log.excludeDecoration
3681           Exclude the specified patterns from the log decorations. This is
3682           similar to the --decorate-refs-exclude command-line option, but the
3683           config option can be overridden by the --decorate-refs option.
3684
3685       log.diffMerges
3686           Set default diff format to be used for merge commits. See
3687           --diff-merges in git-log(1) for details. Defaults to separate.
3688
3689       log.follow
3690           If true, git log will act as if the --follow option was used when a
3691           single <path> is given. This has the same limitations as --follow,
3692           i.e. it cannot be used to follow multiple files and does not work
3693           well on non-linear history.
3694
3695       log.graphColors
3696           A list of colors, separated by commas, that can be used to draw
3697           history lines in git log --graph.
3698
3699       log.showRoot
3700           If true, the initial commit will be shown as a big creation event.
3701           This is equivalent to a diff against an empty tree. Tools like git-
3702           log(1) or git-whatchanged(1), which normally hide the root commit
3703           will now show it. True by default.
3704
3705       log.showSignature
3706           If true, makes git-log(1), git-show(1), and git-whatchanged(1)
3707           assume --show-signature.
3708
3709       log.mailmap
3710           If true, makes git-log(1), git-show(1), and git-whatchanged(1)
3711           assume --use-mailmap, otherwise assume --no-use-mailmap. True by
3712           default.
3713
3714       lsrefs.unborn
3715           May be "advertise" (the default), "allow", or "ignore". If
3716           "advertise", the server will respond to the client sending "unborn"
3717           (as described in protocol-v2.txt) and will advertise support for
3718           this feature during the protocol v2 capability advertisement.
3719           "allow" is the same as "advertise" except that the server will not
3720           advertise support for this feature; this is useful for
3721           load-balanced servers that cannot be updated atomically (for
3722           example), since the administrator could configure "allow", then
3723           after a delay, configure "advertise".
3724
3725       mailinfo.scissors
3726           If true, makes git-mailinfo(1) (and therefore git-am(1)) act by
3727           default as if the --scissors option was provided on the
3728           command-line. When active, this features removes everything from
3729           the message body before a scissors line (i.e. consisting mainly of
3730           ">8", "8<" and "-").
3731
3732       mailmap.file
3733           The location of an augmenting mailmap file. The default mailmap,
3734           located in the root of the repository, is loaded first, then the
3735           mailmap file pointed to by this variable. The location of the
3736           mailmap file may be in a repository subdirectory, or somewhere
3737           outside of the repository itself. See git-shortlog(1) and git-
3738           blame(1).
3739
3740       mailmap.blob
3741           Like mailmap.file, but consider the value as a reference to a blob
3742           in the repository. If both mailmap.file and mailmap.blob are given,
3743           both are parsed, with entries from mailmap.file taking precedence.
3744           In a bare repository, this defaults to HEAD:.mailmap. In a non-bare
3745           repository, it defaults to empty.
3746
3747       maintenance.auto
3748           This boolean config option controls whether some commands run git
3749           maintenance run --auto after doing their normal work. Defaults to
3750           true.
3751
3752       maintenance.strategy
3753           This string config option provides a way to specify one of a few
3754           recommended schedules for background maintenance. This only affects
3755           which tasks are run during git maintenance run --schedule=X
3756           commands, provided no --task=<task> arguments are provided.
3757           Further, if a maintenance.<task>.schedule config value is set, then
3758           that value is used instead of the one provided by
3759           maintenance.strategy. The possible strategy strings are:
3760
3761none: This default setting implies no task are run at any
3762               schedule.
3763
3764incremental: This setting optimizes for performing small
3765               maintenance activities that do not delete any data. This does
3766               not schedule the gc task, but runs the prefetch and
3767               commit-graph tasks hourly, the loose-objects and
3768               incremental-repack tasks daily, and the pack-refs task weekly.
3769
3770       maintenance.<task>.enabled
3771           This boolean config option controls whether the maintenance task
3772           with name <task> is run when no --task option is specified to git
3773           maintenance run. These config values are ignored if a --task option
3774           exists. By default, only maintenance.gc.enabled is true.
3775
3776       maintenance.<task>.schedule
3777           This config option controls whether or not the given <task> runs
3778           during a git maintenance run --schedule=<frequency> command. The
3779           value must be one of "hourly", "daily", or "weekly".
3780
3781       maintenance.commit-graph.auto
3782           This integer config option controls how often the commit-graph task
3783           should be run as part of git maintenance run --auto. If zero, then
3784           the commit-graph task will not run with the --auto option. A
3785           negative value will force the task to run every time. Otherwise, a
3786           positive value implies the command should run when the number of
3787           reachable commits that are not in the commit-graph file is at least
3788           the value of maintenance.commit-graph.auto. The default value is
3789           100.
3790
3791       maintenance.loose-objects.auto
3792           This integer config option controls how often the loose-objects
3793           task should be run as part of git maintenance run --auto. If zero,
3794           then the loose-objects task will not run with the --auto option. A
3795           negative value will force the task to run every time. Otherwise, a
3796           positive value implies the command should run when the number of
3797           loose objects is at least the value of
3798           maintenance.loose-objects.auto. The default value is 100.
3799
3800       maintenance.incremental-repack.auto
3801           This integer config option controls how often the
3802           incremental-repack task should be run as part of git maintenance
3803           run --auto. If zero, then the incremental-repack task will not run
3804           with the --auto option. A negative value will force the task to run
3805           every time. Otherwise, a positive value implies the command should
3806           run when the number of pack-files not in the multi-pack-index is at
3807           least the value of maintenance.incremental-repack.auto. The default
3808           value is 10.
3809
3810       man.viewer
3811           Specify the programs that may be used to display help in the man
3812           format. See git-help(1).
3813
3814       man.<tool>.cmd
3815           Specify the command to invoke the specified man viewer. The
3816           specified command is evaluated in shell with the man page passed as
3817           argument. (See git-help(1).)
3818
3819       man.<tool>.path
3820           Override the path for the given tool that may be used to display
3821           help in the man format. See git-help(1).
3822
3823       merge.conflictStyle
3824           Specify the style in which conflicted hunks are written out to
3825           working tree files upon merge. The default is "merge", which shows
3826           a <<<<<<< conflict marker, changes made by one side, a =======
3827           marker, changes made by the other side, and then a >>>>>>> marker.
3828           An alternate style, "diff3", adds a ||||||| marker and the original
3829           text before the ======= marker.
3830
3831       merge.defaultToUpstream
3832           If merge is called without any commit argument, merge the upstream
3833           branches configured for the current branch by using their last
3834           observed values stored in their remote-tracking branches. The
3835           values of the branch.<current branch>.merge that name the branches
3836           at the remote named by branch.<current branch>.remote are
3837           consulted, and then they are mapped via remote.<remote>.fetch to
3838           their corresponding remote-tracking branches, and the tips of these
3839           tracking branches are merged. Defaults to true.
3840
3841       merge.ff
3842           By default, Git does not create an extra merge commit when merging
3843           a commit that is a descendant of the current commit. Instead, the
3844           tip of the current branch is fast-forwarded. When set to false,
3845           this variable tells Git to create an extra merge commit in such a
3846           case (equivalent to giving the --no-ff option from the command
3847           line). When set to only, only such fast-forward merges are allowed
3848           (equivalent to giving the --ff-only option from the command line).
3849
3850       merge.verifySignatures
3851           If true, this is equivalent to the --verify-signatures command line
3852           option. See git-merge(1) for details.
3853
3854       merge.branchdesc
3855           In addition to branch names, populate the log message with the
3856           branch description text associated with them. Defaults to false.
3857
3858       merge.log
3859           In addition to branch names, populate the log message with at most
3860           the specified number of one-line descriptions from the actual
3861           commits that are being merged. Defaults to false, and true is a
3862           synonym for 20.
3863
3864       merge.suppressDest
3865           By adding a glob that matches the names of integration branches to
3866           this multi-valued configuration variable, the default merge message
3867           computed for merges into these integration branches will omit "into
3868           <branch name>" from its title.
3869
3870           An element with an empty value can be used to clear the list of
3871           globs accumulated from previous configuration entries. When there
3872           is no merge.suppressDest variable defined, the default value of
3873           master is used for backward compatibility.
3874
3875       merge.renameLimit
3876           The number of files to consider in the exhaustive portion of rename
3877           detection during a merge. If not specified, defaults to the value
3878           of diff.renameLimit. If neither merge.renameLimit nor
3879           diff.renameLimit are specified, currently defaults to 7000. This
3880           setting has no effect if rename detection is turned off.
3881
3882       merge.renames
3883           Whether Git detects renames. If set to "false", rename detection is
3884           disabled. If set to "true", basic rename detection is enabled.
3885           Defaults to the value of diff.renames.
3886
3887       merge.directoryRenames
3888           Whether Git detects directory renames, affecting what happens at
3889           merge time to new files added to a directory on one side of history
3890           when that directory was renamed on the other side of history. If
3891           merge.directoryRenames is set to "false", directory rename
3892           detection is disabled, meaning that such new files will be left
3893           behind in the old directory. If set to "true", directory rename
3894           detection is enabled, meaning that such new files will be moved
3895           into the new directory. If set to "conflict", a conflict will be
3896           reported for such paths. If merge.renames is false,
3897           merge.directoryRenames is ignored and treated as false. Defaults to
3898           "conflict".
3899
3900       merge.renormalize
3901           Tell Git that canonical representation of files in the repository
3902           has changed over time (e.g. earlier commits record text files with
3903           CRLF line endings, but recent ones use LF line endings). In such a
3904           repository, Git can convert the data recorded in commits to a
3905           canonical form before performing a merge to reduce unnecessary
3906           conflicts. For more information, see section "Merging branches with
3907           differing checkin/checkout attributes" in gitattributes(5).
3908
3909       merge.stat
3910           Whether to print the diffstat between ORIG_HEAD and the merge
3911           result at the end of the merge. True by default.
3912
3913       merge.autoStash
3914           When set to true, automatically create a temporary stash entry
3915           before the operation begins, and apply it after the operation ends.
3916           This means that you can run merge on a dirty worktree. However, use
3917           with care: the final stash application after a successful merge
3918           might result in non-trivial conflicts. This option can be
3919           overridden by the --no-autostash and --autostash options of git-
3920           merge(1). Defaults to false.
3921
3922       merge.tool
3923           Controls which merge tool is used by git-mergetool(1). The list
3924           below shows the valid built-in values. Any other value is treated
3925           as a custom merge tool and requires that a corresponding
3926           mergetool.<tool>.cmd variable is defined.
3927
3928       merge.guitool
3929           Controls which merge tool is used by git-mergetool(1) when the
3930           -g/--gui flag is specified. The list below shows the valid built-in
3931           values. Any other value is treated as a custom merge tool and
3932           requires that a corresponding mergetool.<guitool>.cmd variable is
3933           defined.
3934
3935           •   araxis
3936
3937           •   bc
3938
3939           •   bc3
3940
3941           •   bc4
3942
3943           •   codecompare
3944
3945           •   deltawalker
3946
3947           •   diffmerge
3948
3949           •   diffuse
3950
3951           •   ecmerge
3952
3953           •   emerge
3954
3955           •   examdiff
3956
3957           •   guiffy
3958
3959           •   gvimdiff
3960
3961           •   gvimdiff1
3962
3963           •   gvimdiff2
3964
3965           •   gvimdiff3
3966
3967           •   kdiff3
3968
3969           •   meld
3970
3971           •   nvimdiff
3972
3973           •   nvimdiff1
3974
3975           •   nvimdiff2
3976
3977           •   nvimdiff3
3978
3979           •   opendiff
3980
3981           •   p4merge
3982
3983           •   smerge
3984
3985           •   tkdiff
3986
3987           •   tortoisemerge
3988
3989           •   vimdiff
3990
3991           •   vimdiff1
3992
3993           •   vimdiff2
3994
3995           •   vimdiff3
3996
3997           •   winmerge
3998
3999           •   xxdiff
4000
4001       merge.verbosity
4002           Controls the amount of output shown by the recursive merge
4003           strategy. Level 0 outputs nothing except a final error message if
4004           conflicts were detected. Level 1 outputs only conflicts, 2 outputs
4005           conflicts and file changes. Level 5 and above outputs debugging
4006           information. The default is level 2. Can be overridden by the
4007           GIT_MERGE_VERBOSITY environment variable.
4008
4009       merge.<driver>.name
4010           Defines a human-readable name for a custom low-level merge driver.
4011           See gitattributes(5) for details.
4012
4013       merge.<driver>.driver
4014           Defines the command that implements a custom low-level merge
4015           driver. See gitattributes(5) for details.
4016
4017       merge.<driver>.recursive
4018           Names a low-level merge driver to be used when performing an
4019           internal merge between common ancestors. See gitattributes(5) for
4020           details.
4021
4022       mergetool.<tool>.path
4023           Override the path for the given tool. This is useful in case your
4024           tool is not in the PATH.
4025
4026       mergetool.<tool>.cmd
4027           Specify the command to invoke the specified merge tool. The
4028           specified command is evaluated in shell with the following
4029           variables available: BASE is the name of a temporary file
4030           containing the common base of the files to be merged, if available;
4031           LOCAL is the name of a temporary file containing the contents of
4032           the file on the current branch; REMOTE is the name of a temporary
4033           file containing the contents of the file from the branch being
4034           merged; MERGED contains the name of the file to which the merge
4035           tool should write the results of a successful merge.
4036
4037       mergetool.<tool>.hideResolved
4038           Allows the user to override the global mergetool.hideResolved value
4039           for a specific tool. See mergetool.hideResolved for the full
4040           description.
4041
4042       mergetool.<tool>.trustExitCode
4043           For a custom merge command, specify whether the exit code of the
4044           merge command can be used to determine whether the merge was
4045           successful. If this is not set to true then the merge target file
4046           timestamp is checked and the merge assumed to have been successful
4047           if the file has been updated, otherwise the user is prompted to
4048           indicate the success of the merge.
4049
4050       mergetool.meld.hasOutput
4051           Older versions of meld do not support the --output option. Git will
4052           attempt to detect whether meld supports --output by inspecting the
4053           output of meld --help. Configuring mergetool.meld.hasOutput will
4054           make Git skip these checks and use the configured value instead.
4055           Setting mergetool.meld.hasOutput to true tells Git to
4056           unconditionally use the --output option, and false avoids using
4057           --output.
4058
4059       mergetool.meld.useAutoMerge
4060           When the --auto-merge is given, meld will merge all non-conflicting
4061           parts automatically, highlight the conflicting parts and wait for
4062           user decision. Setting mergetool.meld.useAutoMerge to true tells
4063           Git to unconditionally use the --auto-merge option with meld.
4064           Setting this value to auto makes git detect whether --auto-merge is
4065           supported and will only use --auto-merge when available. A value of
4066           false avoids using --auto-merge altogether, and is the default
4067           value.
4068
4069       mergetool.hideResolved
4070           During a merge Git will automatically resolve as many conflicts as
4071           possible and write the MERGED file containing conflict markers
4072           around any conflicts that it cannot resolve; LOCAL and REMOTE
4073           normally represent the versions of the file from before Git’s
4074           conflict resolution. This flag causes LOCAL and REMOTE to be
4075           overwriten so that only the unresolved conflicts are presented to
4076           the merge tool. Can be configured per-tool via the
4077           mergetool.<tool>.hideResolved configuration variable. Defaults to
4078           false.
4079
4080       mergetool.keepBackup
4081           After performing a merge, the original file with conflict markers
4082           can be saved as a file with a .orig extension. If this variable is
4083           set to false then this file is not preserved. Defaults to true
4084           (i.e. keep the backup files).
4085
4086       mergetool.keepTemporaries
4087           When invoking a custom merge tool, Git uses a set of temporary
4088           files to pass to the tool. If the tool returns an error and this
4089           variable is set to true, then these temporary files will be
4090           preserved, otherwise they will be removed after the tool has
4091           exited. Defaults to false.
4092
4093       mergetool.writeToTemp
4094           Git writes temporary BASE, LOCAL, and REMOTE versions of
4095           conflicting files in the worktree by default. Git will attempt to
4096           use a temporary directory for these files when set true. Defaults
4097           to false.
4098
4099       mergetool.prompt
4100           Prompt before each invocation of the merge resolution program.
4101
4102       notes.mergeStrategy
4103           Which merge strategy to choose by default when resolving notes
4104           conflicts. Must be one of manual, ours, theirs, union, or
4105           cat_sort_uniq. Defaults to manual. See "NOTES MERGE STRATEGIES"
4106           section of git-notes(1) for more information on each strategy.
4107
4108       notes.<name>.mergeStrategy
4109           Which merge strategy to choose when doing a notes merge into
4110           refs/notes/<name>. This overrides the more general
4111           "notes.mergeStrategy". See the "NOTES MERGE STRATEGIES" section in
4112           git-notes(1) for more information on the available strategies.
4113
4114       notes.displayRef
4115           The (fully qualified) refname from which to show notes when showing
4116           commit messages. The value of this variable can be set to a glob,
4117           in which case notes from all matching refs will be shown. You may
4118           also specify this configuration variable several times. A warning
4119           will be issued for refs that do not exist, but a glob that does not
4120           match any refs is silently ignored.
4121
4122           This setting can be overridden with the GIT_NOTES_DISPLAY_REF
4123           environment variable, which must be a colon separated list of refs
4124           or globs.
4125
4126           The effective value of "core.notesRef" (possibly overridden by
4127           GIT_NOTES_REF) is also implicitly added to the list of refs to be
4128           displayed.
4129
4130       notes.rewrite.<command>
4131           When rewriting commits with <command> (currently amend or rebase)
4132           and this variable is set to true, Git automatically copies your
4133           notes from the original to the rewritten commit. Defaults to true,
4134           but see "notes.rewriteRef" below.
4135
4136       notes.rewriteMode
4137           When copying notes during a rewrite (see the
4138           "notes.rewrite.<command>" option), determines what to do if the
4139           target commit already has a note. Must be one of overwrite,
4140           concatenate, cat_sort_uniq, or ignore. Defaults to concatenate.
4141
4142           This setting can be overridden with the GIT_NOTES_REWRITE_MODE
4143           environment variable.
4144
4145       notes.rewriteRef
4146           When copying notes during a rewrite, specifies the (fully
4147           qualified) ref whose notes should be copied. The ref may be a glob,
4148           in which case notes in all matching refs will be copied. You may
4149           also specify this configuration several times.
4150
4151           Does not have a default value; you must configure this variable to
4152           enable note rewriting. Set it to refs/notes/commits to enable
4153           rewriting for the default commit notes.
4154
4155           This setting can be overridden with the GIT_NOTES_REWRITE_REF
4156           environment variable, which must be a colon separated list of refs
4157           or globs.
4158
4159       pack.window
4160           The size of the window used by git-pack-objects(1) when no window
4161           size is given on the command line. Defaults to 10.
4162
4163       pack.depth
4164           The maximum delta depth used by git-pack-objects(1) when no maximum
4165           depth is given on the command line. Defaults to 50. Maximum value
4166           is 4095.
4167
4168       pack.windowMemory
4169           The maximum size of memory that is consumed by each thread in git-
4170           pack-objects(1) for pack window memory when no limit is given on
4171           the command line. The value can be suffixed with "k", "m", or "g".
4172           When left unconfigured (or set explicitly to 0), there will be no
4173           limit.
4174
4175       pack.compression
4176           An integer -1..9, indicating the compression level for objects in a
4177           pack file. -1 is the zlib default. 0 means no compression, and 1..9
4178           are various speed/size tradeoffs, 9 being slowest. If not set,
4179           defaults to core.compression. If that is not set, defaults to -1,
4180           the zlib default, which is "a default compromise between speed and
4181           compression (currently equivalent to level 6)."
4182
4183           Note that changing the compression level will not automatically
4184           recompress all existing objects. You can force recompression by
4185           passing the -F option to git-repack(1).
4186
4187       pack.allowPackReuse
4188           When true, and when reachability bitmaps are enabled, pack-objects
4189           will try to send parts of the bitmapped packfile verbatim. This can
4190           reduce memory and CPU usage to serve fetches, but might result in
4191           sending a slightly larger pack. Defaults to true.
4192
4193       pack.island
4194           An extended regular expression configuring a set of delta islands.
4195           See "DELTA ISLANDS" in git-pack-objects(1) for details.
4196
4197       pack.islandCore
4198           Specify an island name which gets to have its objects be packed
4199           first. This creates a kind of pseudo-pack at the front of one pack,
4200           so that the objects from the specified island are hopefully faster
4201           to copy into any pack that should be served to a user requesting
4202           these objects. In practice this means that the island specified
4203           should likely correspond to what is the most commonly cloned in the
4204           repo. See also "DELTA ISLANDS" in git-pack-objects(1).
4205
4206       pack.deltaCacheSize
4207           The maximum memory in bytes used for caching deltas in git-pack-
4208           objects(1) before writing them out to a pack. This cache is used to
4209           speed up the writing object phase by not having to recompute the
4210           final delta result once the best match for all objects is found.
4211           Repacking large repositories on machines which are tight with
4212           memory might be badly impacted by this though, especially if this
4213           cache pushes the system into swapping. A value of 0 means no limit.
4214           The smallest size of 1 byte may be used to virtually disable this
4215           cache. Defaults to 256 MiB.
4216
4217       pack.deltaCacheLimit
4218           The maximum size of a delta, that is cached in git-pack-objects(1).
4219           This cache is used to speed up the writing object phase by not
4220           having to recompute the final delta result once the best match for
4221           all objects is found. Defaults to 1000. Maximum value is 65535.
4222
4223       pack.threads
4224           Specifies the number of threads to spawn when searching for best
4225           delta matches. This requires that git-pack-objects(1) be compiled
4226           with pthreads otherwise this option is ignored with a warning. This
4227           is meant to reduce packing time on multiprocessor machines. The
4228           required amount of memory for the delta search window is however
4229           multiplied by the number of threads. Specifying 0 will cause Git to
4230           auto-detect the number of CPU’s and set the number of threads
4231           accordingly.
4232
4233       pack.indexVersion
4234           Specify the default pack index version. Valid values are 1 for
4235           legacy pack index used by Git versions prior to 1.5.2, and 2 for
4236           the new pack index with capabilities for packs larger than 4 GB as
4237           well as proper protection against the repacking of corrupted packs.
4238           Version 2 is the default. Note that version 2 is enforced and this
4239           config option ignored whenever the corresponding pack is larger
4240           than 2 GB.
4241
4242           If you have an old Git that does not understand the version 2 *.idx
4243           file, cloning or fetching over a non native protocol (e.g. "http")
4244           that will copy both *.pack file and corresponding *.idx file from
4245           the other side may give you a repository that cannot be accessed
4246           with your older version of Git. If the *.pack file is smaller than
4247           2 GB, however, you can use git-index-pack(1) on the *.pack file to
4248           regenerate the *.idx file.
4249
4250       pack.packSizeLimit
4251           The maximum size of a pack. This setting only affects packing to a
4252           file when repacking, i.e. the git:// protocol is unaffected. It can
4253           be overridden by the --max-pack-size option of git-repack(1).
4254           Reaching this limit results in the creation of multiple packfiles.
4255
4256           Note that this option is rarely useful, and may result in a larger
4257           total on-disk size (because Git will not store deltas between
4258           packs), as well as worse runtime performance (object lookup within
4259           multiple packs is slower than a single pack, and optimizations like
4260           reachability bitmaps cannot cope with multiple packs).
4261
4262           If you need to actively run Git using smaller packfiles (e.g.,
4263           because your filesystem does not support large files), this option
4264           may help. But if your goal is to transmit a packfile over a medium
4265           that supports limited sizes (e.g., removable media that cannot
4266           store the whole repository), you are likely better off creating a
4267           single large packfile and splitting it using a generic multi-volume
4268           archive tool (e.g., Unix split).
4269
4270           The minimum size allowed is limited to 1 MiB. The default is
4271           unlimited. Common unit suffixes of k, m, or g are supported.
4272
4273       pack.useBitmaps
4274           When true, git will use pack bitmaps (if available) when packing to
4275           stdout (e.g., during the server side of a fetch). Defaults to true.
4276           You should not generally need to turn this off unless you are
4277           debugging pack bitmaps.
4278
4279       pack.useSparse
4280           When true, git will default to using the --sparse option in git
4281           pack-objects when the --revs option is present. This algorithm only
4282           walks trees that appear in paths that introduce new objects. This
4283           can have significant performance benefits when computing a pack to
4284           send a small change. However, it is possible that extra objects are
4285           added to the pack-file if the included commits contain certain
4286           types of direct renames. Default is true.
4287
4288       pack.preferBitmapTips
4289           When selecting which commits will receive bitmaps, prefer a commit
4290           at the tip of any reference that is a suffix of any value of this
4291           configuration over any other commits in the "selection window".
4292
4293           Note that setting this configuration to refs/foo does not mean that
4294           the commits at the tips of refs/foo/bar and refs/foo/baz will
4295           necessarily be selected. This is because commits are selected for
4296           bitmaps from within a series of windows of variable length.
4297
4298           If a commit at the tip of any reference which is a suffix of any
4299           value of this configuration is seen in a window, it is immediately
4300           given preference over any other commit in that window.
4301
4302       pack.writeBitmaps (deprecated)
4303           This is a deprecated synonym for repack.writeBitmaps.
4304
4305       pack.writeBitmapHashCache
4306           When true, git will include a "hash cache" section in the bitmap
4307           index (if one is written). This cache can be used to feed git’s
4308           delta heuristics, potentially leading to better deltas between
4309           bitmapped and non-bitmapped objects (e.g., when serving a fetch
4310           between an older, bitmapped pack and objects that have been pushed
4311           since the last gc). The downside is that it consumes 4 bytes per
4312           object of disk space. Defaults to true.
4313
4314       pack.writeReverseIndex
4315           When true, git will write a corresponding .rev file (see:
4316           Documentation/technical/pack-format.txt[1]) for each new packfile
4317           that it writes in all places except for git-fast-import(1) and in
4318           the bulk checkin mechanism. Defaults to false.
4319
4320       pager.<cmd>
4321           If the value is boolean, turns on or off pagination of the output
4322           of a particular Git subcommand when writing to a tty. Otherwise,
4323           turns on pagination for the subcommand using the pager specified by
4324           the value of pager.<cmd>. If --paginate or --no-pager is specified
4325           on the command line, it takes precedence over this option. To
4326           disable pagination for all commands, set core.pager or GIT_PAGER to
4327           cat.
4328
4329       pretty.<name>
4330           Alias for a --pretty= format string, as specified in git-log(1).
4331           Any aliases defined here can be used just as the built-in pretty
4332           formats could. For example, running git config pretty.changelog
4333           "format:* %H %s" would cause the invocation git log
4334           --pretty=changelog to be equivalent to running git log
4335           "--pretty=format:* %H %s". Note that an alias with the same name as
4336           a built-in format will be silently ignored.
4337
4338       protocol.allow
4339           If set, provide a user defined default policy for all protocols
4340           which don’t explicitly have a policy (protocol.<name>.allow). By
4341           default, if unset, known-safe protocols (http, https, git, ssh,
4342           file) have a default policy of always, known-dangerous protocols
4343           (ext) have a default policy of never, and all other protocols have
4344           a default policy of user. Supported policies:
4345
4346always - protocol is always able to be used.
4347
4348never - protocol is never able to be used.
4349
4350user - protocol is only able to be used when
4351               GIT_PROTOCOL_FROM_USER is either unset or has a value of 1.
4352               This policy should be used when you want a protocol to be
4353               directly usable by the user but don’t want it used by commands
4354               which execute clone/fetch/push commands without user input,
4355               e.g. recursive submodule initialization.
4356
4357       protocol.<name>.allow
4358           Set a policy to be used by protocol <name> with clone/fetch/push
4359           commands. See protocol.allow above for the available policies.
4360
4361           The protocol names currently used by git are:
4362
4363file: any local file-based path (including file:// URLs, or
4364               local paths)
4365
4366git: the anonymous git protocol over a direct TCP connection
4367               (or proxy, if configured)
4368
4369ssh: git over ssh (including host:path syntax, ssh://, etc).
4370
4371http: git over http, both "smart http" and "dumb http". Note
4372               that this does not include https; if you want to configure
4373               both, you must do so individually.
4374
4375           •   any external helpers are named by their protocol (e.g., use hg
4376               to allow the git-remote-hg helper)
4377
4378       protocol.version
4379           If set, clients will attempt to communicate with a server using the
4380           specified protocol version. If the server does not support it,
4381           communication falls back to version 0. If unset, the default is 2.
4382           Supported versions:
4383
43840 - the original wire protocol.
4385
43861 - the original wire protocol with the addition of a version
4387               string in the initial response from the server.
4388
43892 - wire protocol version 2[2].
4390
4391       pull.ff
4392           By default, Git does not create an extra merge commit when merging
4393           a commit that is a descendant of the current commit. Instead, the
4394           tip of the current branch is fast-forwarded. When set to false,
4395           this variable tells Git to create an extra merge commit in such a
4396           case (equivalent to giving the --no-ff option from the command
4397           line). When set to only, only such fast-forward merges are allowed
4398           (equivalent to giving the --ff-only option from the command line).
4399           This setting overrides merge.ff when pulling.
4400
4401       pull.rebase
4402           When true, rebase branches on top of the fetched branch, instead of
4403           merging the default branch from the default remote when "git pull"
4404           is run. See "branch.<name>.rebase" for setting this on a per-branch
4405           basis.
4406
4407           When merges (or just m), pass the --rebase-merges option to git
4408           rebase so that the local merge commits are included in the rebase
4409           (see git-rebase(1) for details).
4410
4411           When preserve (or just p, deprecated in favor of merges), also pass
4412           --preserve-merges along to git rebase so that locally committed
4413           merge commits will not be flattened by running git pull.
4414
4415           When the value is interactive (or just i), the rebase is run in
4416           interactive mode.
4417
4418           NOTE: this is a possibly dangerous operation; do not use it unless
4419           you understand the implications (see git-rebase(1) for details).
4420
4421       pull.octopus
4422           The default merge strategy to use when pulling multiple branches at
4423           once.
4424
4425       pull.twohead
4426           The default merge strategy to use when pulling a single branch.
4427
4428       push.default
4429           Defines the action git push should take if no refspec is given
4430           (whether from the command-line, config, or elsewhere). Different
4431           values are well-suited for specific workflows; for instance, in a
4432           purely central workflow (i.e. the fetch source is equal to the push
4433           destination), upstream is probably what you want. Possible values
4434           are:
4435
4436nothing - do not push anything (error out) unless a refspec is
4437               given. This is primarily meant for people who want to avoid
4438               mistakes by always being explicit.
4439
4440current - push the current branch to update a branch with the
4441               same name on the receiving end. Works in both central and
4442               non-central workflows.
4443
4444upstream - push the current branch back to the branch whose
4445               changes are usually integrated into the current branch (which
4446               is called @{upstream}). This mode only makes sense if you are
4447               pushing to the same repository you would normally pull from
4448               (i.e. central workflow).
4449
4450tracking - This is a deprecated synonym for upstream.
4451
4452simple - pushes the current branch with the same name on the
4453               remote.
4454
4455               If you are working on a centralized workflow (pushing to the
4456               same repository you pull from, which is typically origin), then
4457               you need to configure an upstream branch with the same name.
4458
4459               This mode is the default since Git 2.0, and is the safest
4460               option suited for beginners.
4461
4462matching - push all branches having the same name on both ends.
4463               This makes the repository you are pushing to remember the set
4464               of branches that will be pushed out (e.g. if you always push
4465               maint and master there and no other branches, the repository
4466               you push to will have these two branches, and your local maint
4467               and master will be pushed there).
4468
4469               To use this mode effectively, you have to make sure all the
4470               branches you would push out are ready to be pushed out before
4471               running git push, as the whole point of this mode is to allow
4472               you to push all of the branches in one go. If you usually
4473               finish work on only one branch and push out the result, while
4474               other branches are unfinished, this mode is not for you. Also
4475               this mode is not suitable for pushing into a shared central
4476               repository, as other people may add new branches there, or
4477               update the tip of existing branches outside your control.
4478
4479               This used to be the default, but not since Git 2.0 (simple is
4480               the new default).
4481
4482       push.followTags
4483           If set to true enable --follow-tags option by default. You may
4484           override this configuration at time of push by specifying
4485           --no-follow-tags.
4486
4487       push.gpgSign
4488           May be set to a boolean value, or the string if-asked. A true value
4489           causes all pushes to be GPG signed, as if --signed is passed to
4490           git-push(1). The string if-asked causes pushes to be signed if the
4491           server supports it, as if --signed=if-asked is passed to git push.
4492           A false value may override a value from a lower-priority config
4493           file. An explicit command-line flag always overrides this config
4494           option.
4495
4496       push.pushOption
4497           When no --push-option=<option> argument is given from the command
4498           line, git push behaves as if each <value> of this variable is given
4499           as --push-option=<value>.
4500
4501           This is a multi-valued variable, and an empty value can be used in
4502           a higher priority configuration file (e.g.  .git/config in a
4503           repository) to clear the values inherited from a lower priority
4504           configuration files (e.g.  $HOME/.gitconfig).
4505
4506               Example:
4507
4508               /etc/gitconfig
4509                 push.pushoption = a
4510                 push.pushoption = b
4511
4512               ~/.gitconfig
4513                 push.pushoption = c
4514
4515               repo/.git/config
4516                 push.pushoption =
4517                 push.pushoption = b
4518
4519               This will result in only b (a and c are cleared).
4520
4521       push.recurseSubmodules
4522           Make sure all submodule commits used by the revisions to be pushed
4523           are available on a remote-tracking branch. If the value is check
4524           then Git will verify that all submodule commits that changed in the
4525           revisions to be pushed are available on at least one remote of the
4526           submodule. If any commits are missing, the push will be aborted and
4527           exit with non-zero status. If the value is on-demand then all
4528           submodules that changed in the revisions to be pushed will be
4529           pushed. If on-demand was not able to push all necessary revisions
4530           it will also be aborted and exit with non-zero status. If the value
4531           is no then default behavior of ignoring submodules when pushing is
4532           retained. You may override this configuration at time of push by
4533           specifying --recurse-submodules=check|on-demand|no. If not set, no
4534           is used by default, unless submodule.recurse is set (in which case
4535           a true value means on-demand).
4536
4537       push.useForceIfIncludes
4538           If set to "true", it is equivalent to specifying
4539           --force-if-includes as an option to git-push(1) in the command
4540           line. Adding --no-force-if-includes at the time of push overrides
4541           this configuration setting.
4542
4543       push.negotiate
4544           If set to "true", attempt to reduce the size of the packfile sent
4545           by rounds of negotiation in which the client and the server attempt
4546           to find commits in common. If "false", Git will rely solely on the
4547           server’s ref advertisement to find commits in common.
4548
4549       rebase.backend
4550           Default backend to use for rebasing. Possible choices are apply or
4551           merge. In the future, if the merge backend gains all remaining
4552           capabilities of the apply backend, this setting may become unused.
4553
4554       rebase.stat
4555           Whether to show a diffstat of what changed upstream since the last
4556           rebase. False by default.
4557
4558       rebase.autoSquash
4559           If set to true enable --autosquash option by default.
4560
4561       rebase.autoStash
4562           When set to true, automatically create a temporary stash entry
4563           before the operation begins, and apply it after the operation ends.
4564           This means that you can run rebase on a dirty worktree. However,
4565           use with care: the final stash application after a successful
4566           rebase might result in non-trivial conflicts. This option can be
4567           overridden by the --no-autostash and --autostash options of git-
4568           rebase(1). Defaults to false.
4569
4570       rebase.missingCommitsCheck
4571           If set to "warn", git rebase -i will print a warning if some
4572           commits are removed (e.g. a line was deleted), however the rebase
4573           will still proceed. If set to "error", it will print the previous
4574           warning and stop the rebase, git rebase --edit-todo can then be
4575           used to correct the error. If set to "ignore", no checking is done.
4576           To drop a commit without warning or error, use the drop command in
4577           the todo list. Defaults to "ignore".
4578
4579       rebase.instructionFormat
4580           A format string, as specified in git-log(1), to be used for the
4581           todo list during an interactive rebase. The format will
4582           automatically have the long commit hash prepended to the format.
4583
4584       rebase.abbreviateCommands
4585           If set to true, git rebase will use abbreviated command names in
4586           the todo list resulting in something like this:
4587
4588                       p deadbee The oneline of the commit
4589                       p fa1afe1 The oneline of the next commit
4590                       ...
4591
4592           instead of:
4593
4594                       pick deadbee The oneline of the commit
4595                       pick fa1afe1 The oneline of the next commit
4596                       ...
4597
4598           Defaults to false.
4599
4600       rebase.rescheduleFailedExec
4601           Automatically reschedule exec commands that failed. This only makes
4602           sense in interactive mode (or when an --exec option was provided).
4603           This is the same as specifying the --reschedule-failed-exec option.
4604
4605       rebase.forkPoint
4606           If set to false set --no-fork-point option by default.
4607
4608       receive.advertiseAtomic
4609           By default, git-receive-pack will advertise the atomic push
4610           capability to its clients. If you don’t want to advertise this
4611           capability, set this variable to false.
4612
4613       receive.advertisePushOptions
4614           When set to true, git-receive-pack will advertise the push options
4615           capability to its clients. False by default.
4616
4617       receive.autogc
4618           By default, git-receive-pack will run "git-gc --auto" after
4619           receiving data from git-push and updating refs. You can stop it by
4620           setting this variable to false.
4621
4622       receive.certNonceSeed
4623           By setting this variable to a string, git receive-pack will accept
4624           a git push --signed and verifies it by using a "nonce" protected by
4625           HMAC using this string as a secret key.
4626
4627       receive.certNonceSlop
4628           When a git push --signed sent a push certificate with a "nonce"
4629           that was issued by a receive-pack serving the same repository
4630           within this many seconds, export the "nonce" found in the
4631           certificate to GIT_PUSH_CERT_NONCE to the hooks (instead of what
4632           the receive-pack asked the sending side to include). This may allow
4633           writing checks in pre-receive and post-receive a bit easier.
4634           Instead of checking GIT_PUSH_CERT_NONCE_SLOP environment variable
4635           that records by how many seconds the nonce is stale to decide if
4636           they want to accept the certificate, they only can check
4637           GIT_PUSH_CERT_NONCE_STATUS is OK.
4638
4639       receive.fsckObjects
4640           If it is set to true, git-receive-pack will check all received
4641           objects. See transfer.fsckObjects for what’s checked. Defaults to
4642           false. If not set, the value of transfer.fsckObjects is used
4643           instead.
4644
4645       receive.fsck.<msg-id>
4646           Acts like fsck.<msg-id>, but is used by git-receive-pack(1) instead
4647           of git-fsck(1). See the fsck.<msg-id> documentation for details.
4648
4649       receive.fsck.skipList
4650           Acts like fsck.skipList, but is used by git-receive-pack(1) instead
4651           of git-fsck(1). See the fsck.skipList documentation for details.
4652
4653       receive.keepAlive
4654           After receiving the pack from the client, receive-pack may produce
4655           no output (if --quiet was specified) while processing the pack,
4656           causing some networks to drop the TCP connection. With this option
4657           set, if receive-pack does not transmit any data in this phase for
4658           receive.keepAlive seconds, it will send a short keepalive packet.
4659           The default is 5 seconds; set to 0 to disable keepalives entirely.
4660
4661       receive.unpackLimit
4662           If the number of objects received in a push is below this limit
4663           then the objects will be unpacked into loose object files. However
4664           if the number of received objects equals or exceeds this limit then
4665           the received pack will be stored as a pack, after adding any
4666           missing delta bases. Storing the pack from a push can make the push
4667           operation complete faster, especially on slow filesystems. If not
4668           set, the value of transfer.unpackLimit is used instead.
4669
4670       receive.maxInputSize
4671           If the size of the incoming pack stream is larger than this limit,
4672           then git-receive-pack will error out, instead of accepting the pack
4673           file. If not set or set to 0, then the size is unlimited.
4674
4675       receive.denyDeletes
4676           If set to true, git-receive-pack will deny a ref update that
4677           deletes the ref. Use this to prevent such a ref deletion via a
4678           push.
4679
4680       receive.denyDeleteCurrent
4681           If set to true, git-receive-pack will deny a ref update that
4682           deletes the currently checked out branch of a non-bare repository.
4683
4684       receive.denyCurrentBranch
4685           If set to true or "refuse", git-receive-pack will deny a ref update
4686           to the currently checked out branch of a non-bare repository. Such
4687           a push is potentially dangerous because it brings the HEAD out of
4688           sync with the index and working tree. If set to "warn", print a
4689           warning of such a push to stderr, but allow the push to proceed. If
4690           set to false or "ignore", allow such pushes with no message.
4691           Defaults to "refuse".
4692
4693           Another option is "updateInstead" which will update the working
4694           tree if pushing into the current branch. This option is intended
4695           for synchronizing working directories when one side is not easily
4696           accessible via interactive ssh (e.g. a live web site, hence the
4697           requirement that the working directory be clean). This mode also
4698           comes in handy when developing inside a VM to test and fix code on
4699           different Operating Systems.
4700
4701           By default, "updateInstead" will refuse the push if the working
4702           tree or the index have any difference from the HEAD, but the
4703           push-to-checkout hook can be used to customize this. See
4704           githooks(5).
4705
4706       receive.denyNonFastForwards
4707           If set to true, git-receive-pack will deny a ref update which is
4708           not a fast-forward. Use this to prevent such an update via a push,
4709           even if that push is forced. This configuration variable is set
4710           when initializing a shared repository.
4711
4712       receive.hideRefs
4713           This variable is the same as transfer.hideRefs, but applies only to
4714           receive-pack (and so affects pushes, but not fetches). An attempt
4715           to update or delete a hidden ref by git push is rejected.
4716
4717       receive.procReceiveRefs
4718           This is a multi-valued variable that defines reference prefixes to
4719           match the commands in receive-pack. Commands matching the prefixes
4720           will be executed by an external hook "proc-receive", instead of the
4721           internal execute_commands function. If this variable is not
4722           defined, the "proc-receive" hook will never be used, and all
4723           commands will be executed by the internal execute_commands
4724           function.
4725
4726           For example, if this variable is set to "refs/for", pushing to
4727           reference such as "refs/for/master" will not create or update a
4728           reference named "refs/for/master", but may create or update a pull
4729           request directly by running the hook "proc-receive".
4730
4731           Optional modifiers can be provided in the beginning of the value to
4732           filter commands for specific actions: create (a), modify (m),
4733           delete (d). A !  can be included in the modifiers to negate the
4734           reference prefix entry. E.g.:
4735
4736               git config --system --add receive.procReceiveRefs ad:refs/heads
4737               git config --system --add receive.procReceiveRefs !:refs/heads
4738
4739       receive.updateServerInfo
4740           If set to true, git-receive-pack will run git-update-server-info
4741           after receiving data from git-push and updating refs.
4742
4743       receive.shallowUpdate
4744           If set to true, .git/shallow can be updated when new refs require
4745           new shallow roots. Otherwise those refs are rejected.
4746
4747       remote.pushDefault
4748           The remote to push to by default. Overrides branch.<name>.remote
4749           for all branches, and is overridden by branch.<name>.pushRemote for
4750           specific branches.
4751
4752       remote.<name>.url
4753           The URL of a remote repository. See git-fetch(1) or git-push(1).
4754
4755       remote.<name>.pushurl
4756           The push URL of a remote repository. See git-push(1).
4757
4758       remote.<name>.proxy
4759           For remotes that require curl (http, https and ftp), the URL to the
4760           proxy to use for that remote. Set to the empty string to disable
4761           proxying for that remote.
4762
4763       remote.<name>.proxyAuthMethod
4764           For remotes that require curl (http, https and ftp), the method to
4765           use for authenticating against the proxy in use (probably set in
4766           remote.<name>.proxy). See http.proxyAuthMethod.
4767
4768       remote.<name>.fetch
4769           The default set of "refspec" for git-fetch(1). See git-fetch(1).
4770
4771       remote.<name>.push
4772           The default set of "refspec" for git-push(1). See git-push(1).
4773
4774       remote.<name>.mirror
4775           If true, pushing to this remote will automatically behave as if the
4776           --mirror option was given on the command line.
4777
4778       remote.<name>.skipDefaultUpdate
4779           If true, this remote will be skipped by default when updating using
4780           git-fetch(1) or the update subcommand of git-remote(1).
4781
4782       remote.<name>.skipFetchAll
4783           If true, this remote will be skipped by default when updating using
4784           git-fetch(1) or the update subcommand of git-remote(1).
4785
4786       remote.<name>.receivepack
4787           The default program to execute on the remote side when pushing. See
4788           option --receive-pack of git-push(1).
4789
4790       remote.<name>.uploadpack
4791           The default program to execute on the remote side when fetching.
4792           See option --upload-pack of git-fetch-pack(1).
4793
4794       remote.<name>.tagOpt
4795           Setting this value to --no-tags disables automatic tag following
4796           when fetching from remote <name>. Setting it to --tags will fetch
4797           every tag from remote <name>, even if they are not reachable from
4798           remote branch heads. Passing these flags directly to git-fetch(1)
4799           can override this setting. See options --tags and --no-tags of git-
4800           fetch(1).
4801
4802       remote.<name>.vcs
4803           Setting this to a value <vcs> will cause Git to interact with the
4804           remote with the git-remote-<vcs> helper.
4805
4806       remote.<name>.prune
4807           When set to true, fetching from this remote by default will also
4808           remove any remote-tracking references that no longer exist on the
4809           remote (as if the --prune option was given on the command line).
4810           Overrides fetch.prune settings, if any.
4811
4812       remote.<name>.pruneTags
4813           When set to true, fetching from this remote by default will also
4814           remove any local tags that no longer exist on the remote if pruning
4815           is activated in general via remote.<name>.prune, fetch.prune or
4816           --prune. Overrides fetch.pruneTags settings, if any.
4817
4818           See also remote.<name>.prune and the PRUNING section of git-
4819           fetch(1).
4820
4821       remote.<name>.promisor
4822           When set to true, this remote will be used to fetch promisor
4823           objects.
4824
4825       remote.<name>.partialclonefilter
4826           The filter that will be applied when fetching from this promisor
4827           remote.
4828
4829       remotes.<group>
4830           The list of remotes which are fetched by "git remote update
4831           <group>". See git-remote(1).
4832
4833       repack.useDeltaBaseOffset
4834           By default, git-repack(1) creates packs that use delta-base offset.
4835           If you need to share your repository with Git older than version
4836           1.4.4, either directly or via a dumb protocol such as http, then
4837           you need to set this option to "false" and repack. Access from old
4838           Git versions over the native protocol are unaffected by this
4839           option.
4840
4841       repack.packKeptObjects
4842           If set to true, makes git repack act as if --pack-kept-objects was
4843           passed. See git-repack(1) for details. Defaults to false normally,
4844           but true if a bitmap index is being written (either via
4845           --write-bitmap-index or repack.writeBitmaps).
4846
4847       repack.useDeltaIslands
4848           If set to true, makes git repack act as if --delta-islands was
4849           passed. Defaults to false.
4850
4851       repack.writeBitmaps
4852           When true, git will write a bitmap index when packing all objects
4853           to disk (e.g., when git repack -a is run). This index can speed up
4854           the "counting objects" phase of subsequent packs created for clones
4855           and fetches, at the cost of some disk space and extra time spent on
4856           the initial repack. This has no effect if multiple packfiles are
4857           created. Defaults to true on bare repos, false otherwise.
4858
4859       rerere.autoUpdate
4860           When set to true, git-rerere updates the index with the resulting
4861           contents after it cleanly resolves conflicts using previously
4862           recorded resolution. Defaults to false.
4863
4864       rerere.enabled
4865           Activate recording of resolved conflicts, so that identical
4866           conflict hunks can be resolved automatically, should they be
4867           encountered again. By default, git-rerere(1) is enabled if there is
4868           an rr-cache directory under the $GIT_DIR, e.g. if "rerere" was
4869           previously used in the repository.
4870
4871       reset.quiet
4872           When set to true, git reset will default to the --quiet option.
4873
4874       sendemail.identity
4875           A configuration identity. When given, causes values in the
4876           sendemail.<identity> subsection to take precedence over values in
4877           the sendemail section. The default identity is the value of
4878           sendemail.identity.
4879
4880       sendemail.smtpEncryption
4881           See git-send-email(1) for description. Note that this setting is
4882           not subject to the identity mechanism.
4883
4884       sendemail.smtpsslcertpath
4885           Path to ca-certificates (either a directory or a single file). Set
4886           it to an empty string to disable certificate verification.
4887
4888       sendemail.<identity>.*
4889           Identity-specific versions of the sendemail.*  parameters found
4890           below, taking precedence over those when this identity is selected,
4891           through either the command-line or sendemail.identity.
4892
4893       sendemail.aliasesFile, sendemail.aliasFileType, sendemail.annotate,
4894       sendemail.bcc, sendemail.cc, sendemail.ccCmd, sendemail.chainReplyTo,
4895       sendemail.confirm, sendemail.envelopeSender, sendemail.from,
4896       sendemail.multiEdit, sendemail.signedoffbycc, sendemail.smtpPass,
4897       sendemail.suppresscc, sendemail.suppressFrom, sendemail.to,
4898       sendemail.tocmd, sendemail.smtpDomain, sendemail.smtpServer,
4899       sendemail.smtpServerPort, sendemail.smtpServerOption,
4900       sendemail.smtpUser, sendemail.thread, sendemail.transferEncoding,
4901       sendemail.validate, sendemail.xmailer
4902           See git-send-email(1) for description.
4903
4904       sendemail.signedoffcc (deprecated)
4905           Deprecated alias for sendemail.signedoffbycc.
4906
4907       sendemail.smtpBatchSize
4908           Number of messages to be sent per connection, after that a relogin
4909           will happen. If the value is 0 or undefined, send all messages in
4910           one connection. See also the --batch-size option of git-send-
4911           email(1).
4912
4913       sendemail.smtpReloginDelay
4914           Seconds wait before reconnecting to smtp server. See also the
4915           --relogin-delay option of git-send-email(1).
4916
4917       sendemail.forbidSendmailVariables
4918           To avoid common misconfiguration mistakes, git-send-email(1) will
4919           abort with a warning if any configuration options for "sendmail"
4920           exist. Set this variable to bypass the check.
4921
4922       sequence.editor
4923           Text editor used by git rebase -i for editing the rebase
4924           instruction file. The value is meant to be interpreted by the shell
4925           when it is used. It can be overridden by the GIT_SEQUENCE_EDITOR
4926           environment variable. When not configured the default commit
4927           message editor is used instead.
4928
4929       showBranch.default
4930           The default set of branches for git-show-branch(1). See git-show-
4931           branch(1).
4932
4933       splitIndex.maxPercentChange
4934           When the split index feature is used, this specifies the percent of
4935           entries the split index can contain compared to the total number of
4936           entries in both the split index and the shared index before a new
4937           shared index is written. The value should be between 0 and 100. If
4938           the value is 0 then a new shared index is always written, if it is
4939           100 a new shared index is never written. By default the value is
4940           20, so a new shared index is written if the number of entries in
4941           the split index would be greater than 20 percent of the total
4942           number of entries. See git-update-index(1).
4943
4944       splitIndex.sharedIndexExpire
4945           When the split index feature is used, shared index files that were
4946           not modified since the time this variable specifies will be removed
4947           when a new shared index file is created. The value "now" expires
4948           all entries immediately, and "never" suppresses expiration
4949           altogether. The default value is "2.weeks.ago". Note that a shared
4950           index file is considered modified (for the purpose of expiration)
4951           each time a new split-index file is either created based on it or
4952           read from it. See git-update-index(1).
4953
4954       ssh.variant
4955           By default, Git determines the command line arguments to use based
4956           on the basename of the configured SSH command (configured using the
4957           environment variable GIT_SSH or GIT_SSH_COMMAND or the config
4958           setting core.sshCommand). If the basename is unrecognized, Git will
4959           attempt to detect support of OpenSSH options by first invoking the
4960           configured SSH command with the -G (print configuration) option and
4961           will subsequently use OpenSSH options (if that is successful) or no
4962           options besides the host and remote command (if it fails).
4963
4964           The config variable ssh.variant can be set to override this
4965           detection. Valid values are ssh (to use OpenSSH options), plink,
4966           putty, tortoiseplink, simple (no options except the host and remote
4967           command). The default auto-detection can be explicitly requested
4968           using the value auto. Any other value is treated as ssh. This
4969           setting can also be overridden via the environment variable
4970           GIT_SSH_VARIANT.
4971
4972           The current command-line parameters used for each variant are as
4973           follows:
4974
4975ssh - [-p port] [-4] [-6] [-o option] [username@]host command
4976
4977simple - [username@]host command
4978
4979plink or putty - [-P port] [-4] [-6] [username@]host command
4980
4981tortoiseplink - [-P port] [-4] [-6] -batch [username@]host
4982               command
4983
4984           Except for the simple variant, command-line parameters are likely
4985           to change as git gains new features.
4986
4987       status.relativePaths
4988           By default, git-status(1) shows paths relative to the current
4989           directory. Setting this variable to false shows paths relative to
4990           the repository root (this was the default for Git prior to v1.5.4).
4991
4992       status.short
4993           Set to true to enable --short by default in git-status(1). The
4994           option --no-short takes precedence over this variable.
4995
4996       status.branch
4997           Set to true to enable --branch by default in git-status(1). The
4998           option --no-branch takes precedence over this variable.
4999
5000       status.aheadBehind
5001           Set to true to enable --ahead-behind and false to enable
5002           --no-ahead-behind by default in git-status(1) for non-porcelain
5003           status formats. Defaults to true.
5004
5005       status.displayCommentPrefix
5006           If set to true, git-status(1) will insert a comment prefix before
5007           each output line (starting with core.commentChar, i.e.  # by
5008           default). This was the behavior of git-status(1) in Git 1.8.4 and
5009           previous. Defaults to false.
5010
5011       status.renameLimit
5012           The number of files to consider when performing rename detection in
5013           git-status(1) and git-commit(1). Defaults to the value of
5014           diff.renameLimit.
5015
5016       status.renames
5017           Whether and how Git detects renames in git-status(1) and git-
5018           commit(1) . If set to "false", rename detection is disabled. If set
5019           to "true", basic rename detection is enabled. If set to "copies" or
5020           "copy", Git will detect copies, as well. Defaults to the value of
5021           diff.renames.
5022
5023       status.showStash
5024           If set to true, git-status(1) will display the number of entries
5025           currently stashed away. Defaults to false.
5026
5027       status.showUntrackedFiles
5028           By default, git-status(1) and git-commit(1) show files which are
5029           not currently tracked by Git. Directories which contain only
5030           untracked files, are shown with the directory name only. Showing
5031           untracked files means that Git needs to lstat() all the files in
5032           the whole repository, which might be slow on some systems. So, this
5033           variable controls how the commands displays the untracked files.
5034           Possible values are:
5035
5036no - Show no untracked files.
5037
5038normal - Show untracked files and directories.
5039
5040all - Show also individual files in untracked directories.
5041
5042           If this variable is not specified, it defaults to normal. This
5043           variable can be overridden with the -u|--untracked-files option of
5044           git-status(1) and git-commit(1).
5045
5046       status.submoduleSummary
5047           Defaults to false. If this is set to a non zero number or true
5048           (identical to -1 or an unlimited number), the submodule summary
5049           will be enabled and a summary of commits for modified submodules
5050           will be shown (see --summary-limit option of git-submodule(1)).
5051           Please note that the summary output command will be suppressed for
5052           all submodules when diff.ignoreSubmodules is set to all or only for
5053           those submodules where submodule.<name>.ignore=all. The only
5054           exception to that rule is that status and commit will show staged
5055           submodule changes. To also view the summary for ignored submodules
5056           you can either use the --ignore-submodules=dirty command-line
5057           option or the git submodule summary command, which shows a similar
5058           output but does not honor these settings.
5059
5060       stash.useBuiltin
5061           Unused configuration variable. Used in Git versions 2.22 to 2.26 as
5062           an escape hatch to enable the legacy shellscript implementation of
5063           stash. Now the built-in rewrite of it in C is always used. Setting
5064           this will emit a warning, to alert any remaining users that setting
5065           this now does nothing.
5066
5067       stash.showIncludeUntracked
5068           If this is set to true, the git stash show command will show the
5069           untracked files of a stash entry. Defaults to false. See
5070           description of show command in git-stash(1).
5071
5072       stash.showPatch
5073           If this is set to true, the git stash show command without an
5074           option will show the stash entry in patch form. Defaults to false.
5075           See description of show command in git-stash(1).
5076
5077       stash.showStat
5078           If this is set to true, the git stash show command without an
5079           option will show diffstat of the stash entry. Defaults to true. See
5080           description of show command in git-stash(1).
5081
5082       submodule.<name>.url
5083           The URL for a submodule. This variable is copied from the
5084           .gitmodules file to the git config via git submodule init. The user
5085           can change the configured URL before obtaining the submodule via
5086           git submodule update. If neither submodule.<name>.active or
5087           submodule.active are set, the presence of this variable is used as
5088           a fallback to indicate whether the submodule is of interest to git
5089           commands. See git-submodule(1) and gitmodules(5) for details.
5090
5091       submodule.<name>.update
5092           The method by which a submodule is updated by git submodule update,
5093           which is the only affected command, others such as git checkout
5094           --recurse-submodules are unaffected. It exists for historical
5095           reasons, when git submodule was the only command to interact with
5096           submodules; settings like submodule.active and pull.rebase are more
5097           specific. It is populated by git submodule init from the
5098           gitmodules(5) file. See description of update command in git-
5099           submodule(1).
5100
5101       submodule.<name>.branch
5102           The remote branch name for a submodule, used by git submodule
5103           update --remote. Set this option to override the value found in the
5104           .gitmodules file. See git-submodule(1) and gitmodules(5) for
5105           details.
5106
5107       submodule.<name>.fetchRecurseSubmodules
5108           This option can be used to control recursive fetching of this
5109           submodule. It can be overridden by using the
5110           --[no-]recurse-submodules command-line option to "git fetch" and
5111           "git pull". This setting will override that from in the
5112           gitmodules(5) file.
5113
5114       submodule.<name>.ignore
5115           Defines under what circumstances "git status" and the diff family
5116           show a submodule as modified. When set to "all", it will never be
5117           considered modified (but it will nonetheless show up in the output
5118           of status and commit when it has been staged), "dirty" will ignore
5119           all changes to the submodules work tree and takes only differences
5120           between the HEAD of the submodule and the commit recorded in the
5121           superproject into account. "untracked" will additionally let
5122           submodules with modified tracked files in their work tree show up.
5123           Using "none" (the default when this option is not set) also shows
5124           submodules that have untracked files in their work tree as changed.
5125           This setting overrides any setting made in .gitmodules for this
5126           submodule, both settings can be overridden on the command line by
5127           using the "--ignore-submodules" option. The git submodule commands
5128           are not affected by this setting.
5129
5130       submodule.<name>.active
5131           Boolean value indicating if the submodule is of interest to git
5132           commands. This config option takes precedence over the
5133           submodule.active config option. See gitsubmodules(7) for details.
5134
5135       submodule.active
5136           A repeated field which contains a pathspec used to match against a
5137           submodule’s path to determine if the submodule is of interest to
5138           git commands. See gitsubmodules(7) for details.
5139
5140       submodule.recurse
5141           A boolean indicating if commands should enable the
5142           --recurse-submodules option by default. Applies to all commands
5143           that support this option (checkout, fetch, grep, pull, push,
5144           read-tree, reset, restore and switch) except clone and ls-files.
5145           Defaults to false. When set to true, it can be deactivated via the
5146           --no-recurse-submodules option. Note that some Git commands lacking
5147           this option may call some of the above commands affected by
5148           submodule.recurse; for instance git remote update will call git
5149           fetch but does not have a --no-recurse-submodules option. For these
5150           commands a workaround is to temporarily change the configuration
5151           value by using git -c submodule.recurse=0.
5152
5153       submodule.fetchJobs
5154           Specifies how many submodules are fetched/cloned at the same time.
5155           A positive integer allows up to that number of submodules fetched
5156           in parallel. A value of 0 will give some reasonable default. If
5157           unset, it defaults to 1.
5158
5159       submodule.alternateLocation
5160           Specifies how the submodules obtain alternates when submodules are
5161           cloned. Possible values are no, superproject. By default no is
5162           assumed, which doesn’t add references. When the value is set to
5163           superproject the submodule to be cloned computes its alternates
5164           location relative to the superprojects alternate.
5165
5166       submodule.alternateErrorStrategy
5167           Specifies how to treat errors with the alternates for a submodule
5168           as computed via submodule.alternateLocation. Possible values are
5169           ignore, info, die. Default is die. Note that if set to ignore or
5170           info, and if there is an error with the computed alternate, the
5171           clone proceeds as if no alternate was specified.
5172
5173       tag.forceSignAnnotated
5174           A boolean to specify whether annotated tags created should be GPG
5175           signed. If --annotate is specified on the command line, it takes
5176           precedence over this option.
5177
5178       tag.sort
5179           This variable controls the sort ordering of tags when displayed by
5180           git-tag(1). Without the "--sort=<value>" option provided, the value
5181           of this variable will be used as the default.
5182
5183       tag.gpgSign
5184           A boolean to specify whether all tags should be GPG signed. Use of
5185           this option when running in an automated script can result in a
5186           large number of tags being signed. It is therefore convenient to
5187           use an agent to avoid typing your gpg passphrase several times.
5188           Note that this option doesn’t affect tag signing behavior enabled
5189           by "-u <keyid>" or "--local-user=<keyid>" options.
5190
5191       tar.umask
5192           This variable can be used to restrict the permission bits of tar
5193           archive entries. The default is 0002, which turns off the world
5194           write bit. The special value "user" indicates that the archiving
5195           user’s umask will be used instead. See umask(2) and git-archive(1).
5196
5197       Trace2 config settings are only read from the system and global config
5198       files; repository local and worktree config files and -c command line
5199       arguments are not respected.
5200
5201       trace2.normalTarget
5202           This variable controls the normal target destination. It may be
5203           overridden by the GIT_TRACE2 environment variable. The following
5204           table shows possible values.
5205
5206       trace2.perfTarget
5207           This variable controls the performance target destination. It may
5208           be overridden by the GIT_TRACE2_PERF environment variable. The
5209           following table shows possible values.
5210
5211       trace2.eventTarget
5212           This variable controls the event target destination. It may be
5213           overridden by the GIT_TRACE2_EVENT environment variable. The
5214           following table shows possible values.
5215
52160 or false - Disables the target.
5217
52181 or true - Writes to STDERR.
5219
5220[2-9] - Writes to the already opened file descriptor.
5221
5222<absolute-pathname> - Writes to the file in append mode. If the
5223               target already exists and is a directory, the traces will be
5224               written to files (one per process) underneath the given
5225               directory.
5226
5227af_unix:[<socket_type>:]<absolute-pathname> - Write to a Unix
5228               DomainSocket (on platforms that support them). Socket type can
5229               be either stream or dgram; if omitted Git will try both.
5230
5231       trace2.normalBrief
5232           Boolean. When true time, filename, and line fields are omitted from
5233           normal output. May be overridden by the GIT_TRACE2_BRIEF
5234           environment variable. Defaults to false.
5235
5236       trace2.perfBrief
5237           Boolean. When true time, filename, and line fields are omitted from
5238           PERF output. May be overridden by the GIT_TRACE2_PERF_BRIEF
5239           environment variable. Defaults to false.
5240
5241       trace2.eventBrief
5242           Boolean. When true time, filename, and line fields are omitted from
5243           event output. May be overridden by the GIT_TRACE2_EVENT_BRIEF
5244           environment variable. Defaults to false.
5245
5246       trace2.eventNesting
5247           Integer. Specifies desired depth of nested regions in the event
5248           output. Regions deeper than this value will be omitted. May be
5249           overridden by the GIT_TRACE2_EVENT_NESTING environment variable.
5250           Defaults to 2.
5251
5252       trace2.configParams
5253           A comma-separated list of patterns of "important" config settings
5254           that should be recorded in the trace2 output. For example,
5255           core.*,remote.*.url would cause the trace2 output to contain events
5256           listing each configured remote. May be overridden by the
5257           GIT_TRACE2_CONFIG_PARAMS environment variable. Unset by default.
5258
5259       trace2.envVars
5260           A comma-separated list of "important" environment variables that
5261           should be recorded in the trace2 output. For example,
5262           GIT_HTTP_USER_AGENT,GIT_CONFIG would cause the trace2 output to
5263           contain events listing the overrides for HTTP user agent and the
5264           location of the Git configuration file (assuming any are set). May
5265           be overridden by the GIT_TRACE2_ENV_VARS environment variable.
5266           Unset by default.
5267
5268       trace2.destinationDebug
5269           Boolean. When true Git will print error messages when a trace
5270           target destination cannot be opened for writing. By default, these
5271           errors are suppressed and tracing is silently disabled. May be
5272           overridden by the GIT_TRACE2_DST_DEBUG environment variable.
5273
5274       trace2.maxFiles
5275           Integer. When writing trace files to a target directory, do not
5276           write additional traces if we would exceed this many files.
5277           Instead, write a sentinel file that will block further tracing to
5278           this directory. Defaults to 0, which disables this check.
5279
5280       transfer.fsckObjects
5281           When fetch.fsckObjects or receive.fsckObjects are not set, the
5282           value of this variable is used instead. Defaults to false.
5283
5284           When set, the fetch or receive will abort in the case of a
5285           malformed object or a link to a nonexistent object. In addition,
5286           various other issues are checked for, including legacy issues (see
5287           fsck.<msg-id>), and potential security issues like the existence of
5288           a .GIT directory or a malicious .gitmodules file (see the release
5289           notes for v2.2.1 and v2.17.1 for details). Other sanity and
5290           security checks may be added in future releases.
5291
5292           On the receiving side, failing fsckObjects will make those objects
5293           unreachable, see "QUARANTINE ENVIRONMENT" in git-receive-pack(1).
5294           On the fetch side, malformed objects will instead be left
5295           unreferenced in the repository.
5296
5297           Due to the non-quarantine nature of the fetch.fsckObjects
5298           implementation it cannot be relied upon to leave the object store
5299           clean like receive.fsckObjects can.
5300
5301           As objects are unpacked they’re written to the object store, so
5302           there can be cases where malicious objects get introduced even
5303           though the "fetch" failed, only to have a subsequent "fetch"
5304           succeed because only new incoming objects are checked, not those
5305           that have already been written to the object store. That difference
5306           in behavior should not be relied upon. In the future, such objects
5307           may be quarantined for "fetch" as well.
5308
5309           For now, the paranoid need to find some way to emulate the
5310           quarantine environment if they’d like the same protection as
5311           "push". E.g. in the case of an internal mirror do the mirroring in
5312           two steps, one to fetch the untrusted objects, and then do a second
5313           "push" (which will use the quarantine) to another internal repo,
5314           and have internal clients consume this pushed-to repository, or
5315           embargo internal fetches and only allow them once a full "fsck" has
5316           run (and no new fetches have happened in the meantime).
5317
5318       transfer.hideRefs
5319           String(s) receive-pack and upload-pack use to decide which refs to
5320           omit from their initial advertisements. Use more than one
5321           definition to specify multiple prefix strings. A ref that is under
5322           the hierarchies listed in the value of this variable is excluded,
5323           and is hidden when responding to git push or git fetch. See
5324           receive.hideRefs and uploadpack.hideRefs for program-specific
5325           versions of this config.
5326
5327           You may also include a !  in front of the ref name to negate the
5328           entry, explicitly exposing it, even if an earlier entry marked it
5329           as hidden. If you have multiple hideRefs values, later entries
5330           override earlier ones (and entries in more-specific config files
5331           override less-specific ones).
5332
5333           If a namespace is in use, the namespace prefix is stripped from
5334           each reference before it is matched against transfer.hiderefs
5335           patterns. In order to match refs before stripping, add a ^ in front
5336           of the ref name. If you combine !  and ^, !  must be specified
5337           first.
5338
5339           For example, if refs/heads/master is specified in transfer.hideRefs
5340           and the current namespace is foo, then
5341           refs/namespaces/foo/refs/heads/master is omitted from the
5342           advertisements. If uploadpack.allowRefInWant is set, upload-pack
5343           will treat want-ref refs/heads/master in a protocol v2 fetch
5344           command as if refs/namespaces/foo/refs/heads/master did not exist.
5345           receive-pack, on the other hand, will still advertise the object id
5346           the ref is pointing to without mentioning its name (a so-called
5347           ".have" line).
5348
5349           Even if you hide refs, a client may still be able to steal the
5350           target objects via the techniques described in the "SECURITY"
5351           section of the gitnamespaces(7) man page; it’s best to keep private
5352           data in a separate repository.
5353
5354       transfer.unpackLimit
5355           When fetch.unpackLimit or receive.unpackLimit are not set, the
5356           value of this variable is used instead. The default value is 100.
5357
5358       transfer.advertiseSID
5359           Boolean. When true, client and server processes will advertise
5360           their unique session IDs to their remote counterpart. Defaults to
5361           false.
5362
5363       uploadarchive.allowUnreachable
5364           If true, allow clients to use git archive --remote to request any
5365           tree, whether reachable from the ref tips or not. See the
5366           discussion in the "SECURITY" section of git-upload-archive(1) for
5367           more details. Defaults to false.
5368
5369       uploadpack.hideRefs
5370           This variable is the same as transfer.hideRefs, but applies only to
5371           upload-pack (and so affects only fetches, not pushes). An attempt
5372           to fetch a hidden ref by git fetch will fail. See also
5373           uploadpack.allowTipSHA1InWant.
5374
5375       uploadpack.allowTipSHA1InWant
5376           When uploadpack.hideRefs is in effect, allow upload-pack to accept
5377           a fetch request that asks for an object at the tip of a hidden ref
5378           (by default, such a request is rejected). See also
5379           uploadpack.hideRefs. Even if this is false, a client may be able to
5380           steal objects via the techniques described in the "SECURITY"
5381           section of the gitnamespaces(7) man page; it’s best to keep private
5382           data in a separate repository.
5383
5384       uploadpack.allowReachableSHA1InWant
5385           Allow upload-pack to accept a fetch request that asks for an object
5386           that is reachable from any ref tip. However, note that calculating
5387           object reachability is computationally expensive. Defaults to
5388           false. Even if this is false, a client may be able to steal objects
5389           via the techniques described in the "SECURITY" section of the
5390           gitnamespaces(7) man page; it’s best to keep private data in a
5391           separate repository.
5392
5393       uploadpack.allowAnySHA1InWant
5394           Allow upload-pack to accept a fetch request that asks for any
5395           object at all. Defaults to false.
5396
5397       uploadpack.keepAlive
5398           When upload-pack has started pack-objects, there may be a quiet
5399           period while pack-objects prepares the pack. Normally it would
5400           output progress information, but if --quiet was used for the fetch,
5401           pack-objects will output nothing at all until the pack data begins.
5402           Some clients and networks may consider the server to be hung and
5403           give up. Setting this option instructs upload-pack to send an empty
5404           keepalive packet every uploadpack.keepAlive seconds. Setting this
5405           option to 0 disables keepalive packets entirely. The default is 5
5406           seconds.
5407
5408       uploadpack.packObjectsHook
5409           If this option is set, when upload-pack would run git pack-objects
5410           to create a packfile for a client, it will run this shell command
5411           instead. The pack-objects command and arguments it would have run
5412           (including the git pack-objects at the beginning) are appended to
5413           the shell command. The stdin and stdout of the hook are treated as
5414           if pack-objects itself was run. I.e., upload-pack will feed input
5415           intended for pack-objects to the hook, and expects a completed
5416           packfile on stdout.
5417
5418           Note that this configuration variable is ignored if it is seen in
5419           the repository-level config (this is a safety measure against
5420           fetching from untrusted repositories).
5421
5422       uploadpack.allowFilter
5423           If this option is set, upload-pack will support partial clone and
5424           partial fetch object filtering.
5425
5426       uploadpackfilter.allow
5427           Provides a default value for unspecified object filters (see: the
5428           below configuration variable). If set to true, this will also
5429           enable all filters which get added in the future. Defaults to true.
5430
5431       uploadpackfilter.<filter>.allow
5432           Explicitly allow or ban the object filter corresponding to
5433           <filter>, where <filter> may be one of: blob:none, blob:limit,
5434           object:type, tree, sparse:oid, or combine. If using combined
5435           filters, both combine and all of the nested filter kinds must be
5436           allowed. Defaults to uploadpackfilter.allow.
5437
5438       uploadpackfilter.tree.maxDepth
5439           Only allow --filter=tree:<n> when <n> is no more than the value of
5440           uploadpackfilter.tree.maxDepth. If set, this also implies
5441           uploadpackfilter.tree.allow=true, unless this configuration
5442           variable had already been set. Has no effect if unset.
5443
5444       uploadpack.allowRefInWant
5445           If this option is set, upload-pack will support the ref-in-want
5446           feature of the protocol version 2 fetch command. This feature is
5447           intended for the benefit of load-balanced servers which may not
5448           have the same view of what OIDs their refs point to due to
5449           replication delay.
5450
5451       url.<base>.insteadOf
5452           Any URL that starts with this value will be rewritten to start,
5453           instead, with <base>. In cases where some site serves a large
5454           number of repositories, and serves them with multiple access
5455           methods, and some users need to use different access methods, this
5456           feature allows people to specify any of the equivalent URLs and
5457           have Git automatically rewrite the URL to the best alternative for
5458           the particular user, even for a never-before-seen repository on the
5459           site. When more than one insteadOf strings match a given URL, the
5460           longest match is used.
5461
5462           Note that any protocol restrictions will be applied to the
5463           rewritten URL. If the rewrite changes the URL to use a custom
5464           protocol or remote helper, you may need to adjust the
5465           protocol.*.allow config to permit the request. In particular,
5466           protocols you expect to use for submodules must be set to always
5467           rather than the default of user. See the description of
5468           protocol.allow above.
5469
5470       url.<base>.pushInsteadOf
5471           Any URL that starts with this value will not be pushed to; instead,
5472           it will be rewritten to start with <base>, and the resulting URL
5473           will be pushed to. In cases where some site serves a large number
5474           of repositories, and serves them with multiple access methods, some
5475           of which do not allow push, this feature allows people to specify a
5476           pull-only URL and have Git automatically use an appropriate URL to
5477           push, even for a never-before-seen repository on the site. When
5478           more than one pushInsteadOf strings match a given URL, the longest
5479           match is used. If a remote has an explicit pushurl, Git will ignore
5480           this setting for that remote.
5481
5482       user.name, user.email, author.name, author.email, committer.name,
5483       committer.email
5484           The user.name and user.email variables determine what ends up in
5485           the author and committer field of commit objects. If you need the
5486           author or committer to be different, the author.name, author.email,
5487           committer.name or committer.email variables can be set. Also, all
5488           of these can be overridden by the GIT_AUTHOR_NAME,
5489           GIT_AUTHOR_EMAIL, GIT_COMMITTER_NAME, GIT_COMMITTER_EMAIL and EMAIL
5490           environment variables.
5491
5492           Note that the name forms of these variables conventionally refer to
5493           some form of a personal name. See git-commit(1) and the environment
5494           variables section of git(1) for more information on these settings
5495           and the credential.username option if you’re looking for
5496           authentication credentials instead.
5497
5498       user.useConfigOnly
5499           Instruct Git to avoid trying to guess defaults for user.email and
5500           user.name, and instead retrieve the values only from the
5501           configuration. For example, if you have multiple email addresses
5502           and would like to use a different one for each repository, then
5503           with this configuration option set to true in the global config
5504           along with a name, Git will prompt you to set up an email before
5505           making new commits in a newly cloned repository. Defaults to false.
5506
5507       user.signingKey
5508           If git-tag(1) or git-commit(1) is not selecting the key you want it
5509           to automatically when creating a signed tag or commit, you can
5510           override the default selection with this variable. This option is
5511           passed unchanged to gpg’s --local-user parameter, so you may
5512           specify a key using any method that gpg supports.
5513
5514       versionsort.prereleaseSuffix (deprecated)
5515           Deprecated alias for versionsort.suffix. Ignored if
5516           versionsort.suffix is set.
5517
5518       versionsort.suffix
5519           Even when version sort is used in git-tag(1), tagnames with the
5520           same base version but different suffixes are still sorted
5521           lexicographically, resulting e.g. in prerelease tags appearing
5522           after the main release (e.g. "1.0-rc1" after "1.0"). This variable
5523           can be specified to determine the sorting order of tags with
5524           different suffixes.
5525
5526           By specifying a single suffix in this variable, any tagname
5527           containing that suffix will appear before the corresponding main
5528           release. E.g. if the variable is set to "-rc", then all "1.0-rcX"
5529           tags will appear before "1.0". If specified multiple times, once
5530           per suffix, then the order of suffixes in the configuration will
5531           determine the sorting order of tagnames with those suffixes. E.g.
5532           if "-pre" appears before "-rc" in the configuration, then all
5533           "1.0-preX" tags will be listed before any "1.0-rcX" tags. The
5534           placement of the main release tag relative to tags with various
5535           suffixes can be determined by specifying the empty suffix among
5536           those other suffixes. E.g. if the suffixes "-rc", "", "-ck" and
5537           "-bfs" appear in the configuration in this order, then all
5538           "v4.8-rcX" tags are listed first, followed by "v4.8", then
5539           "v4.8-ckX" and finally "v4.8-bfsX".
5540
5541           If more than one suffixes match the same tagname, then that tagname
5542           will be sorted according to the suffix which starts at the earliest
5543           position in the tagname. If more than one different matching
5544           suffixes start at that earliest position, then that tagname will be
5545           sorted according to the longest of those suffixes. The sorting
5546           order between different suffixes is undefined if they are in
5547           multiple config files.
5548
5549       web.browser
5550           Specify a web browser that may be used by some commands. Currently
5551           only git-instaweb(1) and git-help(1) may use it.
5552
5553       worktree.guessRemote
5554           If no branch is specified and neither -b nor -B nor --detach is
5555           used, then git worktree add defaults to creating a new branch from
5556           HEAD. If worktree.guessRemote is set to true, worktree add tries to
5557           find a remote-tracking branch whose name uniquely matches the new
5558           branch name. If such a branch exists, it is checked out and set as
5559           "upstream" for the new branch. If no such match can be found, it
5560           falls back to creating a new branch from the current HEAD.
5561

BUGS

5563       When using the deprecated [section.subsection] syntax, changing a value
5564       will result in adding a multi-line key instead of a change, if the
5565       subsection is given with at least one uppercase character. For example
5566       when the config looks like
5567
5568             [section.subsection]
5569               key = value1
5570
5571       and running git config section.Subsection.key value2 will result in
5572
5573             [section.subsection]
5574               key = value1
5575               key = value2
5576

GIT

5578       Part of the git(1) suite
5579

NOTES

5581        1. Documentation/technical/pack-format.txt
5582           file:///usr/share/doc/git/../technical/pack-format.html
5583
5584        2. wire protocol version 2
5585           file:///usr/share/doc/git/technical/protocol-v2.html
5586
5587
5588
5589Git 2.33.1                        2021-10-12                     GIT-CONFIG(1)
Impressum