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