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

OPTIONS

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

CONFIGURATION

268       pager.config is only respected when listing configuration, i.e., when
269       using --list or any of the --get-* which may return multiple results.
270       The default is to use a pager.
271

FILES

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

ENVIRONMENT

324       GIT_CONFIG
325           Take the configuration from the given file instead of .git/config.
326           Using the "--global" option forces this to ~/.gitconfig. Using the
327           "--system" option forces this to $(prefix)/etc/gitconfig.
328
329       GIT_CONFIG_NOSYSTEM
330           Whether to skip reading settings from the system-wide
331           $(prefix)/etc/gitconfig file. See git(1) for details.
332
333       See also the section called “FILES”.
334
335       GIT_CONFIG_COUNT, GIT_CONFIG_KEY_<n>, GIT_CONFIG_VALUE_<n>
336           If GIT_CONFIG_COUNT is set to a positive number, all environment
337           pairs GIT_CONFIG_KEY_<n> and GIT_CONFIG_VALUE_<n> up to that number
338           will be added to the process’s runtime configuration. The config
339           pairs are zero-indexed. Any missing key or value is treated as an
340           error. An empty GIT_CONFIG_COUNT is treated the same as
341           GIT_CONFIG_COUNT=0, namely no pairs are processed. These
342           environment variables will override values in configuration files,
343           but will be overridden by any explicit options passed via git -c.
344
345           This is useful for cases where you want to spawn multiple git
346           commands with a common configuration but cannot depend on a
347           configuration file, for example when writing scripts.
348

EXAMPLES

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

CONFIGURATION FILE

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

BUGS

5466       When using the deprecated [section.subsection] syntax, changing a value
5467       will result in adding a multi-line key instead of a change, if the
5468       subsection is given with at least one uppercase character. For example
5469       when the config looks like
5470
5471             [section.subsection]
5472               key = value1
5473
5474       and running git config section.Subsection.key value2 will result in
5475
5476             [section.subsection]
5477               key = value1
5478               key = value2
5479

GIT

5481       Part of the git(1) suite
5482

NOTES

5484        1. Documentation/technical/pack-format.txt
5485           file:///usr/share/doc/git/../technical/pack-format.html
5486
5487        2. wire protocol version 2
5488           file:///usr/share/doc/git/technical/protocol-v2.html
5489
5490
5491
5492Git 2.31.1                        2021-03-26                     GIT-CONFIG(1)
Impressum