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