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