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