1CONFIGURATION FILE 2------------------ 3 4The Git configuration file contains a number of variables that affect 5the Git commands' behavior. The `.git/config` file in each repository 6is used to store the configuration for that repository, and 7`$HOME/.gitconfig` is used to store a per-user configuration as 8fallback values for the `.git/config` file. The file `/etc/gitconfig` 9can be used to store a system-wide default configuration. 10 11The configuration variables are used by both the Git plumbing 12and the porcelains. The variables are divided into sections, wherein 13the fully qualified variable name of the variable itself is the last 14dot-separated segment and the section name is everything before the last 15dot. The variable names are case-insensitive, allow only alphanumeric 16characters and `-`, and must start with an alphabetic character. Some 17variables may appear multiple times; we say then that the variable is 18multivalued. 19 20Syntax 21~~~~~~ 22 23The syntax is fairly flexible and permissive; whitespaces are mostly 24ignored. The '#' and ';' characters begin comments to the end of line, 25blank lines are ignored. 26 27The file consists of sections and variables. A section begins with 28the name of the section in square brackets and continues until the next 29section begins. Section names are case-insensitive. Only alphanumeric 30characters, `-` and `.` are allowed in section names. Each variable 31must belong to some section, which means that there must be a section 32header before the first setting of a variable. 33 34Sections can be further divided into subsections. To begin a subsection 35put its name in double quotes, separated by space from the section name, 36in the section header, like in the example below: 37 38-------- 39 [section "subsection"] 40 41-------- 42 43Subsection names are case sensitive and can contain any characters except 44newline and the null byte. Doublequote `"` and backslash can be included 45by escaping them as `\"` and `\\`, respectively. Backslashes preceding 46other characters are dropped when reading; for example, `\t` is read as 47`t` and `\0` is read as `0` Section headers cannot span multiple lines. 48Variables may belong directly to a section or to a given subsection. You 49can have `[section]` if you have `[section "subsection"]`, but you don't 50need to. 51 52There is also a deprecated `[section.subsection]` syntax. With this 53syntax, the subsection name is converted to lower-case and is also 54compared case sensitively. These subsection names follow the same 55restrictions as section names. 56 57All the other lines (and the remainder of the line after the section 58header) are recognized as setting variables, in the form 59'name = value' (or just 'name', which is a short-hand to say that 60the variable is the boolean "true"). 61The variable names are case-insensitive, allow only alphanumeric characters 62and `-`, and must start with an alphabetic character. 63 64A line that defines a value can be continued to the next line by 65ending it with a `\`; the backquote and the end-of-line are 66stripped. Leading whitespaces after 'name =', the remainder of the 67line after the first comment character '#' or ';', and trailing 68whitespaces of the line are discarded unless they are enclosed in 69double quotes. Internal whitespaces within the value are retained 70verbatim. 71 72Inside double quotes, double quote `"` and backslash `\` characters 73must be escaped: use `\"` for `"` and `\\` for `\`. 74 75The following escape sequences (beside `\"` and `\\`) are recognized: 76`\n` for newline character (NL), `\t` for horizontal tabulation (HT, TAB) 77and `\b` for backspace (BS). Other char escape sequences (including octal 78escape sequences) are invalid. 79 80 81Includes 82~~~~~~~~ 83 84The `include` and `includeIf` sections allow you to include config 85directives from another source. These sections behave identically to 86each other with the exception that `includeIf` sections may be ignored 87if their condition does not evaluate to true; see "Conditional includes" 88below. 89 90You can include a config file from another by setting the special 91`include.path` (or `includeIf.*.path`) variable to the name of the file 92to be included. The variable takes a pathname as its value, and is 93subject to tilde expansion. These variables can be given multiple times. 94 95The contents of the included file are inserted immediately, as if they 96had been found at the location of the include directive. If the value of the 97variable is a relative path, the path is considered to 98be relative to the configuration file in which the include directive 99was found. See below for examples. 100 101Conditional includes 102~~~~~~~~~~~~~~~~~~~~ 103 104You can include a config file from another conditionally by setting a 105`includeIf.<condition>.path` variable to the name of the file to be 106included. 107 108The condition starts with a keyword followed by a colon and some data 109whose format and meaning depends on the keyword. Supported keywords 110are: 111 112`gitdir`:: 113 114 The data that follows the keyword `gitdir:` is used as a glob 115 pattern. If the location of the .git directory matches the 116 pattern, the include condition is met. 117+ 118The .git location may be auto-discovered, or come from `$GIT_DIR` 119environment variable. If the repository is auto discovered via a .git 120file (e.g. from submodules, or a linked worktree), the .git location 121would be the final location where the .git directory is, not where the 122.git file is. 123+ 124The pattern can contain standard globbing wildcards and two additional 125ones, `**/` and `/**`, that can match multiple path components. Please 126refer to linkgit:gitignore[5] for details. For convenience: 127 128 * If the pattern starts with `~/`, `~` will be substituted with the 129 content of the environment variable `HOME`. 130 131 * If the pattern starts with `./`, it is replaced with the directory 132 containing the current config file. 133 134 * If the pattern does not start with either `~/`, `./` or `/`, `**/` 135 will be automatically prepended. For example, the pattern `foo/bar` 136 becomes `**/foo/bar` and would match `/any/path/to/foo/bar`. 137 138 * If the pattern ends with `/`, `**` will be automatically added. For 139 example, the pattern `foo/` becomes `foo/**`. In other words, it 140 matches "foo" and everything inside, recursively. 141 142`gitdir/i`:: 143 This is the same as `gitdir` except that matching is done 144 case-insensitively (e.g. on case-insensitive file sytems) 145 146A few more notes on matching via `gitdir` and `gitdir/i`: 147 148 * Symlinks in `$GIT_DIR` are not resolved before matching. 149 150 * Both the symlink & realpath versions of paths will be matched 151 outside of `$GIT_DIR`. E.g. if ~/git is a symlink to 152 /mnt/storage/git, both `gitdir:~/git` and `gitdir:/mnt/storage/git` 153 will match. 154+ 155This was not the case in the initial release of this feature in 156v2.13.0, which only matched the realpath version. Configuration that 157wants to be compatible with the initial release of this feature needs 158to either specify only the realpath version, or both versions. 159 160 * Note that "../" is not special and will match literally, which is 161 unlikely what you want. 162 163Example 164~~~~~~~ 165 166 # Core variables 167 [core] 168 ; Don't trust file modes 169 filemode = false 170 171 # Our diff algorithm 172 [diff] 173 external = /usr/local/bin/diff-wrapper 174 renames = true 175 176 [branch "devel"] 177 remote = origin 178 merge = refs/heads/devel 179 180 # Proxy settings 181 [core] 182 gitProxy="ssh" for "kernel.org" 183 gitProxy=default-proxy ; for the rest 184 185 [include] 186 path = /path/to/foo.inc ; include by absolute path 187 path = foo.inc ; find "foo.inc" relative to the current file 188 path = ~/foo.inc ; find "foo.inc" in your `$HOME` directory 189 190 ; include if $GIT_DIR is /path/to/foo/.git 191 [includeIf "gitdir:/path/to/foo/.git"] 192 path = /path/to/foo.inc 193 194 ; include for all repositories inside /path/to/group 195 [includeIf "gitdir:/path/to/group/"] 196 path = /path/to/foo.inc 197 198 ; include for all repositories inside $HOME/to/group 199 [includeIf "gitdir:~/to/group/"] 200 path = /path/to/foo.inc 201 202 ; relative paths are always relative to the including 203 ; file (if the condition is true); their location is not 204 ; affected by the condition 205 [includeIf "gitdir:/path/to/group/"] 206 path = foo.inc 207 208Values 209~~~~~~ 210 211Values of many variables are treated as a simple string, but there 212are variables that take values of specific types and there are rules 213as to how to spell them. 214 215boolean:: 216 217 When a variable is said to take a boolean value, many 218 synonyms are accepted for 'true' and 'false'; these are all 219 case-insensitive. 220 221 true;; Boolean true literals are `yes`, `on`, `true`, 222 and `1`. Also, a variable defined without `= <value>` 223 is taken as true. 224 225 false;; Boolean false literals are `no`, `off`, `false`, 226 `0` and the empty string. 227+ 228When converting a value to its canonical form using the `--type=bool` type 229specifier, 'git config' will ensure that the output is "true" or 230"false" (spelled in lowercase). 231 232integer:: 233 The value for many variables that specify various sizes can 234 be suffixed with `k`, `M`,... to mean "scale the number by 235 1024", "by 1024x1024", etc. 236 237color:: 238 The value for a variable that takes a color is a list of 239 colors (at most two, one for foreground and one for background) 240 and attributes (as many as you want), separated by spaces. 241+ 242The basic colors accepted are `normal`, `black`, `red`, `green`, `yellow`, 243`blue`, `magenta`, `cyan` and `white`. The first color given is the 244foreground; the second is the background. 245+ 246Colors may also be given as numbers between 0 and 255; these use ANSI 247256-color mode (but note that not all terminals may support this). If 248your terminal supports it, you may also specify 24-bit RGB values as 249hex, like `#ff0ab3`. 250+ 251The accepted attributes are `bold`, `dim`, `ul`, `blink`, `reverse`, 252`italic`, and `strike` (for crossed-out or "strikethrough" letters). 253The position of any attributes with respect to the colors 254(before, after, or in between), doesn't matter. Specific attributes may 255be turned off by prefixing them with `no` or `no-` (e.g., `noreverse`, 256`no-ul`, etc). 257+ 258An empty color string produces no color effect at all. This can be used 259to avoid coloring specific elements without disabling color entirely. 260+ 261For git's pre-defined color slots, the attributes are meant to be reset 262at the beginning of each item in the colored output. So setting 263`color.decorate.branch` to `black` will paint that branch name in a 264plain `black`, even if the previous thing on the same output line (e.g. 265opening parenthesis before the list of branch names in `log --decorate` 266output) is set to be painted with `bold` or some other attribute. 267However, custom log formats may do more complicated and layered 268coloring, and the negated forms may be useful there. 269 270pathname:: 271 A variable that takes a pathname value can be given a 272 string that begins with "`~/`" or "`~user/`", and the usual 273 tilde expansion happens to such a string: `~/` 274 is expanded to the value of `$HOME`, and `~user/` to the 275 specified user's home directory. 276 277 278Variables 279~~~~~~~~~ 280 281Note that this list is non-comprehensive and not necessarily complete. 282For command-specific variables, you will find a more detailed description 283in the appropriate manual page. 284 285Other git-related tools may and do use their own variables. When 286inventing new variables for use in your own tool, make sure their 287names do not conflict with those that are used by Git itself and 288other popular tools, and describe them in your documentation. 289 290include::config/advice.txt[] 291 292include::config/core.txt[] 293 294include::config/add.txt[] 295 296include::config/alias.txt[] 297 298include::config/am.txt[] 299 300include::config/apply.txt[] 301 302include::config/blame.txt[] 303 304include::config/branch.txt[] 305 306include::config/browser.txt[] 307 308include::config/checkout.txt[] 309 310include::config/clean.txt[] 311 312include::config/color.txt[] 313 314include::config/column.txt[] 315 316include::config/commit.txt[] 317 318include::config/credential.txt[] 319 320include::config/completion.txt[] 321 322include::config/diff.txt[] 323 324include::config/difftool.txt[] 325 326include::config/fastimport.txt[] 327 328include::config/fetch.txt[] 329 330include::config/format.txt[] 331 332include::config/filter.txt[] 333 334include::config/fsck.txt[] 335 336include::config/gc.txt[] 337 338include::config/gitcvs.txt[] 339 340include::config/gitweb.txt[] 341 342include::config/grep.txt[] 343 344include::config/gpg.txt[] 345 346include::config/gui.txt[] 347 348include::config/guitool.txt[] 349 350help.browser:: 351 Specify the browser that will be used to display help in the 352 'web' format. See linkgit:git-help[1]. 353 354help.format:: 355 Override the default help format used by linkgit:git-help[1]. 356 Values 'man', 'info', 'web' and 'html' are supported. 'man' is 357 the default. 'web' and 'html' are the same. 358 359help.autoCorrect:: 360 Automatically correct and execute mistyped commands after 361 waiting for the given number of deciseconds (0.1 sec). If more 362 than one command can be deduced from the entered text, nothing 363 will be executed. If the value of this option is negative, 364 the corrected command will be executed immediately. If the 365 value is 0 - the command will be just shown but not executed. 366 This is the default. 367 368help.htmlPath:: 369 Specify the path where the HTML documentation resides. File system paths 370 and URLs are supported. HTML pages will be prefixed with this path when 371 help is displayed in the 'web' format. This defaults to the documentation 372 path of your Git installation. 373 374http.proxy:: 375 Override the HTTP proxy, normally configured using the 'http_proxy', 376 'https_proxy', and 'all_proxy' environment variables (see `curl(1)`). In 377 addition to the syntax understood by curl, it is possible to specify a 378 proxy string with a user name but no password, in which case git will 379 attempt to acquire one in the same way it does for other credentials. See 380 linkgit:gitcredentials[7] for more information. The syntax thus is 381 '[protocol://][user[:password]@]proxyhost[:port]'. This can be overridden 382 on a per-remote basis; see remote.<name>.proxy 383 384http.proxyAuthMethod:: 385 Set the method with which to authenticate against the HTTP proxy. This 386 only takes effect if the configured proxy string contains a user name part 387 (i.e. is of the form 'user@host' or 'user@host:port'). This can be 388 overridden on a per-remote basis; see `remote.<name>.proxyAuthMethod`. 389 Both can be overridden by the `GIT_HTTP_PROXY_AUTHMETHOD` environment 390 variable. Possible values are: 391+ 392-- 393* `anyauth` - Automatically pick a suitable authentication method. It is 394 assumed that the proxy answers an unauthenticated request with a 407 395 status code and one or more Proxy-authenticate headers with supported 396 authentication methods. This is the default. 397* `basic` - HTTP Basic authentication 398* `digest` - HTTP Digest authentication; this prevents the password from being 399 transmitted to the proxy in clear text 400* `negotiate` - GSS-Negotiate authentication (compare the --negotiate option 401 of `curl(1)`) 402* `ntlm` - NTLM authentication (compare the --ntlm option of `curl(1)`) 403-- 404 405http.emptyAuth:: 406 Attempt authentication without seeking a username or password. This 407 can be used to attempt GSS-Negotiate authentication without specifying 408 a username in the URL, as libcurl normally requires a username for 409 authentication. 410 411http.delegation:: 412 Control GSSAPI credential delegation. The delegation is disabled 413 by default in libcurl since version 7.21.7. Set parameter to tell 414 the server what it is allowed to delegate when it comes to user 415 credentials. Used with GSS/kerberos. Possible values are: 416+ 417-- 418* `none` - Don't allow any delegation. 419* `policy` - Delegates if and only if the OK-AS-DELEGATE flag is set in the 420 Kerberos service ticket, which is a matter of realm policy. 421* `always` - Unconditionally allow the server to delegate. 422-- 423 424 425http.extraHeader:: 426 Pass an additional HTTP header when communicating with a server. If 427 more than one such entry exists, all of them are added as extra 428 headers. To allow overriding the settings inherited from the system 429 config, an empty value will reset the extra headers to the empty list. 430 431http.cookieFile:: 432 The pathname of a file containing previously stored cookie lines, 433 which should be used 434 in the Git http session, if they match the server. The file format 435 of the file to read cookies from should be plain HTTP headers or 436 the Netscape/Mozilla cookie file format (see `curl(1)`). 437 NOTE that the file specified with http.cookieFile is used only as 438 input unless http.saveCookies is set. 439 440http.saveCookies:: 441 If set, store cookies received during requests to the file specified by 442 http.cookieFile. Has no effect if http.cookieFile is unset. 443 444http.sslVersion:: 445 The SSL version to use when negotiating an SSL connection, if you 446 want to force the default. The available and default version 447 depend on whether libcurl was built against NSS or OpenSSL and the 448 particular configuration of the crypto library in use. Internally 449 this sets the 'CURLOPT_SSL_VERSION' option; see the libcurl 450 documentation for more details on the format of this option and 451 for the ssl version supported. Actually the possible values of 452 this option are: 453 454 - sslv2 455 - sslv3 456 - tlsv1 457 - tlsv1.0 458 - tlsv1.1 459 - tlsv1.2 460 - tlsv1.3 461 462+ 463Can be overridden by the `GIT_SSL_VERSION` environment variable. 464To force git to use libcurl's default ssl version and ignore any 465explicit http.sslversion option, set `GIT_SSL_VERSION` to the 466empty string. 467 468http.sslCipherList:: 469 A list of SSL ciphers to use when negotiating an SSL connection. 470 The available ciphers depend on whether libcurl was built against 471 NSS or OpenSSL and the particular configuration of the crypto 472 library in use. Internally this sets the 'CURLOPT_SSL_CIPHER_LIST' 473 option; see the libcurl documentation for more details on the format 474 of this list. 475+ 476Can be overridden by the `GIT_SSL_CIPHER_LIST` environment variable. 477To force git to use libcurl's default cipher list and ignore any 478explicit http.sslCipherList option, set `GIT_SSL_CIPHER_LIST` to the 479empty string. 480 481http.sslVerify:: 482 Whether to verify the SSL certificate when fetching or pushing 483 over HTTPS. Defaults to true. Can be overridden by the 484 `GIT_SSL_NO_VERIFY` environment variable. 485 486http.sslCert:: 487 File containing the SSL certificate when fetching or pushing 488 over HTTPS. Can be overridden by the `GIT_SSL_CERT` environment 489 variable. 490 491http.sslKey:: 492 File containing the SSL private key when fetching or pushing 493 over HTTPS. Can be overridden by the `GIT_SSL_KEY` environment 494 variable. 495 496http.sslCertPasswordProtected:: 497 Enable Git's password prompt for the SSL certificate. Otherwise 498 OpenSSL will prompt the user, possibly many times, if the 499 certificate or private key is encrypted. Can be overridden by the 500 `GIT_SSL_CERT_PASSWORD_PROTECTED` environment variable. 501 502http.sslCAInfo:: 503 File containing the certificates to verify the peer with when 504 fetching or pushing over HTTPS. Can be overridden by the 505 `GIT_SSL_CAINFO` environment variable. 506 507http.sslCAPath:: 508 Path containing files with the CA certificates to verify the peer 509 with when fetching or pushing over HTTPS. Can be overridden 510 by the `GIT_SSL_CAPATH` environment variable. 511 512http.sslBackend:: 513 Name of the SSL backend to use (e.g. "openssl" or "schannel"). 514 This option is ignored if cURL lacks support for choosing the SSL 515 backend at runtime. 516 517http.schannelCheckRevoke:: 518 Used to enforce or disable certificate revocation checks in cURL 519 when http.sslBackend is set to "schannel". Defaults to `true` if 520 unset. Only necessary to disable this if Git consistently errors 521 and the message is about checking the revocation status of a 522 certificate. This option is ignored if cURL lacks support for 523 setting the relevant SSL option at runtime. 524 525http.schannelUseSSLCAInfo:: 526 As of cURL v7.60.0, the Secure Channel backend can use the 527 certificate bundle provided via `http.sslCAInfo`, but that would 528 override the Windows Certificate Store. Since this is not desirable 529 by default, Git will tell cURL not to use that bundle by default 530 when the `schannel` backend was configured via `http.sslBackend`, 531 unless `http.schannelUseSSLCAInfo` overrides this behavior. 532 533http.pinnedpubkey:: 534 Public key of the https service. It may either be the filename of 535 a PEM or DER encoded public key file or a string starting with 536 'sha256//' followed by the base64 encoded sha256 hash of the 537 public key. See also libcurl 'CURLOPT_PINNEDPUBLICKEY'. git will 538 exit with an error if this option is set but not supported by 539 cURL. 540 541http.sslTry:: 542 Attempt to use AUTH SSL/TLS and encrypted data transfers 543 when connecting via regular FTP protocol. This might be needed 544 if the FTP server requires it for security reasons or you wish 545 to connect securely whenever remote FTP server supports it. 546 Default is false since it might trigger certificate verification 547 errors on misconfigured servers. 548 549http.maxRequests:: 550 How many HTTP requests to launch in parallel. Can be overridden 551 by the `GIT_HTTP_MAX_REQUESTS` environment variable. Default is 5. 552 553http.minSessions:: 554 The number of curl sessions (counted across slots) to be kept across 555 requests. They will not be ended with curl_easy_cleanup() until 556 http_cleanup() is invoked. If USE_CURL_MULTI is not defined, this 557 value will be capped at 1. Defaults to 1. 558 559http.postBuffer:: 560 Maximum size in bytes of the buffer used by smart HTTP 561 transports when POSTing data to the remote system. 562 For requests larger than this buffer size, HTTP/1.1 and 563 Transfer-Encoding: chunked is used to avoid creating a 564 massive pack file locally. Default is 1 MiB, which is 565 sufficient for most requests. 566 567http.lowSpeedLimit, http.lowSpeedTime:: 568 If the HTTP transfer speed is less than 'http.lowSpeedLimit' 569 for longer than 'http.lowSpeedTime' seconds, the transfer is aborted. 570 Can be overridden by the `GIT_HTTP_LOW_SPEED_LIMIT` and 571 `GIT_HTTP_LOW_SPEED_TIME` environment variables. 572 573http.noEPSV:: 574 A boolean which disables using of EPSV ftp command by curl. 575 This can helpful with some "poor" ftp servers which don't 576 support EPSV mode. Can be overridden by the `GIT_CURL_FTP_NO_EPSV` 577 environment variable. Default is false (curl will use EPSV). 578 579http.userAgent:: 580 The HTTP USER_AGENT string presented to an HTTP server. The default 581 value represents the version of the client Git such as git/1.7.1. 582 This option allows you to override this value to a more common value 583 such as Mozilla/4.0. This may be necessary, for instance, if 584 connecting through a firewall that restricts HTTP connections to a set 585 of common USER_AGENT strings (but not including those like git/1.7.1). 586 Can be overridden by the `GIT_HTTP_USER_AGENT` environment variable. 587 588http.followRedirects:: 589 Whether git should follow HTTP redirects. If set to `true`, git 590 will transparently follow any redirect issued by a server it 591 encounters. If set to `false`, git will treat all redirects as 592 errors. If set to `initial`, git will follow redirects only for 593 the initial request to a remote, but not for subsequent 594 follow-up HTTP requests. Since git uses the redirected URL as 595 the base for the follow-up requests, this is generally 596 sufficient. The default is `initial`. 597 598http.<url>.*:: 599 Any of the http.* options above can be applied selectively to some URLs. 600 For a config key to match a URL, each element of the config key is 601 compared to that of the URL, in the following order: 602+ 603-- 604. Scheme (e.g., `https` in `https://example.com/`). This field 605 must match exactly between the config key and the URL. 606 607. Host/domain name (e.g., `example.com` in `https://example.com/`). 608 This field must match between the config key and the URL. It is 609 possible to specify a `*` as part of the host name to match all subdomains 610 at this level. `https://*.example.com/` for example would match 611 `https://foo.example.com/`, but not `https://foo.bar.example.com/`. 612 613. Port number (e.g., `8080` in `http://example.com:8080/`). 614 This field must match exactly between the config key and the URL. 615 Omitted port numbers are automatically converted to the correct 616 default for the scheme before matching. 617 618. Path (e.g., `repo.git` in `https://example.com/repo.git`). The 619 path field of the config key must match the path field of the URL 620 either exactly or as a prefix of slash-delimited path elements. This means 621 a config key with path `foo/` matches URL path `foo/bar`. A prefix can only 622 match on a slash (`/`) boundary. Longer matches take precedence (so a config 623 key with path `foo/bar` is a better match to URL path `foo/bar` than a config 624 key with just path `foo/`). 625 626. User name (e.g., `user` in `https://user@example.com/repo.git`). If 627 the config key has a user name it must match the user name in the 628 URL exactly. If the config key does not have a user name, that 629 config key will match a URL with any user name (including none), 630 but at a lower precedence than a config key with a user name. 631-- 632+ 633The list above is ordered by decreasing precedence; a URL that matches 634a config key's path is preferred to one that matches its user name. For example, 635if the URL is `https://user@example.com/foo/bar` a config key match of 636`https://example.com/foo` will be preferred over a config key match of 637`https://user@example.com`. 638+ 639All URLs are normalized before attempting any matching (the password part, 640if embedded in the URL, is always ignored for matching purposes) so that 641equivalent URLs that are simply spelled differently will match properly. 642Environment variable settings always override any matches. The URLs that are 643matched against are those given directly to Git commands. This means any URLs 644visited as a result of a redirection do not participate in matching. 645 646ssh.variant:: 647 By default, Git determines the command line arguments to use 648 based on the basename of the configured SSH command (configured 649 using the environment variable `GIT_SSH` or `GIT_SSH_COMMAND` or 650 the config setting `core.sshCommand`). If the basename is 651 unrecognized, Git will attempt to detect support of OpenSSH 652 options by first invoking the configured SSH command with the 653 `-G` (print configuration) option and will subsequently use 654 OpenSSH options (if that is successful) or no options besides 655 the host and remote command (if it fails). 656+ 657The config variable `ssh.variant` can be set to override this detection. 658Valid values are `ssh` (to use OpenSSH options), `plink`, `putty`, 659`tortoiseplink`, `simple` (no options except the host and remote command). 660The default auto-detection can be explicitly requested using the value 661`auto`. Any other value is treated as `ssh`. This setting can also be 662overridden via the environment variable `GIT_SSH_VARIANT`. 663+ 664The current command-line parameters used for each variant are as 665follows: 666+ 667-- 668 669* `ssh` - [-p port] [-4] [-6] [-o option] [username@]host command 670 671* `simple` - [username@]host command 672 673* `plink` or `putty` - [-P port] [-4] [-6] [username@]host command 674 675* `tortoiseplink` - [-P port] [-4] [-6] -batch [username@]host command 676 677-- 678+ 679Except for the `simple` variant, command-line parameters are likely to 680change as git gains new features. 681 682i18n.commitEncoding:: 683 Character encoding the commit messages are stored in; Git itself 684 does not care per se, but this information is necessary e.g. when 685 importing commits from emails or in the gitk graphical history 686 browser (and possibly at other places in the future or in other 687 porcelains). See e.g. linkgit:git-mailinfo[1]. Defaults to 'utf-8'. 688 689i18n.logOutputEncoding:: 690 Character encoding the commit messages are converted to when 691 running 'git log' and friends. 692 693imap:: 694 The configuration variables in the 'imap' section are described 695 in linkgit:git-imap-send[1]. 696 697index.threads:: 698 Specifies the number of threads to spawn when loading the index. 699 This is meant to reduce index load time on multiprocessor machines. 700 Specifying 0 or 'true' will cause Git to auto-detect the number of 701 CPU's and set the number of threads accordingly. Specifying 1 or 702 'false' will disable multithreading. Defaults to 'true'. 703 704index.version:: 705 Specify the version with which new index files should be 706 initialized. This does not affect existing repositories. 707 708init.templateDir:: 709 Specify the directory from which templates will be copied. 710 (See the "TEMPLATE DIRECTORY" section of linkgit:git-init[1].) 711 712instaweb.browser:: 713 Specify the program that will be used to browse your working 714 repository in gitweb. See linkgit:git-instaweb[1]. 715 716instaweb.httpd:: 717 The HTTP daemon command-line to start gitweb on your working 718 repository. See linkgit:git-instaweb[1]. 719 720instaweb.local:: 721 If true the web server started by linkgit:git-instaweb[1] will 722 be bound to the local IP (127.0.0.1). 723 724instaweb.modulePath:: 725 The default module path for linkgit:git-instaweb[1] to use 726 instead of /usr/lib/apache2/modules. Only used if httpd 727 is Apache. 728 729instaweb.port:: 730 The port number to bind the gitweb httpd to. See 731 linkgit:git-instaweb[1]. 732 733interactive.singleKey:: 734 In interactive commands, allow the user to provide one-letter 735 input with a single key (i.e., without hitting enter). 736 Currently this is used by the `--patch` mode of 737 linkgit:git-add[1], linkgit:git-checkout[1], linkgit:git-commit[1], 738 linkgit:git-reset[1], and linkgit:git-stash[1]. Note that this 739 setting is silently ignored if portable keystroke input 740 is not available; requires the Perl module Term::ReadKey. 741 742interactive.diffFilter:: 743 When an interactive command (such as `git add --patch`) shows 744 a colorized diff, git will pipe the diff through the shell 745 command defined by this configuration variable. The command may 746 mark up the diff further for human consumption, provided that it 747 retains a one-to-one correspondence with the lines in the 748 original diff. Defaults to disabled (no filtering). 749 750log.abbrevCommit:: 751 If true, makes linkgit:git-log[1], linkgit:git-show[1], and 752 linkgit:git-whatchanged[1] assume `--abbrev-commit`. You may 753 override this option with `--no-abbrev-commit`. 754 755log.date:: 756 Set the default date-time mode for the 'log' command. 757 Setting a value for log.date is similar to using 'git log''s 758 `--date` option. See linkgit:git-log[1] for details. 759 760log.decorate:: 761 Print out the ref names of any commits that are shown by the log 762 command. If 'short' is specified, the ref name prefixes 'refs/heads/', 763 'refs/tags/' and 'refs/remotes/' will not be printed. If 'full' is 764 specified, the full ref name (including prefix) will be printed. 765 If 'auto' is specified, then if the output is going to a terminal, 766 the ref names are shown as if 'short' were given, otherwise no ref 767 names are shown. This is the same as the `--decorate` option 768 of the `git log`. 769 770log.follow:: 771 If `true`, `git log` will act as if the `--follow` option was used when 772 a single <path> is given. This has the same limitations as `--follow`, 773 i.e. it cannot be used to follow multiple files and does not work well 774 on non-linear history. 775 776log.graphColors:: 777 A list of colors, separated by commas, that can be used to draw 778 history lines in `git log --graph`. 779 780log.showRoot:: 781 If true, the initial commit will be shown as a big creation event. 782 This is equivalent to a diff against an empty tree. 783 Tools like linkgit:git-log[1] or linkgit:git-whatchanged[1], which 784 normally hide the root commit will now show it. True by default. 785 786log.showSignature:: 787 If true, makes linkgit:git-log[1], linkgit:git-show[1], and 788 linkgit:git-whatchanged[1] assume `--show-signature`. 789 790log.mailmap:: 791 If true, makes linkgit:git-log[1], linkgit:git-show[1], and 792 linkgit:git-whatchanged[1] assume `--use-mailmap`. 793 794mailinfo.scissors:: 795 If true, makes linkgit:git-mailinfo[1] (and therefore 796 linkgit:git-am[1]) act by default as if the --scissors option 797 was provided on the command-line. When active, this features 798 removes everything from the message body before a scissors 799 line (i.e. consisting mainly of ">8", "8<" and "-"). 800 801mailmap.file:: 802 The location of an augmenting mailmap file. The default 803 mailmap, located in the root of the repository, is loaded 804 first, then the mailmap file pointed to by this variable. 805 The location of the mailmap file may be in a repository 806 subdirectory, or somewhere outside of the repository itself. 807 See linkgit:git-shortlog[1] and linkgit:git-blame[1]. 808 809mailmap.blob:: 810 Like `mailmap.file`, but consider the value as a reference to a 811 blob in the repository. If both `mailmap.file` and 812 `mailmap.blob` are given, both are parsed, with entries from 813 `mailmap.file` taking precedence. In a bare repository, this 814 defaults to `HEAD:.mailmap`. In a non-bare repository, it 815 defaults to empty. 816 817man.viewer:: 818 Specify the programs that may be used to display help in the 819 'man' format. See linkgit:git-help[1]. 820 821man.<tool>.cmd:: 822 Specify the command to invoke the specified man viewer. The 823 specified command is evaluated in shell with the man page 824 passed as argument. (See linkgit:git-help[1].) 825 826man.<tool>.path:: 827 Override the path for the given tool that may be used to 828 display help in the 'man' format. See linkgit:git-help[1]. 829 830include::merge-config.txt[] 831 832mergetool.<tool>.path:: 833 Override the path for the given tool. This is useful in case 834 your tool is not in the PATH. 835 836mergetool.<tool>.cmd:: 837 Specify the command to invoke the specified merge tool. The 838 specified command is evaluated in shell with the following 839 variables available: 'BASE' is the name of a temporary file 840 containing the common base of the files to be merged, if available; 841 'LOCAL' is the name of a temporary file containing the contents of 842 the file on the current branch; 'REMOTE' is the name of a temporary 843 file containing the contents of the file from the branch being 844 merged; 'MERGED' contains the name of the file to which the merge 845 tool should write the results of a successful merge. 846 847mergetool.<tool>.trustExitCode:: 848 For a custom merge command, specify whether the exit code of 849 the merge command can be used to determine whether the merge was 850 successful. If this is not set to true then the merge target file 851 timestamp is checked and the merge assumed to have been successful 852 if the file has been updated, otherwise the user is prompted to 853 indicate the success of the merge. 854 855mergetool.meld.hasOutput:: 856 Older versions of `meld` do not support the `--output` option. 857 Git will attempt to detect whether `meld` supports `--output` 858 by inspecting the output of `meld --help`. Configuring 859 `mergetool.meld.hasOutput` will make Git skip these checks and 860 use the configured value instead. Setting `mergetool.meld.hasOutput` 861 to `true` tells Git to unconditionally use the `--output` option, 862 and `false` avoids using `--output`. 863 864mergetool.keepBackup:: 865 After performing a merge, the original file with conflict markers 866 can be saved as a file with a `.orig` extension. If this variable 867 is set to `false` then this file is not preserved. Defaults to 868 `true` (i.e. keep the backup files). 869 870mergetool.keepTemporaries:: 871 When invoking a custom merge tool, Git uses a set of temporary 872 files to pass to the tool. If the tool returns an error and this 873 variable is set to `true`, then these temporary files will be 874 preserved, otherwise they will be removed after the tool has 875 exited. Defaults to `false`. 876 877mergetool.writeToTemp:: 878 Git writes temporary 'BASE', 'LOCAL', and 'REMOTE' versions of 879 conflicting files in the worktree by default. Git will attempt 880 to use a temporary directory for these files when set `true`. 881 Defaults to `false`. 882 883mergetool.prompt:: 884 Prompt before each invocation of the merge resolution program. 885 886notes.mergeStrategy:: 887 Which merge strategy to choose by default when resolving notes 888 conflicts. Must be one of `manual`, `ours`, `theirs`, `union`, or 889 `cat_sort_uniq`. Defaults to `manual`. See "NOTES MERGE STRATEGIES" 890 section of linkgit:git-notes[1] for more information on each strategy. 891 892notes.<name>.mergeStrategy:: 893 Which merge strategy to choose when doing a notes merge into 894 refs/notes/<name>. This overrides the more general 895 "notes.mergeStrategy". See the "NOTES MERGE STRATEGIES" section in 896 linkgit:git-notes[1] for more information on the available strategies. 897 898notes.displayRef:: 899 The (fully qualified) refname from which to show notes when 900 showing commit messages. The value of this variable can be set 901 to a glob, in which case notes from all matching refs will be 902 shown. You may also specify this configuration variable 903 several times. A warning will be issued for refs that do not 904 exist, but a glob that does not match any refs is silently 905 ignored. 906+ 907This setting can be overridden with the `GIT_NOTES_DISPLAY_REF` 908environment variable, which must be a colon separated list of refs or 909globs. 910+ 911The effective value of "core.notesRef" (possibly overridden by 912GIT_NOTES_REF) is also implicitly added to the list of refs to be 913displayed. 914 915notes.rewrite.<command>:: 916 When rewriting commits with <command> (currently `amend` or 917 `rebase`) and this variable is set to `true`, Git 918 automatically copies your notes from the original to the 919 rewritten commit. Defaults to `true`, but see 920 "notes.rewriteRef" below. 921 922notes.rewriteMode:: 923 When copying notes during a rewrite (see the 924 "notes.rewrite.<command>" option), determines what to do if 925 the target commit already has a note. Must be one of 926 `overwrite`, `concatenate`, `cat_sort_uniq`, or `ignore`. 927 Defaults to `concatenate`. 928+ 929This setting can be overridden with the `GIT_NOTES_REWRITE_MODE` 930environment variable. 931 932notes.rewriteRef:: 933 When copying notes during a rewrite, specifies the (fully 934 qualified) ref whose notes should be copied. The ref may be a 935 glob, in which case notes in all matching refs will be copied. 936 You may also specify this configuration several times. 937+ 938Does not have a default value; you must configure this variable to 939enable note rewriting. Set it to `refs/notes/commits` to enable 940rewriting for the default commit notes. 941+ 942This setting can be overridden with the `GIT_NOTES_REWRITE_REF` 943environment variable, which must be a colon separated list of refs or 944globs. 945 946pack.window:: 947 The size of the window used by linkgit:git-pack-objects[1] when no 948 window size is given on the command line. Defaults to 10. 949 950pack.depth:: 951 The maximum delta depth used by linkgit:git-pack-objects[1] when no 952 maximum depth is given on the command line. Defaults to 50. 953 Maximum value is 4095. 954 955pack.windowMemory:: 956 The maximum size of memory that is consumed by each thread 957 in linkgit:git-pack-objects[1] for pack window memory when 958 no limit is given on the command line. The value can be 959 suffixed with "k", "m", or "g". When left unconfigured (or 960 set explicitly to 0), there will be no limit. 961 962pack.compression:: 963 An integer -1..9, indicating the compression level for objects 964 in a pack file. -1 is the zlib default. 0 means no 965 compression, and 1..9 are various speed/size tradeoffs, 9 being 966 slowest. If not set, defaults to core.compression. If that is 967 not set, defaults to -1, the zlib default, which is "a default 968 compromise between speed and compression (currently equivalent 969 to level 6)." 970+ 971Note that changing the compression level will not automatically recompress 972all existing objects. You can force recompression by passing the -F option 973to linkgit:git-repack[1]. 974 975pack.island:: 976 An extended regular expression configuring a set of delta 977 islands. See "DELTA ISLANDS" in linkgit:git-pack-objects[1] 978 for details. 979 980pack.islandCore:: 981 Specify an island name which gets to have its objects be 982 packed first. This creates a kind of pseudo-pack at the front 983 of one pack, so that the objects from the specified island are 984 hopefully faster to copy into any pack that should be served 985 to a user requesting these objects. In practice this means 986 that the island specified should likely correspond to what is 987 the most commonly cloned in the repo. See also "DELTA ISLANDS" 988 in linkgit:git-pack-objects[1]. 989 990pack.deltaCacheSize:: 991 The maximum memory in bytes used for caching deltas in 992 linkgit:git-pack-objects[1] before writing them out to a pack. 993 This cache is used to speed up the writing object phase by not 994 having to recompute the final delta result once the best match 995 for all objects is found. Repacking large repositories on machines 996 which are tight with memory might be badly impacted by this though, 997 especially if this cache pushes the system into swapping. 998 A value of 0 means no limit. The smallest size of 1 byte may be 999 used to virtually disable this cache. Defaults to 256 MiB.10001001pack.deltaCacheLimit::1002 The maximum size of a delta, that is cached in1003 linkgit:git-pack-objects[1]. This cache is used to speed up the1004 writing object phase by not having to recompute the final delta1005 result once the best match for all objects is found.1006 Defaults to 1000. Maximum value is 65535.10071008pack.threads::1009 Specifies the number of threads to spawn when searching for best1010 delta matches. This requires that linkgit:git-pack-objects[1]1011 be compiled with pthreads otherwise this option is ignored with a1012 warning. This is meant to reduce packing time on multiprocessor1013 machines. The required amount of memory for the delta search window1014 is however multiplied by the number of threads.1015 Specifying 0 will cause Git to auto-detect the number of CPU's1016 and set the number of threads accordingly.10171018pack.indexVersion::1019 Specify the default pack index version. Valid values are 1 for1020 legacy pack index used by Git versions prior to 1.5.2, and 2 for1021 the new pack index with capabilities for packs larger than 4 GB1022 as well as proper protection against the repacking of corrupted1023 packs. Version 2 is the default. Note that version 2 is enforced1024 and this config option ignored whenever the corresponding pack is1025 larger than 2 GB.1026+1027If you have an old Git that does not understand the version 2 `*.idx` file,1028cloning or fetching over a non native protocol (e.g. "http")1029that will copy both `*.pack` file and corresponding `*.idx` file from the1030other side may give you a repository that cannot be accessed with your1031older version of Git. If the `*.pack` file is smaller than 2 GB, however,1032you can use linkgit:git-index-pack[1] on the *.pack file to regenerate1033the `*.idx` file.10341035pack.packSizeLimit::1036 The maximum size of a pack. This setting only affects1037 packing to a file when repacking, i.e. the git:// protocol1038 is unaffected. It can be overridden by the `--max-pack-size`1039 option of linkgit:git-repack[1]. Reaching this limit results1040 in the creation of multiple packfiles; which in turn prevents1041 bitmaps from being created.1042 The minimum size allowed is limited to 1 MiB.1043 The default is unlimited.1044 Common unit suffixes of 'k', 'm', or 'g' are1045 supported.10461047pack.useBitmaps::1048 When true, git will use pack bitmaps (if available) when packing1049 to stdout (e.g., during the server side of a fetch). Defaults to1050 true. You should not generally need to turn this off unless1051 you are debugging pack bitmaps.10521053pack.writeBitmaps (deprecated)::1054 This is a deprecated synonym for `repack.writeBitmaps`.10551056pack.writeBitmapHashCache::1057 When true, git will include a "hash cache" section in the bitmap1058 index (if one is written). This cache can be used to feed git's1059 delta heuristics, potentially leading to better deltas between1060 bitmapped and non-bitmapped objects (e.g., when serving a fetch1061 between an older, bitmapped pack and objects that have been1062 pushed since the last gc). The downside is that it consumes 41063 bytes per object of disk space, and that JGit's bitmap1064 implementation does not understand it, causing it to complain if1065 Git and JGit are used on the same repository. Defaults to false.10661067pager.<cmd>::1068 If the value is boolean, turns on or off pagination of the1069 output of a particular Git subcommand when writing to a tty.1070 Otherwise, turns on pagination for the subcommand using the1071 pager specified by the value of `pager.<cmd>`. If `--paginate`1072 or `--no-pager` is specified on the command line, it takes1073 precedence over this option. To disable pagination for all1074 commands, set `core.pager` or `GIT_PAGER` to `cat`.10751076pretty.<name>::1077 Alias for a --pretty= format string, as specified in1078 linkgit:git-log[1]. Any aliases defined here can be used just1079 as the built-in pretty formats could. For example,1080 running `git config pretty.changelog "format:* %H %s"`1081 would cause the invocation `git log --pretty=changelog`1082 to be equivalent to running `git log "--pretty=format:* %H %s"`.1083 Note that an alias with the same name as a built-in format1084 will be silently ignored.10851086protocol.allow::1087 If set, provide a user defined default policy for all protocols which1088 don't explicitly have a policy (`protocol.<name>.allow`). By default,1089 if unset, known-safe protocols (http, https, git, ssh, file) have a1090 default policy of `always`, known-dangerous protocols (ext) have a1091 default policy of `never`, and all other protocols have a default1092 policy of `user`. Supported policies:1093+1094--10951096* `always` - protocol is always able to be used.10971098* `never` - protocol is never able to be used.10991100* `user` - protocol is only able to be used when `GIT_PROTOCOL_FROM_USER` is1101 either unset or has a value of 1. This policy should be used when you want a1102 protocol to be directly usable by the user but don't want it used by commands which1103 execute clone/fetch/push commands without user input, e.g. recursive1104 submodule initialization.11051106--11071108protocol.<name>.allow::1109 Set a policy to be used by protocol `<name>` with clone/fetch/push1110 commands. See `protocol.allow` above for the available policies.1111+1112The protocol names currently used by git are:1113+1114--1115 - `file`: any local file-based path (including `file://` URLs,1116 or local paths)11171118 - `git`: the anonymous git protocol over a direct TCP1119 connection (or proxy, if configured)11201121 - `ssh`: git over ssh (including `host:path` syntax,1122 `ssh://`, etc).11231124 - `http`: git over http, both "smart http" and "dumb http".1125 Note that this does _not_ include `https`; if you want to configure1126 both, you must do so individually.11271128 - any external helpers are named by their protocol (e.g., use1129 `hg` to allow the `git-remote-hg` helper)1130--11311132protocol.version::1133 Experimental. If set, clients will attempt to communicate with a1134 server using the specified protocol version. If unset, no1135 attempt will be made by the client to communicate using a1136 particular protocol version, this results in protocol version 01137 being used.1138 Supported versions:1139+1140--11411142* `0` - the original wire protocol.11431144* `1` - the original wire protocol with the addition of a version string1145 in the initial response from the server.11461147* `2` - link:technical/protocol-v2.html[wire protocol version 2].11481149--11501151include::pull-config.txt[]11521153include::push-config.txt[]11541155include::rebase-config.txt[]11561157include::receive-config.txt[]11581159remote.pushDefault::1160 The remote to push to by default. Overrides1161 `branch.<name>.remote` for all branches, and is overridden by1162 `branch.<name>.pushRemote` for specific branches.11631164remote.<name>.url::1165 The URL of a remote repository. See linkgit:git-fetch[1] or1166 linkgit:git-push[1].11671168remote.<name>.pushurl::1169 The push URL of a remote repository. See linkgit:git-push[1].11701171remote.<name>.proxy::1172 For remotes that require curl (http, https and ftp), the URL to1173 the proxy to use for that remote. Set to the empty string to1174 disable proxying for that remote.11751176remote.<name>.proxyAuthMethod::1177 For remotes that require curl (http, https and ftp), the method to use for1178 authenticating against the proxy in use (probably set in1179 `remote.<name>.proxy`). See `http.proxyAuthMethod`.11801181remote.<name>.fetch::1182 The default set of "refspec" for linkgit:git-fetch[1]. See1183 linkgit:git-fetch[1].11841185remote.<name>.push::1186 The default set of "refspec" for linkgit:git-push[1]. See1187 linkgit:git-push[1].11881189remote.<name>.mirror::1190 If true, pushing to this remote will automatically behave1191 as if the `--mirror` option was given on the command line.11921193remote.<name>.skipDefaultUpdate::1194 If true, this remote will be skipped by default when updating1195 using linkgit:git-fetch[1] or the `update` subcommand of1196 linkgit:git-remote[1].11971198remote.<name>.skipFetchAll::1199 If true, this remote will be skipped by default when updating1200 using linkgit:git-fetch[1] or the `update` subcommand of1201 linkgit:git-remote[1].12021203remote.<name>.receivepack::1204 The default program to execute on the remote side when pushing. See1205 option --receive-pack of linkgit:git-push[1].12061207remote.<name>.uploadpack::1208 The default program to execute on the remote side when fetching. See1209 option --upload-pack of linkgit:git-fetch-pack[1].12101211remote.<name>.tagOpt::1212 Setting this value to --no-tags disables automatic tag following when1213 fetching from remote <name>. Setting it to --tags will fetch every1214 tag from remote <name>, even if they are not reachable from remote1215 branch heads. Passing these flags directly to linkgit:git-fetch[1] can1216 override this setting. See options --tags and --no-tags of1217 linkgit:git-fetch[1].12181219remote.<name>.vcs::1220 Setting this to a value <vcs> will cause Git to interact with1221 the remote with the git-remote-<vcs> helper.12221223remote.<name>.prune::1224 When set to true, fetching from this remote by default will also1225 remove any remote-tracking references that no longer exist on the1226 remote (as if the `--prune` option was given on the command line).1227 Overrides `fetch.prune` settings, if any.12281229remote.<name>.pruneTags::1230 When set to true, fetching from this remote by default will also1231 remove any local tags that no longer exist on the remote if pruning1232 is activated in general via `remote.<name>.prune`, `fetch.prune` or1233 `--prune`. Overrides `fetch.pruneTags` settings, if any.1234+1235See also `remote.<name>.prune` and the PRUNING section of1236linkgit:git-fetch[1].12371238remotes.<group>::1239 The list of remotes which are fetched by "git remote update1240 <group>". See linkgit:git-remote[1].12411242repack.useDeltaBaseOffset::1243 By default, linkgit:git-repack[1] creates packs that use1244 delta-base offset. If you need to share your repository with1245 Git older than version 1.4.4, either directly or via a dumb1246 protocol such as http, then you need to set this option to1247 "false" and repack. Access from old Git versions over the1248 native protocol are unaffected by this option.12491250repack.packKeptObjects::1251 If set to true, makes `git repack` act as if1252 `--pack-kept-objects` was passed. See linkgit:git-repack[1] for1253 details. Defaults to `false` normally, but `true` if a bitmap1254 index is being written (either via `--write-bitmap-index` or1255 `repack.writeBitmaps`).12561257repack.useDeltaIslands::1258 If set to true, makes `git repack` act as if `--delta-islands`1259 was passed. Defaults to `false`.12601261repack.writeBitmaps::1262 When true, git will write a bitmap index when packing all1263 objects to disk (e.g., when `git repack -a` is run). This1264 index can speed up the "counting objects" phase of subsequent1265 packs created for clones and fetches, at the cost of some disk1266 space and extra time spent on the initial repack. This has1267 no effect if multiple packfiles are created.1268 Defaults to false.12691270rerere.autoUpdate::1271 When set to true, `git-rerere` updates the index with the1272 resulting contents after it cleanly resolves conflicts using1273 previously recorded resolution. Defaults to false.12741275rerere.enabled::1276 Activate recording of resolved conflicts, so that identical1277 conflict hunks can be resolved automatically, should they be1278 encountered again. By default, linkgit:git-rerere[1] is1279 enabled if there is an `rr-cache` directory under the1280 `$GIT_DIR`, e.g. if "rerere" was previously used in the1281 repository.12821283reset.quiet::1284 When set to true, 'git reset' will default to the '--quiet' option.12851286include::sendemail-config.txt[]12871288sequence.editor::1289 Text editor used by `git rebase -i` for editing the rebase instruction file.1290 The value is meant to be interpreted by the shell when it is used.1291 It can be overridden by the `GIT_SEQUENCE_EDITOR` environment variable.1292 When not configured the default commit message editor is used instead.12931294showBranch.default::1295 The default set of branches for linkgit:git-show-branch[1].1296 See linkgit:git-show-branch[1].12971298splitIndex.maxPercentChange::1299 When the split index feature is used, this specifies the1300 percent of entries the split index can contain compared to the1301 total number of entries in both the split index and the shared1302 index before a new shared index is written.1303 The value should be between 0 and 100. If the value is 0 then1304 a new shared index is always written, if it is 100 a new1305 shared index is never written.1306 By default the value is 20, so a new shared index is written1307 if the number of entries in the split index would be greater1308 than 20 percent of the total number of entries.1309 See linkgit:git-update-index[1].13101311splitIndex.sharedIndexExpire::1312 When the split index feature is used, shared index files that1313 were not modified since the time this variable specifies will1314 be removed when a new shared index file is created. The value1315 "now" expires all entries immediately, and "never" suppresses1316 expiration altogether.1317 The default value is "2.weeks.ago".1318 Note that a shared index file is considered modified (for the1319 purpose of expiration) each time a new split-index file is1320 either created based on it or read from it.1321 See linkgit:git-update-index[1].13221323status.relativePaths::1324 By default, linkgit:git-status[1] shows paths relative to the1325 current directory. Setting this variable to `false` shows paths1326 relative to the repository root (this was the default for Git1327 prior to v1.5.4).13281329status.short::1330 Set to true to enable --short by default in linkgit:git-status[1].1331 The option --no-short takes precedence over this variable.13321333status.branch::1334 Set to true to enable --branch by default in linkgit:git-status[1].1335 The option --no-branch takes precedence over this variable.13361337status.displayCommentPrefix::1338 If set to true, linkgit:git-status[1] will insert a comment1339 prefix before each output line (starting with1340 `core.commentChar`, i.e. `#` by default). This was the1341 behavior of linkgit:git-status[1] in Git 1.8.4 and previous.1342 Defaults to false.13431344status.renameLimit::1345 The number of files to consider when performing rename detection1346 in linkgit:git-status[1] and linkgit:git-commit[1]. Defaults to1347 the value of diff.renameLimit.13481349status.renames::1350 Whether and how Git detects renames in linkgit:git-status[1] and1351 linkgit:git-commit[1] . If set to "false", rename detection is1352 disabled. If set to "true", basic rename detection is enabled.1353 If set to "copies" or "copy", Git will detect copies, as well.1354 Defaults to the value of diff.renames.13551356status.showStash::1357 If set to true, linkgit:git-status[1] will display the number of1358 entries currently stashed away.1359 Defaults to false.13601361status.showUntrackedFiles::1362 By default, linkgit:git-status[1] and linkgit:git-commit[1] show1363 files which are not currently tracked by Git. Directories which1364 contain only untracked files, are shown with the directory name1365 only. Showing untracked files means that Git needs to lstat() all1366 the files in the whole repository, which might be slow on some1367 systems. So, this variable controls how the commands displays1368 the untracked files. Possible values are:1369+1370--1371* `no` - Show no untracked files.1372* `normal` - Show untracked files and directories.1373* `all` - Show also individual files in untracked directories.1374--1375+1376If this variable is not specified, it defaults to 'normal'.1377This variable can be overridden with the -u|--untracked-files option1378of linkgit:git-status[1] and linkgit:git-commit[1].13791380status.submoduleSummary::1381 Defaults to false.1382 If this is set to a non zero number or true (identical to -1 or an1383 unlimited number), the submodule summary will be enabled and a1384 summary of commits for modified submodules will be shown (see1385 --summary-limit option of linkgit:git-submodule[1]). Please note1386 that the summary output command will be suppressed for all1387 submodules when `diff.ignoreSubmodules` is set to 'all' or only1388 for those submodules where `submodule.<name>.ignore=all`. The only1389 exception to that rule is that status and commit will show staged1390 submodule changes. To1391 also view the summary for ignored submodules you can either use1392 the --ignore-submodules=dirty command-line option or the 'git1393 submodule summary' command, which shows a similar output but does1394 not honor these settings.13951396stash.showPatch::1397 If this is set to true, the `git stash show` command without an1398 option will show the stash entry in patch form. Defaults to false.1399 See description of 'show' command in linkgit:git-stash[1].14001401stash.showStat::1402 If this is set to true, the `git stash show` command without an1403 option will show diffstat of the stash entry. Defaults to true.1404 See description of 'show' command in linkgit:git-stash[1].14051406include::submodule-config.txt[]14071408tag.forceSignAnnotated::1409 A boolean to specify whether annotated tags created should be GPG signed.1410 If `--annotate` is specified on the command line, it takes1411 precedence over this option.14121413tag.sort::1414 This variable controls the sort ordering of tags when displayed by1415 linkgit:git-tag[1]. Without the "--sort=<value>" option provided, the1416 value of this variable will be used as the default.14171418tar.umask::1419 This variable can be used to restrict the permission bits of1420 tar archive entries. The default is 0002, which turns off the1421 world write bit. The special value "user" indicates that the1422 archiving user's umask will be used instead. See umask(2) and1423 linkgit:git-archive[1].14241425transfer.fsckObjects::1426 When `fetch.fsckObjects` or `receive.fsckObjects` are1427 not set, the value of this variable is used instead.1428 Defaults to false.1429+1430When set, the fetch or receive will abort in the case of a malformed1431object or a link to a nonexistent object. In addition, various other1432issues are checked for, including legacy issues (see `fsck.<msg-id>`),1433and potential security issues like the existence of a `.GIT` directory1434or a malicious `.gitmodules` file (see the release notes for v2.2.11435and v2.17.1 for details). Other sanity and security checks may be1436added in future releases.1437+1438On the receiving side, failing fsckObjects will make those objects1439unreachable, see "QUARANTINE ENVIRONMENT" in1440linkgit:git-receive-pack[1]. On the fetch side, malformed objects will1441instead be left unreferenced in the repository.1442+1443Due to the non-quarantine nature of the `fetch.fsckObjects`1444implementation it can not be relied upon to leave the object store1445clean like `receive.fsckObjects` can.1446+1447As objects are unpacked they're written to the object store, so there1448can be cases where malicious objects get introduced even though the1449"fetch" failed, only to have a subsequent "fetch" succeed because only1450new incoming objects are checked, not those that have already been1451written to the object store. That difference in behavior should not be1452relied upon. In the future, such objects may be quarantined for1453"fetch" as well.1454+1455For now, the paranoid need to find some way to emulate the quarantine1456environment if they'd like the same protection as "push". E.g. in the1457case of an internal mirror do the mirroring in two steps, one to fetch1458the untrusted objects, and then do a second "push" (which will use the1459quarantine) to another internal repo, and have internal clients1460consume this pushed-to repository, or embargo internal fetches and1461only allow them once a full "fsck" has run (and no new fetches have1462happened in the meantime).14631464transfer.hideRefs::1465 String(s) `receive-pack` and `upload-pack` use to decide which1466 refs to omit from their initial advertisements. Use more than1467 one definition to specify multiple prefix strings. A ref that is1468 under the hierarchies listed in the value of this variable is1469 excluded, and is hidden when responding to `git push` or `git1470 fetch`. See `receive.hideRefs` and `uploadpack.hideRefs` for1471 program-specific versions of this config.1472+1473You may also include a `!` in front of the ref name to negate the entry,1474explicitly exposing it, even if an earlier entry marked it as hidden.1475If you have multiple hideRefs values, later entries override earlier ones1476(and entries in more-specific config files override less-specific ones).1477+1478If a namespace is in use, the namespace prefix is stripped from each1479reference before it is matched against `transfer.hiderefs` patterns.1480For example, if `refs/heads/master` is specified in `transfer.hideRefs` and1481the current namespace is `foo`, then `refs/namespaces/foo/refs/heads/master`1482is omitted from the advertisements but `refs/heads/master` and1483`refs/namespaces/bar/refs/heads/master` are still advertised as so-called1484"have" lines. In order to match refs before stripping, add a `^` in front of1485the ref name. If you combine `!` and `^`, `!` must be specified first.1486+1487Even if you hide refs, a client may still be able to steal the target1488objects via the techniques described in the "SECURITY" section of the1489linkgit:gitnamespaces[7] man page; it's best to keep private data in a1490separate repository.14911492transfer.unpackLimit::1493 When `fetch.unpackLimit` or `receive.unpackLimit` are1494 not set, the value of this variable is used instead.1495 The default value is 100.14961497uploadarchive.allowUnreachable::1498 If true, allow clients to use `git archive --remote` to request1499 any tree, whether reachable from the ref tips or not. See the1500 discussion in the "SECURITY" section of1501 linkgit:git-upload-archive[1] for more details. Defaults to1502 `false`.15031504uploadpack.hideRefs::1505 This variable is the same as `transfer.hideRefs`, but applies1506 only to `upload-pack` (and so affects only fetches, not pushes).1507 An attempt to fetch a hidden ref by `git fetch` will fail. See1508 also `uploadpack.allowTipSHA1InWant`.15091510uploadpack.allowTipSHA1InWant::1511 When `uploadpack.hideRefs` is in effect, allow `upload-pack`1512 to accept a fetch request that asks for an object at the tip1513 of a hidden ref (by default, such a request is rejected).1514 See also `uploadpack.hideRefs`. Even if this is false, a client1515 may be able to steal objects via the techniques described in the1516 "SECURITY" section of the linkgit:gitnamespaces[7] man page; it's1517 best to keep private data in a separate repository.15181519uploadpack.allowReachableSHA1InWant::1520 Allow `upload-pack` to accept a fetch request that asks for an1521 object that is reachable from any ref tip. However, note that1522 calculating object reachability is computationally expensive.1523 Defaults to `false`. Even if this is false, a client may be able1524 to steal objects via the techniques described in the "SECURITY"1525 section of the linkgit:gitnamespaces[7] man page; it's best to1526 keep private data in a separate repository.15271528uploadpack.allowAnySHA1InWant::1529 Allow `upload-pack` to accept a fetch request that asks for any1530 object at all.1531 Defaults to `false`.15321533uploadpack.keepAlive::1534 When `upload-pack` has started `pack-objects`, there may be a1535 quiet period while `pack-objects` prepares the pack. Normally1536 it would output progress information, but if `--quiet` was used1537 for the fetch, `pack-objects` will output nothing at all until1538 the pack data begins. Some clients and networks may consider1539 the server to be hung and give up. Setting this option instructs1540 `upload-pack` to send an empty keepalive packet every1541 `uploadpack.keepAlive` seconds. Setting this option to 01542 disables keepalive packets entirely. The default is 5 seconds.15431544uploadpack.packObjectsHook::1545 If this option is set, when `upload-pack` would run1546 `git pack-objects` to create a packfile for a client, it will1547 run this shell command instead. The `pack-objects` command and1548 arguments it _would_ have run (including the `git pack-objects`1549 at the beginning) are appended to the shell command. The stdin1550 and stdout of the hook are treated as if `pack-objects` itself1551 was run. I.e., `upload-pack` will feed input intended for1552 `pack-objects` to the hook, and expects a completed packfile on1553 stdout.1554+1555Note that this configuration variable is ignored if it is seen in the1556repository-level config (this is a safety measure against fetching from1557untrusted repositories).15581559uploadpack.allowFilter::1560 If this option is set, `upload-pack` will support partial1561 clone and partial fetch object filtering.15621563uploadpack.allowRefInWant::1564 If this option is set, `upload-pack` will support the `ref-in-want`1565 feature of the protocol version 2 `fetch` command. This feature1566 is intended for the benefit of load-balanced servers which may1567 not have the same view of what OIDs their refs point to due to1568 replication delay.15691570url.<base>.insteadOf::1571 Any URL that starts with this value will be rewritten to1572 start, instead, with <base>. In cases where some site serves a1573 large number of repositories, and serves them with multiple1574 access methods, and some users need to use different access1575 methods, this feature allows people to specify any of the1576 equivalent URLs and have Git automatically rewrite the URL to1577 the best alternative for the particular user, even for a1578 never-before-seen repository on the site. When more than one1579 insteadOf strings match a given URL, the longest match is used.1580+1581Note that any protocol restrictions will be applied to the rewritten1582URL. If the rewrite changes the URL to use a custom protocol or remote1583helper, you may need to adjust the `protocol.*.allow` config to permit1584the request. In particular, protocols you expect to use for submodules1585must be set to `always` rather than the default of `user`. See the1586description of `protocol.allow` above.15871588url.<base>.pushInsteadOf::1589 Any URL that starts with this value will not be pushed to;1590 instead, it will be rewritten to start with <base>, and the1591 resulting URL will be pushed to. In cases where some site serves1592 a large number of repositories, and serves them with multiple1593 access methods, some of which do not allow push, this feature1594 allows people to specify a pull-only URL and have Git1595 automatically use an appropriate URL to push, even for a1596 never-before-seen repository on the site. When more than one1597 pushInsteadOf strings match a given URL, the longest match is1598 used. If a remote has an explicit pushurl, Git will ignore this1599 setting for that remote.16001601user.email::1602 Your email address to be recorded in any newly created commits.1603 Can be overridden by the `GIT_AUTHOR_EMAIL`, `GIT_COMMITTER_EMAIL`, and1604 `EMAIL` environment variables. See linkgit:git-commit-tree[1].16051606user.name::1607 Your full name to be recorded in any newly created commits.1608 Can be overridden by the `GIT_AUTHOR_NAME` and `GIT_COMMITTER_NAME`1609 environment variables. See linkgit:git-commit-tree[1].16101611user.useConfigOnly::1612 Instruct Git to avoid trying to guess defaults for `user.email`1613 and `user.name`, and instead retrieve the values only from the1614 configuration. For example, if you have multiple email addresses1615 and would like to use a different one for each repository, then1616 with this configuration option set to `true` in the global config1617 along with a name, Git will prompt you to set up an email before1618 making new commits in a newly cloned repository.1619 Defaults to `false`.16201621user.signingKey::1622 If linkgit:git-tag[1] or linkgit:git-commit[1] is not selecting the1623 key you want it to automatically when creating a signed tag or1624 commit, you can override the default selection with this variable.1625 This option is passed unchanged to gpg's --local-user parameter,1626 so you may specify a key using any method that gpg supports.16271628versionsort.prereleaseSuffix (deprecated)::1629 Deprecated alias for `versionsort.suffix`. Ignored if1630 `versionsort.suffix` is set.16311632versionsort.suffix::1633 Even when version sort is used in linkgit:git-tag[1], tagnames1634 with the same base version but different suffixes are still sorted1635 lexicographically, resulting e.g. in prerelease tags appearing1636 after the main release (e.g. "1.0-rc1" after "1.0"). This1637 variable can be specified to determine the sorting order of tags1638 with different suffixes.1639+1640By specifying a single suffix in this variable, any tagname containing1641that suffix will appear before the corresponding main release. E.g. if1642the variable is set to "-rc", then all "1.0-rcX" tags will appear before1643"1.0". If specified multiple times, once per suffix, then the order of1644suffixes in the configuration will determine the sorting order of tagnames1645with those suffixes. E.g. if "-pre" appears before "-rc" in the1646configuration, then all "1.0-preX" tags will be listed before any1647"1.0-rcX" tags. The placement of the main release tag relative to tags1648with various suffixes can be determined by specifying the empty suffix1649among those other suffixes. E.g. if the suffixes "-rc", "", "-ck" and1650"-bfs" appear in the configuration in this order, then all "v4.8-rcX" tags1651are listed first, followed by "v4.8", then "v4.8-ckX" and finally1652"v4.8-bfsX".1653+1654If more than one suffixes match the same tagname, then that tagname will1655be sorted according to the suffix which starts at the earliest position in1656the tagname. If more than one different matching suffixes start at1657that earliest position, then that tagname will be sorted according to the1658longest of those suffixes.1659The sorting order between different suffixes is undefined if they are1660in multiple config files.16611662web.browser::1663 Specify a web browser that may be used by some commands.1664 Currently only linkgit:git-instaweb[1] and linkgit:git-help[1]1665 may use it.16661667worktree.guessRemote::1668 With `add`, if no branch argument, and neither of `-b` nor1669 `-B` nor `--detach` are given, the command defaults to1670 creating a new branch from HEAD. If `worktree.guessRemote` is1671 set to true, `worktree add` tries to find a remote-tracking1672 branch whose name uniquely matches the new branch name. If1673 such a branch exists, it is checked out and set as "upstream"1674 for the new branch. If no such match can be found, it falls1675 back to creating a new branch from the current HEAD.