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>] [--show-origin] [-z|--null] name [value [value_regex]]
10       git config [<file-option>] [--type=<type>] --add name value
11       git config [<file-option>] [--type=<type>] --replace-all name value [value_regex]
12       git config [<file-option>] [--type=<type>] [--show-origin] [-z|--null] --get name [value_regex]
13       git config [<file-option>] [--type=<type>] [--show-origin] [-z|--null] --get-all name [value_regex]
14       git config [<file-option>] [--type=<type>] [--show-origin] [-z|--null] [--name-only] --get-regexp name_regex [value_regex]
15       git config [<file-option>] [--type=<type>] [-z|--null] --get-urlmatch name URL
16       git config [<file-option>] --unset name [value_regex]
17       git config [<file-option>] --unset-all name [value_regex]
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] [-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
25

DESCRIPTION

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

OPTIONS

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

CONFIGURATION

248       pager.config is only respected when listing configuration, i.e., when
249       using --list or any of the --get-* which may return multiple results.
250       The default is to use a pager.
251

FILES

253       If not set explicitly with --file, there are four files where git
254       config will search for configuration options:
255
256       $(prefix)/etc/gitconfig
257           System-wide configuration file.
258
259       $XDG_CONFIG_HOME/git/config
260           Second user-specific configuration file. If $XDG_CONFIG_HOME is not
261           set or empty, $HOME/.config/git/config will be used. Any
262           single-valued variable set in this file will be overwritten by
263           whatever is in ~/.gitconfig. It is a good idea not to create this
264           file if you sometimes use older versions of Git, as support for
265           this file was added fairly recently.
266
267       ~/.gitconfig
268           User-specific configuration file. Also called "global"
269           configuration file.
270
271       $GIT_DIR/config
272           Repository specific configuration file.
273
274       If no further options are given, all reading options will read all of
275       these files that are available. If the global or the system-wide
276       configuration file are not available they will be ignored. If the
277       repository configuration file is not available or readable, git config
278       will exit with a non-zero error code. However, in neither case will an
279       error message be issued.
280
281       The files are read in the order given above, with last value found
282       taking precedence over values read earlier. When multiple values are
283       taken then all values of a key from all files will be used.
284
285       You may override individual configuration parameters when running any
286       git command by using the -c option. See git(1) for details.
287
288       All writing options will per default write to the repository specific
289       configuration file. Note that this also affects options like
290       --replace-all and --unset. git config will only ever change one file at
291       a time.
292
293       You can override these rules either by command-line options or by
294       environment variables. The --global and the --system options will limit
295       the file used to the global or system-wide file respectively. The
296       GIT_CONFIG environment variable has a similar effect, but you can
297       specify any filename you want.
298

ENVIRONMENT

300       GIT_CONFIG
301           Take the configuration from the given file instead of .git/config.
302           Using the "--global" option forces this to ~/.gitconfig. Using the
303           "--system" option forces this to $(prefix)/etc/gitconfig.
304
305       GIT_CONFIG_NOSYSTEM
306           Whether to skip reading settings from the system-wide
307           $(prefix)/etc/gitconfig file. See git(1) for details.
308
309       See also the section called “FILES”.
310

EXAMPLES

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

CONFIGURATION FILE

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

GIT

4329       Part of the git(1) suite
4330

NOTES

4332        1. wire protocol version 2
4333           file:///usr/share/doc/git/technical/protocol-v2.html
4334
4335
4336
4337Git 2.18.1                        05/14/2019                     GIT-CONFIG(1)
Impressum