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
180           ·   bool: canonicalize values as either "true" or "false".
181
182           ·   int: 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
186           ·   bool-or-int: canonicalize according to either bool or int, as
187               described above.
188
189           ·   path: 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
195           ·   expiry-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
199           ·   color: 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

EXAMPLES

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

CONFIGURATION FILE

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

BUGS

5401       When using the deprecated [section.subsection] syntax, changing a value
5402       will result in adding a multi-line key instead of a change, if the
5403       subsection is given with at least one uppercase character. For example
5404       when the config looks like
5405
5406             [section.subsection]
5407               key = value1
5408
5409       and running git config section.Subsection.key value2 will result in
5410
5411             [section.subsection]
5412               key = value1
5413               key = value2
5414

GIT

5416       Part of the git(1) suite
5417

NOTES

5419        1. wire protocol version 2
5420           file:///usr/share/doc/git/technical/protocol-v2.html
5421
5422
5423
5424Git 2.30.2                        2021-03-08                     GIT-CONFIG(1)
Impressum