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