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