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