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 310clean.requireForce:: 311 A boolean to make git-clean do nothing unless given -f, 312 -i or -n. Defaults to true. 313 314color.advice:: 315 A boolean to enable/disable color in hints (e.g. when a push 316 failed, see `advice.*` for a list). May be set to `always`, 317 `false` (or `never`) or `auto` (or `true`), in which case colors 318 are used only when the error output goes to a terminal. If 319 unset, then the value of `color.ui` is used (`auto` by default). 320 321color.advice.hint:: 322 Use customized color for hints. 323 324color.blame.highlightRecent:: 325 This can be used to color the metadata of a blame line depending 326 on age of the line. 327+ 328This setting should be set to a comma-separated list of color and date settings, 329starting and ending with a color, the dates should be set from oldest to newest. 330The metadata will be colored given the colors if the the line was introduced 331before the given timestamp, overwriting older timestamped colors. 332+ 333Instead of an absolute timestamp relative timestamps work as well, e.g. 3342.weeks.ago is valid to address anything older than 2 weeks. 335+ 336It defaults to 'blue,12 month ago,white,1 month ago,red', which colors 337everything older than one year blue, recent changes between one month and 338one year old are kept white, and lines introduced within the last month are 339colored red. 340 341color.blame.repeatedLines:: 342 Use the customized color for the part of git-blame output that 343 is repeated meta information per line (such as commit id, 344 author name, date and timezone). Defaults to cyan. 345 346color.branch:: 347 A boolean to enable/disable color in the output of 348 linkgit:git-branch[1]. May be set to `always`, 349 `false` (or `never`) or `auto` (or `true`), in which case colors are used 350 only when the output is to a terminal. If unset, then the 351 value of `color.ui` is used (`auto` by default). 352 353color.branch.<slot>:: 354 Use customized color for branch coloration. `<slot>` is one of 355 `current` (the current branch), `local` (a local branch), 356 `remote` (a remote-tracking branch in refs/remotes/), 357 `upstream` (upstream tracking branch), `plain` (other 358 refs). 359 360color.diff:: 361 Whether to use ANSI escape sequences to add color to patches. 362 If this is set to `always`, linkgit:git-diff[1], 363 linkgit:git-log[1], and linkgit:git-show[1] will use color 364 for all patches. If it is set to `true` or `auto`, those 365 commands will only use color when output is to the terminal. 366 If unset, then the value of `color.ui` is used (`auto` by 367 default). 368+ 369This does not affect linkgit:git-format-patch[1] or the 370'git-diff-{asterisk}' plumbing commands. Can be overridden on the 371command line with the `--color[=<when>]` option. 372 373color.diff.<slot>:: 374 Use customized color for diff colorization. `<slot>` specifies 375 which part of the patch to use the specified color, and is one 376 of `context` (context text - `plain` is a historical synonym), 377 `meta` (metainformation), `frag` 378 (hunk header), 'func' (function in hunk header), `old` (removed lines), 379 `new` (added lines), `commit` (commit headers), `whitespace` 380 (highlighting whitespace errors), `oldMoved` (deleted lines), 381 `newMoved` (added lines), `oldMovedDimmed`, `oldMovedAlternative`, 382 `oldMovedAlternativeDimmed`, `newMovedDimmed`, `newMovedAlternative` 383 `newMovedAlternativeDimmed` (See the '<mode>' 384 setting of '--color-moved' in linkgit:git-diff[1] for details), 385 `contextDimmed`, `oldDimmed`, `newDimmed`, `contextBold`, 386 `oldBold`, and `newBold` (see linkgit:git-range-diff[1] for details). 387 388color.decorate.<slot>:: 389 Use customized color for 'git log --decorate' output. `<slot>` is one 390 of `branch`, `remoteBranch`, `tag`, `stash` or `HEAD` for local 391 branches, remote-tracking branches, tags, stash and HEAD, respectively 392 and `grafted` for grafted commits. 393 394color.grep:: 395 When set to `always`, always highlight matches. When `false` (or 396 `never`), never. When set to `true` or `auto`, use color only 397 when the output is written to the terminal. If unset, then the 398 value of `color.ui` is used (`auto` by default). 399 400color.grep.<slot>:: 401 Use customized color for grep colorization. `<slot>` specifies which 402 part of the line to use the specified color, and is one of 403+ 404-- 405`context`;; 406 non-matching text in context lines (when using `-A`, `-B`, or `-C`) 407`filename`;; 408 filename prefix (when not using `-h`) 409`function`;; 410 function name lines (when using `-p`) 411`lineNumber`;; 412 line number prefix (when using `-n`) 413`column`;; 414 column number prefix (when using `--column`) 415`match`;; 416 matching text (same as setting `matchContext` and `matchSelected`) 417`matchContext`;; 418 matching text in context lines 419`matchSelected`;; 420 matching text in selected lines 421`selected`;; 422 non-matching text in selected lines 423`separator`;; 424 separators between fields on a line (`:`, `-`, and `=`) 425 and between hunks (`--`) 426-- 427 428color.interactive:: 429 When set to `always`, always use colors for interactive prompts 430 and displays (such as those used by "git-add --interactive" and 431 "git-clean --interactive"). When false (or `never`), never. 432 When set to `true` or `auto`, use colors only when the output is 433 to the terminal. If unset, then the value of `color.ui` is 434 used (`auto` by default). 435 436color.interactive.<slot>:: 437 Use customized color for 'git add --interactive' and 'git clean 438 --interactive' output. `<slot>` may be `prompt`, `header`, `help` 439 or `error`, for four distinct types of normal output from 440 interactive commands. 441 442color.pager:: 443 A boolean to enable/disable colored output when the pager is in 444 use (default is true). 445 446color.push:: 447 A boolean to enable/disable color in push errors. May be set to 448 `always`, `false` (or `never`) or `auto` (or `true`), in which 449 case colors are used only when the error output goes to a terminal. 450 If unset, then the value of `color.ui` is used (`auto` by default). 451 452color.push.error:: 453 Use customized color for push errors. 454 455color.remote:: 456 If set, keywords at the start of the line are highlighted. The 457 keywords are "error", "warning", "hint" and "success", and are 458 matched case-insensitively. May be set to `always`, `false` (or 459 `never`) or `auto` (or `true`). If unset, then the value of 460 `color.ui` is used (`auto` by default). 461 462color.remote.<slot>:: 463 Use customized color for each remote keyword. `<slot>` may be 464 `hint`, `warning`, `success` or `error` which match the 465 corresponding keyword. 466 467color.showBranch:: 468 A boolean to enable/disable color in the output of 469 linkgit:git-show-branch[1]. May be set to `always`, 470 `false` (or `never`) or `auto` (or `true`), in which case colors are used 471 only when the output is to a terminal. If unset, then the 472 value of `color.ui` is used (`auto` by default). 473 474color.status:: 475 A boolean to enable/disable color in the output of 476 linkgit:git-status[1]. May be set to `always`, 477 `false` (or `never`) or `auto` (or `true`), in which case colors are used 478 only when the output is to a terminal. If unset, then the 479 value of `color.ui` is used (`auto` by default). 480 481color.status.<slot>:: 482 Use customized color for status colorization. `<slot>` is 483 one of `header` (the header text of the status message), 484 `added` or `updated` (files which are added but not committed), 485 `changed` (files which are changed but not added in the index), 486 `untracked` (files which are not tracked by Git), 487 `branch` (the current branch), 488 `nobranch` (the color the 'no branch' warning is shown in, defaulting 489 to red), 490 `localBranch` or `remoteBranch` (the local and remote branch names, 491 respectively, when branch and tracking information is displayed in the 492 status short-format), or 493 `unmerged` (files which have unmerged changes). 494 495color.transport:: 496 A boolean to enable/disable color when pushes are rejected. May be 497 set to `always`, `false` (or `never`) or `auto` (or `true`), in which 498 case colors are used only when the error output goes to a terminal. 499 If unset, then the value of `color.ui` is used (`auto` by default). 500 501color.transport.rejected:: 502 Use customized color when a push was rejected. 503 504color.ui:: 505 This variable determines the default value for variables such 506 as `color.diff` and `color.grep` that control the use of color 507 per command family. Its scope will expand as more commands learn 508 configuration to set a default for the `--color` option. Set it 509 to `false` or `never` if you prefer Git commands not to use 510 color unless enabled explicitly with some other configuration 511 or the `--color` option. Set it to `always` if you want all 512 output not intended for machine consumption to use color, to 513 `true` or `auto` (this is the default since Git 1.8.4) if you 514 want such output to use color when written to the terminal. 515 516column.ui:: 517 Specify whether supported commands should output in columns. 518 This variable consists of a list of tokens separated by spaces 519 or commas: 520+ 521These options control when the feature should be enabled 522(defaults to 'never'): 523+ 524-- 525`always`;; 526 always show in columns 527`never`;; 528 never show in columns 529`auto`;; 530 show in columns if the output is to the terminal 531-- 532+ 533These options control layout (defaults to 'column'). Setting any 534of these implies 'always' if none of 'always', 'never', or 'auto' are 535specified. 536+ 537-- 538`column`;; 539 fill columns before rows 540`row`;; 541 fill rows before columns 542`plain`;; 543 show in one column 544-- 545+ 546Finally, these options can be combined with a layout option (defaults 547to 'nodense'): 548+ 549-- 550`dense`;; 551 make unequal size columns to utilize more space 552`nodense`;; 553 make equal size columns 554-- 555 556column.branch:: 557 Specify whether to output branch listing in `git branch` in columns. 558 See `column.ui` for details. 559 560column.clean:: 561 Specify the layout when list items in `git clean -i`, which always 562 shows files and directories in columns. See `column.ui` for details. 563 564column.status:: 565 Specify whether to output untracked files in `git status` in columns. 566 See `column.ui` for details. 567 568column.tag:: 569 Specify whether to output tag listing in `git tag` in columns. 570 See `column.ui` for details. 571 572commit.cleanup:: 573 This setting overrides the default of the `--cleanup` option in 574 `git commit`. See linkgit:git-commit[1] for details. Changing the 575 default can be useful when you always want to keep lines that begin 576 with comment character `#` in your log message, in which case you 577 would do `git config commit.cleanup whitespace` (note that you will 578 have to remove the help lines that begin with `#` in the commit log 579 template yourself, if you do this). 580 581commit.gpgSign:: 582 583 A boolean to specify whether all commits should be GPG signed. 584 Use of this option when doing operations such as rebase can 585 result in a large number of commits being signed. It may be 586 convenient to use an agent to avoid typing your GPG passphrase 587 several times. 588 589commit.status:: 590 A boolean to enable/disable inclusion of status information in the 591 commit message template when using an editor to prepare the commit 592 message. Defaults to true. 593 594commit.template:: 595 Specify the pathname of a file to use as the template for 596 new commit messages. 597 598commit.verbose:: 599 A boolean or int to specify the level of verbose with `git commit`. 600 See linkgit:git-commit[1]. 601 602credential.helper:: 603 Specify an external helper to be called when a username or 604 password credential is needed; the helper may consult external 605 storage to avoid prompting the user for the credentials. Note 606 that multiple helpers may be defined. See linkgit:gitcredentials[7] 607 for details. 608 609credential.useHttpPath:: 610 When acquiring credentials, consider the "path" component of an http 611 or https URL to be important. Defaults to false. See 612 linkgit:gitcredentials[7] for more information. 613 614credential.username:: 615 If no username is set for a network authentication, use this username 616 by default. See credential.<context>.* below, and 617 linkgit:gitcredentials[7]. 618 619credential.<url>.*:: 620 Any of the credential.* options above can be applied selectively to 621 some credentials. For example "credential.https://example.com.username" 622 would set the default username only for https connections to 623 example.com. See linkgit:gitcredentials[7] for details on how URLs are 624 matched. 625 626credentialCache.ignoreSIGHUP:: 627 Tell git-credential-cache--daemon to ignore SIGHUP, instead of quitting. 628 629completion.commands:: 630 This is only used by git-completion.bash to add or remove 631 commands from the list of completed commands. Normally only 632 porcelain commands and a few select others are completed. You 633 can add more commands, separated by space, in this 634 variable. Prefixing the command with '-' will remove it from 635 the existing list. 636 637include::diff-config.txt[] 638 639difftool.<tool>.path:: 640 Override the path for the given tool. This is useful in case 641 your tool is not in the PATH. 642 643difftool.<tool>.cmd:: 644 Specify the command to invoke the specified diff tool. 645 The specified command is evaluated in shell with the following 646 variables available: 'LOCAL' is set to the name of the temporary 647 file containing the contents of the diff pre-image and 'REMOTE' 648 is set to the name of the temporary file containing the contents 649 of the diff post-image. 650 651difftool.prompt:: 652 Prompt before each invocation of the diff tool. 653 654fastimport.unpackLimit:: 655 If the number of objects imported by linkgit:git-fast-import[1] 656 is below this limit, then the objects will be unpacked into 657 loose object files. However if the number of imported objects 658 equals or exceeds this limit then the pack will be stored as a 659 pack. Storing the pack from a fast-import can make the import 660 operation complete faster, especially on slow filesystems. If 661 not set, the value of `transfer.unpackLimit` is used instead. 662 663include::fetch-config.txt[] 664 665include::format-config.txt[] 666 667filter.<driver>.clean:: 668 The command which is used to convert the content of a worktree 669 file to a blob upon checkin. See linkgit:gitattributes[5] for 670 details. 671 672filter.<driver>.smudge:: 673 The command which is used to convert the content of a blob 674 object to a worktree file upon checkout. See 675 linkgit:gitattributes[5] for details. 676 677fsck.<msg-id>:: 678 During fsck git may find issues with legacy data which 679 wouldn't be generated by current versions of git, and which 680 wouldn't be sent over the wire if `transfer.fsckObjects` was 681 set. This feature is intended to support working with legacy 682 repositories containing such data. 683+ 684Setting `fsck.<msg-id>` will be picked up by linkgit:git-fsck[1], but 685to accept pushes of such data set `receive.fsck.<msg-id>` instead, or 686to clone or fetch it set `fetch.fsck.<msg-id>`. 687+ 688The rest of the documentation discusses `fsck.*` for brevity, but the 689same applies for the corresponding `receive.fsck.*` and 690`fetch.<msg-id>.*`. variables. 691+ 692Unlike variables like `color.ui` and `core.editor` the 693`receive.fsck.<msg-id>` and `fetch.fsck.<msg-id>` variables will not 694fall back on the `fsck.<msg-id>` configuration if they aren't set. To 695uniformly configure the same fsck settings in different circumstances 696all three of them they must all set to the same values. 697+ 698When `fsck.<msg-id>` is set, errors can be switched to warnings and 699vice versa by configuring the `fsck.<msg-id>` setting where the 700`<msg-id>` is the fsck message ID and the value is one of `error`, 701`warn` or `ignore`. For convenience, fsck prefixes the error/warning 702with the message ID, e.g. "missingEmail: invalid author/committer line 703- missing email" means that setting `fsck.missingEmail = ignore` will 704hide that issue. 705+ 706In general, it is better to enumerate existing objects with problems 707with `fsck.skipList`, instead of listing the kind of breakages these 708problematic objects share to be ignored, as doing the latter will 709allow new instances of the same breakages go unnoticed. 710+ 711Setting an unknown `fsck.<msg-id>` value will cause fsck to die, but 712doing the same for `receive.fsck.<msg-id>` and `fetch.fsck.<msg-id>` 713will only cause git to warn. 714 715fsck.skipList:: 716 The path to a list of object names (i.e. one unabbreviated SHA-1 per 717 line) that are known to be broken in a non-fatal way and should 718 be ignored. On versions of Git 2.20 and later comments ('#'), empty 719 lines, and any leading and trailing whitespace is ignored. Everything 720 but a SHA-1 per line will error out on older versions. 721+ 722This feature is useful when an established project should be accepted 723despite early commits containing errors that can be safely ignored 724such as invalid committer email addresses. Note: corrupt objects 725cannot be skipped with this setting. 726+ 727Like `fsck.<msg-id>` this variable has corresponding 728`receive.fsck.skipList` and `fetch.fsck.skipList` variants. 729+ 730Unlike variables like `color.ui` and `core.editor` the 731`receive.fsck.skipList` and `fetch.fsck.skipList` variables will not 732fall back on the `fsck.skipList` configuration if they aren't set. To 733uniformly configure the same fsck settings in different circumstances 734all three of them they must all set to the same values. 735+ 736Older versions of Git (before 2.20) documented that the object names 737list should be sorted. This was never a requirement, the object names 738could appear in any order, but when reading the list we tracked whether 739the list was sorted for the purposes of an internal binary search 740implementation, which could save itself some work with an already sorted 741list. Unless you had a humongous list there was no reason to go out of 742your way to pre-sort the list. After Git version 2.20 a hash implementation 743is used instead, so there's now no reason to pre-sort the list. 744 745gc.aggressiveDepth:: 746 The depth parameter used in the delta compression 747 algorithm used by 'git gc --aggressive'. This defaults 748 to 50. 749 750gc.aggressiveWindow:: 751 The window size parameter used in the delta compression 752 algorithm used by 'git gc --aggressive'. This defaults 753 to 250. 754 755gc.auto:: 756 When there are approximately more than this many loose 757 objects in the repository, `git gc --auto` will pack them. 758 Some Porcelain commands use this command to perform a 759 light-weight garbage collection from time to time. The 760 default value is 6700. Setting this to 0 disables it. 761 762gc.autoPackLimit:: 763 When there are more than this many packs that are not 764 marked with `*.keep` file in the repository, `git gc 765 --auto` consolidates them into one larger pack. The 766 default value is 50. Setting this to 0 disables it. 767 768gc.autoDetach:: 769 Make `git gc --auto` return immediately and run in background 770 if the system supports it. Default is true. 771 772gc.bigPackThreshold:: 773 If non-zero, all packs larger than this limit are kept when 774 `git gc` is run. This is very similar to `--keep-base-pack` 775 except that all packs that meet the threshold are kept, not 776 just the base pack. Defaults to zero. Common unit suffixes of 777 'k', 'm', or 'g' are supported. 778+ 779Note that if the number of kept packs is more than gc.autoPackLimit, 780this configuration variable is ignored, all packs except the base pack 781will be repacked. After this the number of packs should go below 782gc.autoPackLimit and gc.bigPackThreshold should be respected again. 783 784gc.writeCommitGraph:: 785 If true, then gc will rewrite the commit-graph file when 786 linkgit:git-gc[1] is run. When using linkgit:git-gc[1] 787 '--auto' the commit-graph will be updated if housekeeping is 788 required. Default is false. See linkgit:git-commit-graph[1] 789 for details. 790 791gc.logExpiry:: 792 If the file gc.log exists, then `git gc --auto` will print 793 its content and exit with status zero instead of running 794 unless that file is more than 'gc.logExpiry' old. Default is 795 "1.day". See `gc.pruneExpire` for more ways to specify its 796 value. 797 798gc.packRefs:: 799 Running `git pack-refs` in a repository renders it 800 unclonable by Git versions prior to 1.5.1.2 over dumb 801 transports such as HTTP. This variable determines whether 802 'git gc' runs `git pack-refs`. This can be set to `notbare` 803 to enable it within all non-bare repos or it can be set to a 804 boolean value. The default is `true`. 805 806gc.pruneExpire:: 807 When 'git gc' is run, it will call 'prune --expire 2.weeks.ago'. 808 Override the grace period with this config variable. The value 809 "now" may be used to disable this grace period and always prune 810 unreachable objects immediately, or "never" may be used to 811 suppress pruning. This feature helps prevent corruption when 812 'git gc' runs concurrently with another process writing to the 813 repository; see the "NOTES" section of linkgit:git-gc[1]. 814 815gc.worktreePruneExpire:: 816 When 'git gc' is run, it calls 817 'git worktree prune --expire 3.months.ago'. 818 This config variable can be used to set a different grace 819 period. The value "now" may be used to disable the grace 820 period and prune `$GIT_DIR/worktrees` immediately, or "never" 821 may be used to suppress pruning. 822 823gc.reflogExpire:: 824gc.<pattern>.reflogExpire:: 825 'git reflog expire' removes reflog entries older than 826 this time; defaults to 90 days. The value "now" expires all 827 entries immediately, and "never" suppresses expiration 828 altogether. With "<pattern>" (e.g. 829 "refs/stash") in the middle the setting applies only to 830 the refs that match the <pattern>. 831 832gc.reflogExpireUnreachable:: 833gc.<pattern>.reflogExpireUnreachable:: 834 'git reflog expire' removes reflog entries older than 835 this time and are not reachable from the current tip; 836 defaults to 30 days. The value "now" expires all entries 837 immediately, and "never" suppresses expiration altogether. 838 With "<pattern>" (e.g. "refs/stash") 839 in the middle, the setting applies only to the refs that 840 match the <pattern>. 841 842gc.rerereResolved:: 843 Records of conflicted merge you resolved earlier are 844 kept for this many days when 'git rerere gc' is run. 845 You can also use more human-readable "1.month.ago", etc. 846 The default is 60 days. See linkgit:git-rerere[1]. 847 848gc.rerereUnresolved:: 849 Records of conflicted merge you have not resolved are 850 kept for this many days when 'git rerere gc' is run. 851 You can also use more human-readable "1.month.ago", etc. 852 The default is 15 days. See linkgit:git-rerere[1]. 853 854include::gitcvs-config.txt[] 855 856gitweb.category:: 857gitweb.description:: 858gitweb.owner:: 859gitweb.url:: 860 See linkgit:gitweb[1] for description. 861 862gitweb.avatar:: 863gitweb.blame:: 864gitweb.grep:: 865gitweb.highlight:: 866gitweb.patches:: 867gitweb.pickaxe:: 868gitweb.remote_heads:: 869gitweb.showSizes:: 870gitweb.snapshot:: 871 See linkgit:gitweb.conf[5] for description. 872 873grep.lineNumber:: 874 If set to true, enable `-n` option by default. 875 876grep.column:: 877 If set to true, enable the `--column` option by default. 878 879grep.patternType:: 880 Set the default matching behavior. Using a value of 'basic', 'extended', 881 'fixed', or 'perl' will enable the `--basic-regexp`, `--extended-regexp`, 882 `--fixed-strings`, or `--perl-regexp` option accordingly, while the 883 value 'default' will return to the default matching behavior. 884 885grep.extendedRegexp:: 886 If set to true, enable `--extended-regexp` option by default. This 887 option is ignored when the `grep.patternType` option is set to a value 888 other than 'default'. 889 890grep.threads:: 891 Number of grep worker threads to use. 892 See `grep.threads` in linkgit:git-grep[1] for more information. 893 894grep.fallbackToNoIndex:: 895 If set to true, fall back to git grep --no-index if git grep 896 is executed outside of a git repository. Defaults to false. 897 898gpg.program:: 899 Use this custom program instead of "`gpg`" found on `$PATH` when 900 making or verifying a PGP signature. The program must support the 901 same command-line interface as GPG, namely, to verify a detached 902 signature, "`gpg --verify $file - <$signature`" is run, and the 903 program is expected to signal a good signature by exiting with 904 code 0, and to generate an ASCII-armored detached signature, the 905 standard input of "`gpg -bsau $key`" is fed with the contents to be 906 signed, and the program is expected to send the result to its 907 standard output. 908 909gpg.format:: 910 Specifies which key format to use when signing with `--gpg-sign`. 911 Default is "openpgp" and another possible value is "x509". 912 913gpg.<format>.program:: 914 Use this to customize the program used for the signing format you 915 chose. (see `gpg.program` and `gpg.format`) `gpg.program` can still 916 be used as a legacy synonym for `gpg.openpgp.program`. The default 917 value for `gpg.x509.program` is "gpgsm". 918 919include::gui-config.txt[] 920 921guitool.<name>.cmd:: 922 Specifies the shell command line to execute when the corresponding item 923 of the linkgit:git-gui[1] `Tools` menu is invoked. This option is 924 mandatory for every tool. The command is executed from the root of 925 the working directory, and in the environment it receives the name of 926 the tool as `GIT_GUITOOL`, the name of the currently selected file as 927 'FILENAME', and the name of the current branch as 'CUR_BRANCH' (if 928 the head is detached, 'CUR_BRANCH' is empty). 929 930guitool.<name>.needsFile:: 931 Run the tool only if a diff is selected in the GUI. It guarantees 932 that 'FILENAME' is not empty. 933 934guitool.<name>.noConsole:: 935 Run the command silently, without creating a window to display its 936 output. 937 938guitool.<name>.noRescan:: 939 Don't rescan the working directory for changes after the tool 940 finishes execution. 941 942guitool.<name>.confirm:: 943 Show a confirmation dialog before actually running the tool. 944 945guitool.<name>.argPrompt:: 946 Request a string argument from the user, and pass it to the tool 947 through the `ARGS` environment variable. Since requesting an 948 argument implies confirmation, the 'confirm' option has no effect 949 if this is enabled. If the option is set to 'true', 'yes', or '1', 950 the dialog uses a built-in generic prompt; otherwise the exact 951 value of the variable is used. 952 953guitool.<name>.revPrompt:: 954 Request a single valid revision from the user, and set the 955 `REVISION` environment variable. In other aspects this option 956 is similar to 'argPrompt', and can be used together with it. 957 958guitool.<name>.revUnmerged:: 959 Show only unmerged branches in the 'revPrompt' subdialog. 960 This is useful for tools similar to merge or rebase, but not 961 for things like checkout or reset. 962 963guitool.<name>.title:: 964 Specifies the title to use for the prompt dialog. The default 965 is the tool name. 966 967guitool.<name>.prompt:: 968 Specifies the general prompt string to display at the top of 969 the dialog, before subsections for 'argPrompt' and 'revPrompt'. 970 The default value includes the actual command. 971 972help.browser:: 973 Specify the browser that will be used to display help in the 974 'web' format. See linkgit:git-help[1]. 975 976help.format:: 977 Override the default help format used by linkgit:git-help[1]. 978 Values 'man', 'info', 'web' and 'html' are supported. 'man' is 979 the default. 'web' and 'html' are the same. 980 981help.autoCorrect:: 982 Automatically correct and execute mistyped commands after 983 waiting for the given number of deciseconds (0.1 sec). If more 984 than one command can be deduced from the entered text, nothing 985 will be executed. If the value of this option is negative, 986 the corrected command will be executed immediately. If the 987 value is 0 - the command will be just shown but not executed. 988 This is the default. 989 990help.htmlPath:: 991 Specify the path where the HTML documentation resides. File system paths 992 and URLs are supported. HTML pages will be prefixed with this path when 993 help is displayed in the 'web' format. This defaults to the documentation 994 path of your Git installation. 995 996http.proxy:: 997 Override the HTTP proxy, normally configured using the 'http_proxy', 998 'https_proxy', and 'all_proxy' environment variables (see `curl(1)`). In 999 addition to the syntax understood by curl, it is possible to specify a1000 proxy string with a user name but no password, in which case git will1001 attempt to acquire one in the same way it does for other credentials. See1002 linkgit:gitcredentials[7] for more information. The syntax thus is1003 '[protocol://][user[:password]@]proxyhost[:port]'. This can be overridden1004 on a per-remote basis; see remote.<name>.proxy10051006http.proxyAuthMethod::1007 Set the method with which to authenticate against the HTTP proxy. This1008 only takes effect if the configured proxy string contains a user name part1009 (i.e. is of the form 'user@host' or 'user@host:port'). This can be1010 overridden on a per-remote basis; see `remote.<name>.proxyAuthMethod`.1011 Both can be overridden by the `GIT_HTTP_PROXY_AUTHMETHOD` environment1012 variable. Possible values are:1013+1014--1015* `anyauth` - Automatically pick a suitable authentication method. It is1016 assumed that the proxy answers an unauthenticated request with a 4071017 status code and one or more Proxy-authenticate headers with supported1018 authentication methods. This is the default.1019* `basic` - HTTP Basic authentication1020* `digest` - HTTP Digest authentication; this prevents the password from being1021 transmitted to the proxy in clear text1022* `negotiate` - GSS-Negotiate authentication (compare the --negotiate option1023 of `curl(1)`)1024* `ntlm` - NTLM authentication (compare the --ntlm option of `curl(1)`)1025--10261027http.emptyAuth::1028 Attempt authentication without seeking a username or password. This1029 can be used to attempt GSS-Negotiate authentication without specifying1030 a username in the URL, as libcurl normally requires a username for1031 authentication.10321033http.delegation::1034 Control GSSAPI credential delegation. The delegation is disabled1035 by default in libcurl since version 7.21.7. Set parameter to tell1036 the server what it is allowed to delegate when it comes to user1037 credentials. Used with GSS/kerberos. Possible values are:1038+1039--1040* `none` - Don't allow any delegation.1041* `policy` - Delegates if and only if the OK-AS-DELEGATE flag is set in the1042 Kerberos service ticket, which is a matter of realm policy.1043* `always` - Unconditionally allow the server to delegate.1044--104510461047http.extraHeader::1048 Pass an additional HTTP header when communicating with a server. If1049 more than one such entry exists, all of them are added as extra1050 headers. To allow overriding the settings inherited from the system1051 config, an empty value will reset the extra headers to the empty list.10521053http.cookieFile::1054 The pathname of a file containing previously stored cookie lines,1055 which should be used1056 in the Git http session, if they match the server. The file format1057 of the file to read cookies from should be plain HTTP headers or1058 the Netscape/Mozilla cookie file format (see `curl(1)`).1059 NOTE that the file specified with http.cookieFile is used only as1060 input unless http.saveCookies is set.10611062http.saveCookies::1063 If set, store cookies received during requests to the file specified by1064 http.cookieFile. Has no effect if http.cookieFile is unset.10651066http.sslVersion::1067 The SSL version to use when negotiating an SSL connection, if you1068 want to force the default. The available and default version1069 depend on whether libcurl was built against NSS or OpenSSL and the1070 particular configuration of the crypto library in use. Internally1071 this sets the 'CURLOPT_SSL_VERSION' option; see the libcurl1072 documentation for more details on the format of this option and1073 for the ssl version supported. Actually the possible values of1074 this option are:10751076 - sslv21077 - sslv31078 - tlsv11079 - tlsv1.01080 - tlsv1.11081 - tlsv1.21082 - tlsv1.310831084+1085Can be overridden by the `GIT_SSL_VERSION` environment variable.1086To force git to use libcurl's default ssl version and ignore any1087explicit http.sslversion option, set `GIT_SSL_VERSION` to the1088empty string.10891090http.sslCipherList::1091 A list of SSL ciphers to use when negotiating an SSL connection.1092 The available ciphers depend on whether libcurl was built against1093 NSS or OpenSSL and the particular configuration of the crypto1094 library in use. Internally this sets the 'CURLOPT_SSL_CIPHER_LIST'1095 option; see the libcurl documentation for more details on the format1096 of this list.1097+1098Can be overridden by the `GIT_SSL_CIPHER_LIST` environment variable.1099To force git to use libcurl's default cipher list and ignore any1100explicit http.sslCipherList option, set `GIT_SSL_CIPHER_LIST` to the1101empty string.11021103http.sslVerify::1104 Whether to verify the SSL certificate when fetching or pushing1105 over HTTPS. Defaults to true. Can be overridden by the1106 `GIT_SSL_NO_VERIFY` environment variable.11071108http.sslCert::1109 File containing the SSL certificate when fetching or pushing1110 over HTTPS. Can be overridden by the `GIT_SSL_CERT` environment1111 variable.11121113http.sslKey::1114 File containing the SSL private key when fetching or pushing1115 over HTTPS. Can be overridden by the `GIT_SSL_KEY` environment1116 variable.11171118http.sslCertPasswordProtected::1119 Enable Git's password prompt for the SSL certificate. Otherwise1120 OpenSSL will prompt the user, possibly many times, if the1121 certificate or private key is encrypted. Can be overridden by the1122 `GIT_SSL_CERT_PASSWORD_PROTECTED` environment variable.11231124http.sslCAInfo::1125 File containing the certificates to verify the peer with when1126 fetching or pushing over HTTPS. Can be overridden by the1127 `GIT_SSL_CAINFO` environment variable.11281129http.sslCAPath::1130 Path containing files with the CA certificates to verify the peer1131 with when fetching or pushing over HTTPS. Can be overridden1132 by the `GIT_SSL_CAPATH` environment variable.11331134http.sslBackend::1135 Name of the SSL backend to use (e.g. "openssl" or "schannel").1136 This option is ignored if cURL lacks support for choosing the SSL1137 backend at runtime.11381139http.schannelCheckRevoke::1140 Used to enforce or disable certificate revocation checks in cURL1141 when http.sslBackend is set to "schannel". Defaults to `true` if1142 unset. Only necessary to disable this if Git consistently errors1143 and the message is about checking the revocation status of a1144 certificate. This option is ignored if cURL lacks support for1145 setting the relevant SSL option at runtime.11461147http.schannelUseSSLCAInfo::1148 As of cURL v7.60.0, the Secure Channel backend can use the1149 certificate bundle provided via `http.sslCAInfo`, but that would1150 override the Windows Certificate Store. Since this is not desirable1151 by default, Git will tell cURL not to use that bundle by default1152 when the `schannel` backend was configured via `http.sslBackend`,1153 unless `http.schannelUseSSLCAInfo` overrides this behavior.11541155http.pinnedpubkey::1156 Public key of the https service. It may either be the filename of1157 a PEM or DER encoded public key file or a string starting with1158 'sha256//' followed by the base64 encoded sha256 hash of the1159 public key. See also libcurl 'CURLOPT_PINNEDPUBLICKEY'. git will1160 exit with an error if this option is set but not supported by1161 cURL.11621163http.sslTry::1164 Attempt to use AUTH SSL/TLS and encrypted data transfers1165 when connecting via regular FTP protocol. This might be needed1166 if the FTP server requires it for security reasons or you wish1167 to connect securely whenever remote FTP server supports it.1168 Default is false since it might trigger certificate verification1169 errors on misconfigured servers.11701171http.maxRequests::1172 How many HTTP requests to launch in parallel. Can be overridden1173 by the `GIT_HTTP_MAX_REQUESTS` environment variable. Default is 5.11741175http.minSessions::1176 The number of curl sessions (counted across slots) to be kept across1177 requests. They will not be ended with curl_easy_cleanup() until1178 http_cleanup() is invoked. If USE_CURL_MULTI is not defined, this1179 value will be capped at 1. Defaults to 1.11801181http.postBuffer::1182 Maximum size in bytes of the buffer used by smart HTTP1183 transports when POSTing data to the remote system.1184 For requests larger than this buffer size, HTTP/1.1 and1185 Transfer-Encoding: chunked is used to avoid creating a1186 massive pack file locally. Default is 1 MiB, which is1187 sufficient for most requests.11881189http.lowSpeedLimit, http.lowSpeedTime::1190 If the HTTP transfer speed is less than 'http.lowSpeedLimit'1191 for longer than 'http.lowSpeedTime' seconds, the transfer is aborted.1192 Can be overridden by the `GIT_HTTP_LOW_SPEED_LIMIT` and1193 `GIT_HTTP_LOW_SPEED_TIME` environment variables.11941195http.noEPSV::1196 A boolean which disables using of EPSV ftp command by curl.1197 This can helpful with some "poor" ftp servers which don't1198 support EPSV mode. Can be overridden by the `GIT_CURL_FTP_NO_EPSV`1199 environment variable. Default is false (curl will use EPSV).12001201http.userAgent::1202 The HTTP USER_AGENT string presented to an HTTP server. The default1203 value represents the version of the client Git such as git/1.7.1.1204 This option allows you to override this value to a more common value1205 such as Mozilla/4.0. This may be necessary, for instance, if1206 connecting through a firewall that restricts HTTP connections to a set1207 of common USER_AGENT strings (but not including those like git/1.7.1).1208 Can be overridden by the `GIT_HTTP_USER_AGENT` environment variable.12091210http.followRedirects::1211 Whether git should follow HTTP redirects. If set to `true`, git1212 will transparently follow any redirect issued by a server it1213 encounters. If set to `false`, git will treat all redirects as1214 errors. If set to `initial`, git will follow redirects only for1215 the initial request to a remote, but not for subsequent1216 follow-up HTTP requests. Since git uses the redirected URL as1217 the base for the follow-up requests, this is generally1218 sufficient. The default is `initial`.12191220http.<url>.*::1221 Any of the http.* options above can be applied selectively to some URLs.1222 For a config key to match a URL, each element of the config key is1223 compared to that of the URL, in the following order:1224+1225--1226. Scheme (e.g., `https` in `https://example.com/`). This field1227 must match exactly between the config key and the URL.12281229. Host/domain name (e.g., `example.com` in `https://example.com/`).1230 This field must match between the config key and the URL. It is1231 possible to specify a `*` as part of the host name to match all subdomains1232 at this level. `https://*.example.com/` for example would match1233 `https://foo.example.com/`, but not `https://foo.bar.example.com/`.12341235. Port number (e.g., `8080` in `http://example.com:8080/`).1236 This field must match exactly between the config key and the URL.1237 Omitted port numbers are automatically converted to the correct1238 default for the scheme before matching.12391240. Path (e.g., `repo.git` in `https://example.com/repo.git`). The1241 path field of the config key must match the path field of the URL1242 either exactly or as a prefix of slash-delimited path elements. This means1243 a config key with path `foo/` matches URL path `foo/bar`. A prefix can only1244 match on a slash (`/`) boundary. Longer matches take precedence (so a config1245 key with path `foo/bar` is a better match to URL path `foo/bar` than a config1246 key with just path `foo/`).12471248. User name (e.g., `user` in `https://user@example.com/repo.git`). If1249 the config key has a user name it must match the user name in the1250 URL exactly. If the config key does not have a user name, that1251 config key will match a URL with any user name (including none),1252 but at a lower precedence than a config key with a user name.1253--1254+1255The list above is ordered by decreasing precedence; a URL that matches1256a config key's path is preferred to one that matches its user name. For example,1257if the URL is `https://user@example.com/foo/bar` a config key match of1258`https://example.com/foo` will be preferred over a config key match of1259`https://user@example.com`.1260+1261All URLs are normalized before attempting any matching (the password part,1262if embedded in the URL, is always ignored for matching purposes) so that1263equivalent URLs that are simply spelled differently will match properly.1264Environment variable settings always override any matches. The URLs that are1265matched against are those given directly to Git commands. This means any URLs1266visited as a result of a redirection do not participate in matching.12671268ssh.variant::1269 By default, Git determines the command line arguments to use1270 based on the basename of the configured SSH command (configured1271 using the environment variable `GIT_SSH` or `GIT_SSH_COMMAND` or1272 the config setting `core.sshCommand`). If the basename is1273 unrecognized, Git will attempt to detect support of OpenSSH1274 options by first invoking the configured SSH command with the1275 `-G` (print configuration) option and will subsequently use1276 OpenSSH options (if that is successful) or no options besides1277 the host and remote command (if it fails).1278+1279The config variable `ssh.variant` can be set to override this detection.1280Valid values are `ssh` (to use OpenSSH options), `plink`, `putty`,1281`tortoiseplink`, `simple` (no options except the host and remote command).1282The default auto-detection can be explicitly requested using the value1283`auto`. Any other value is treated as `ssh`. This setting can also be1284overridden via the environment variable `GIT_SSH_VARIANT`.1285+1286The current command-line parameters used for each variant are as1287follows:1288+1289--12901291* `ssh` - [-p port] [-4] [-6] [-o option] [username@]host command12921293* `simple` - [username@]host command12941295* `plink` or `putty` - [-P port] [-4] [-6] [username@]host command12961297* `tortoiseplink` - [-P port] [-4] [-6] -batch [username@]host command12981299--1300+1301Except for the `simple` variant, command-line parameters are likely to1302change as git gains new features.13031304i18n.commitEncoding::1305 Character encoding the commit messages are stored in; Git itself1306 does not care per se, but this information is necessary e.g. when1307 importing commits from emails or in the gitk graphical history1308 browser (and possibly at other places in the future or in other1309 porcelains). See e.g. linkgit:git-mailinfo[1]. Defaults to 'utf-8'.13101311i18n.logOutputEncoding::1312 Character encoding the commit messages are converted to when1313 running 'git log' and friends.13141315imap::1316 The configuration variables in the 'imap' section are described1317 in linkgit:git-imap-send[1].13181319index.threads::1320 Specifies the number of threads to spawn when loading the index.1321 This is meant to reduce index load time on multiprocessor machines.1322 Specifying 0 or 'true' will cause Git to auto-detect the number of1323 CPU's and set the number of threads accordingly. Specifying 1 or1324 'false' will disable multithreading. Defaults to 'true'.13251326index.version::1327 Specify the version with which new index files should be1328 initialized. This does not affect existing repositories.13291330init.templateDir::1331 Specify the directory from which templates will be copied.1332 (See the "TEMPLATE DIRECTORY" section of linkgit:git-init[1].)13331334instaweb.browser::1335 Specify the program that will be used to browse your working1336 repository in gitweb. See linkgit:git-instaweb[1].13371338instaweb.httpd::1339 The HTTP daemon command-line to start gitweb on your working1340 repository. See linkgit:git-instaweb[1].13411342instaweb.local::1343 If true the web server started by linkgit:git-instaweb[1] will1344 be bound to the local IP (127.0.0.1).13451346instaweb.modulePath::1347 The default module path for linkgit:git-instaweb[1] to use1348 instead of /usr/lib/apache2/modules. Only used if httpd1349 is Apache.13501351instaweb.port::1352 The port number to bind the gitweb httpd to. See1353 linkgit:git-instaweb[1].13541355interactive.singleKey::1356 In interactive commands, allow the user to provide one-letter1357 input with a single key (i.e., without hitting enter).1358 Currently this is used by the `--patch` mode of1359 linkgit:git-add[1], linkgit:git-checkout[1], linkgit:git-commit[1],1360 linkgit:git-reset[1], and linkgit:git-stash[1]. Note that this1361 setting is silently ignored if portable keystroke input1362 is not available; requires the Perl module Term::ReadKey.13631364interactive.diffFilter::1365 When an interactive command (such as `git add --patch`) shows1366 a colorized diff, git will pipe the diff through the shell1367 command defined by this configuration variable. The command may1368 mark up the diff further for human consumption, provided that it1369 retains a one-to-one correspondence with the lines in the1370 original diff. Defaults to disabled (no filtering).13711372log.abbrevCommit::1373 If true, makes linkgit:git-log[1], linkgit:git-show[1], and1374 linkgit:git-whatchanged[1] assume `--abbrev-commit`. You may1375 override this option with `--no-abbrev-commit`.13761377log.date::1378 Set the default date-time mode for the 'log' command.1379 Setting a value for log.date is similar to using 'git log''s1380 `--date` option. See linkgit:git-log[1] for details.13811382log.decorate::1383 Print out the ref names of any commits that are shown by the log1384 command. If 'short' is specified, the ref name prefixes 'refs/heads/',1385 'refs/tags/' and 'refs/remotes/' will not be printed. If 'full' is1386 specified, the full ref name (including prefix) will be printed.1387 If 'auto' is specified, then if the output is going to a terminal,1388 the ref names are shown as if 'short' were given, otherwise no ref1389 names are shown. This is the same as the `--decorate` option1390 of the `git log`.13911392log.follow::1393 If `true`, `git log` will act as if the `--follow` option was used when1394 a single <path> is given. This has the same limitations as `--follow`,1395 i.e. it cannot be used to follow multiple files and does not work well1396 on non-linear history.13971398log.graphColors::1399 A list of colors, separated by commas, that can be used to draw1400 history lines in `git log --graph`.14011402log.showRoot::1403 If true, the initial commit will be shown as a big creation event.1404 This is equivalent to a diff against an empty tree.1405 Tools like linkgit:git-log[1] or linkgit:git-whatchanged[1], which1406 normally hide the root commit will now show it. True by default.14071408log.showSignature::1409 If true, makes linkgit:git-log[1], linkgit:git-show[1], and1410 linkgit:git-whatchanged[1] assume `--show-signature`.14111412log.mailmap::1413 If true, makes linkgit:git-log[1], linkgit:git-show[1], and1414 linkgit:git-whatchanged[1] assume `--use-mailmap`.14151416mailinfo.scissors::1417 If true, makes linkgit:git-mailinfo[1] (and therefore1418 linkgit:git-am[1]) act by default as if the --scissors option1419 was provided on the command-line. When active, this features1420 removes everything from the message body before a scissors1421 line (i.e. consisting mainly of ">8", "8<" and "-").14221423mailmap.file::1424 The location of an augmenting mailmap file. The default1425 mailmap, located in the root of the repository, is loaded1426 first, then the mailmap file pointed to by this variable.1427 The location of the mailmap file may be in a repository1428 subdirectory, or somewhere outside of the repository itself.1429 See linkgit:git-shortlog[1] and linkgit:git-blame[1].14301431mailmap.blob::1432 Like `mailmap.file`, but consider the value as a reference to a1433 blob in the repository. If both `mailmap.file` and1434 `mailmap.blob` are given, both are parsed, with entries from1435 `mailmap.file` taking precedence. In a bare repository, this1436 defaults to `HEAD:.mailmap`. In a non-bare repository, it1437 defaults to empty.14381439man.viewer::1440 Specify the programs that may be used to display help in the1441 'man' format. See linkgit:git-help[1].14421443man.<tool>.cmd::1444 Specify the command to invoke the specified man viewer. The1445 specified command is evaluated in shell with the man page1446 passed as argument. (See linkgit:git-help[1].)14471448man.<tool>.path::1449 Override the path for the given tool that may be used to1450 display help in the 'man' format. See linkgit:git-help[1].14511452include::merge-config.txt[]14531454mergetool.<tool>.path::1455 Override the path for the given tool. This is useful in case1456 your tool is not in the PATH.14571458mergetool.<tool>.cmd::1459 Specify the command to invoke the specified merge tool. The1460 specified command is evaluated in shell with the following1461 variables available: 'BASE' is the name of a temporary file1462 containing the common base of the files to be merged, if available;1463 'LOCAL' is the name of a temporary file containing the contents of1464 the file on the current branch; 'REMOTE' is the name of a temporary1465 file containing the contents of the file from the branch being1466 merged; 'MERGED' contains the name of the file to which the merge1467 tool should write the results of a successful merge.14681469mergetool.<tool>.trustExitCode::1470 For a custom merge command, specify whether the exit code of1471 the merge command can be used to determine whether the merge was1472 successful. If this is not set to true then the merge target file1473 timestamp is checked and the merge assumed to have been successful1474 if the file has been updated, otherwise the user is prompted to1475 indicate the success of the merge.14761477mergetool.meld.hasOutput::1478 Older versions of `meld` do not support the `--output` option.1479 Git will attempt to detect whether `meld` supports `--output`1480 by inspecting the output of `meld --help`. Configuring1481 `mergetool.meld.hasOutput` will make Git skip these checks and1482 use the configured value instead. Setting `mergetool.meld.hasOutput`1483 to `true` tells Git to unconditionally use the `--output` option,1484 and `false` avoids using `--output`.14851486mergetool.keepBackup::1487 After performing a merge, the original file with conflict markers1488 can be saved as a file with a `.orig` extension. If this variable1489 is set to `false` then this file is not preserved. Defaults to1490 `true` (i.e. keep the backup files).14911492mergetool.keepTemporaries::1493 When invoking a custom merge tool, Git uses a set of temporary1494 files to pass to the tool. If the tool returns an error and this1495 variable is set to `true`, then these temporary files will be1496 preserved, otherwise they will be removed after the tool has1497 exited. Defaults to `false`.14981499mergetool.writeToTemp::1500 Git writes temporary 'BASE', 'LOCAL', and 'REMOTE' versions of1501 conflicting files in the worktree by default. Git will attempt1502 to use a temporary directory for these files when set `true`.1503 Defaults to `false`.15041505mergetool.prompt::1506 Prompt before each invocation of the merge resolution program.15071508notes.mergeStrategy::1509 Which merge strategy to choose by default when resolving notes1510 conflicts. Must be one of `manual`, `ours`, `theirs`, `union`, or1511 `cat_sort_uniq`. Defaults to `manual`. See "NOTES MERGE STRATEGIES"1512 section of linkgit:git-notes[1] for more information on each strategy.15131514notes.<name>.mergeStrategy::1515 Which merge strategy to choose when doing a notes merge into1516 refs/notes/<name>. This overrides the more general1517 "notes.mergeStrategy". See the "NOTES MERGE STRATEGIES" section in1518 linkgit:git-notes[1] for more information on the available strategies.15191520notes.displayRef::1521 The (fully qualified) refname from which to show notes when1522 showing commit messages. The value of this variable can be set1523 to a glob, in which case notes from all matching refs will be1524 shown. You may also specify this configuration variable1525 several times. A warning will be issued for refs that do not1526 exist, but a glob that does not match any refs is silently1527 ignored.1528+1529This setting can be overridden with the `GIT_NOTES_DISPLAY_REF`1530environment variable, which must be a colon separated list of refs or1531globs.1532+1533The effective value of "core.notesRef" (possibly overridden by1534GIT_NOTES_REF) is also implicitly added to the list of refs to be1535displayed.15361537notes.rewrite.<command>::1538 When rewriting commits with <command> (currently `amend` or1539 `rebase`) and this variable is set to `true`, Git1540 automatically copies your notes from the original to the1541 rewritten commit. Defaults to `true`, but see1542 "notes.rewriteRef" below.15431544notes.rewriteMode::1545 When copying notes during a rewrite (see the1546 "notes.rewrite.<command>" option), determines what to do if1547 the target commit already has a note. Must be one of1548 `overwrite`, `concatenate`, `cat_sort_uniq`, or `ignore`.1549 Defaults to `concatenate`.1550+1551This setting can be overridden with the `GIT_NOTES_REWRITE_MODE`1552environment variable.15531554notes.rewriteRef::1555 When copying notes during a rewrite, specifies the (fully1556 qualified) ref whose notes should be copied. The ref may be a1557 glob, in which case notes in all matching refs will be copied.1558 You may also specify this configuration several times.1559+1560Does not have a default value; you must configure this variable to1561enable note rewriting. Set it to `refs/notes/commits` to enable1562rewriting for the default commit notes.1563+1564This setting can be overridden with the `GIT_NOTES_REWRITE_REF`1565environment variable, which must be a colon separated list of refs or1566globs.15671568pack.window::1569 The size of the window used by linkgit:git-pack-objects[1] when no1570 window size is given on the command line. Defaults to 10.15711572pack.depth::1573 The maximum delta depth used by linkgit:git-pack-objects[1] when no1574 maximum depth is given on the command line. Defaults to 50.1575 Maximum value is 4095.15761577pack.windowMemory::1578 The maximum size of memory that is consumed by each thread1579 in linkgit:git-pack-objects[1] for pack window memory when1580 no limit is given on the command line. The value can be1581 suffixed with "k", "m", or "g". When left unconfigured (or1582 set explicitly to 0), there will be no limit.15831584pack.compression::1585 An integer -1..9, indicating the compression level for objects1586 in a pack file. -1 is the zlib default. 0 means no1587 compression, and 1..9 are various speed/size tradeoffs, 9 being1588 slowest. If not set, defaults to core.compression. If that is1589 not set, defaults to -1, the zlib default, which is "a default1590 compromise between speed and compression (currently equivalent1591 to level 6)."1592+1593Note that changing the compression level will not automatically recompress1594all existing objects. You can force recompression by passing the -F option1595to linkgit:git-repack[1].15961597pack.island::1598 An extended regular expression configuring a set of delta1599 islands. See "DELTA ISLANDS" in linkgit:git-pack-objects[1]1600 for details.16011602pack.islandCore::1603 Specify an island name which gets to have its objects be1604 packed first. This creates a kind of pseudo-pack at the front1605 of one pack, so that the objects from the specified island are1606 hopefully faster to copy into any pack that should be served1607 to a user requesting these objects. In practice this means1608 that the island specified should likely correspond to what is1609 the most commonly cloned in the repo. See also "DELTA ISLANDS"1610 in linkgit:git-pack-objects[1].16111612pack.deltaCacheSize::1613 The maximum memory in bytes used for caching deltas in1614 linkgit:git-pack-objects[1] before writing them out to a pack.1615 This cache is used to speed up the writing object phase by not1616 having to recompute the final delta result once the best match1617 for all objects is found. Repacking large repositories on machines1618 which are tight with memory might be badly impacted by this though,1619 especially if this cache pushes the system into swapping.1620 A value of 0 means no limit. The smallest size of 1 byte may be1621 used to virtually disable this cache. Defaults to 256 MiB.16221623pack.deltaCacheLimit::1624 The maximum size of a delta, that is cached in1625 linkgit:git-pack-objects[1]. This cache is used to speed up the1626 writing object phase by not having to recompute the final delta1627 result once the best match for all objects is found.1628 Defaults to 1000. Maximum value is 65535.16291630pack.threads::1631 Specifies the number of threads to spawn when searching for best1632 delta matches. This requires that linkgit:git-pack-objects[1]1633 be compiled with pthreads otherwise this option is ignored with a1634 warning. This is meant to reduce packing time on multiprocessor1635 machines. The required amount of memory for the delta search window1636 is however multiplied by the number of threads.1637 Specifying 0 will cause Git to auto-detect the number of CPU's1638 and set the number of threads accordingly.16391640pack.indexVersion::1641 Specify the default pack index version. Valid values are 1 for1642 legacy pack index used by Git versions prior to 1.5.2, and 2 for1643 the new pack index with capabilities for packs larger than 4 GB1644 as well as proper protection against the repacking of corrupted1645 packs. Version 2 is the default. Note that version 2 is enforced1646 and this config option ignored whenever the corresponding pack is1647 larger than 2 GB.1648+1649If you have an old Git that does not understand the version 2 `*.idx` file,1650cloning or fetching over a non native protocol (e.g. "http")1651that will copy both `*.pack` file and corresponding `*.idx` file from the1652other side may give you a repository that cannot be accessed with your1653older version of Git. If the `*.pack` file is smaller than 2 GB, however,1654you can use linkgit:git-index-pack[1] on the *.pack file to regenerate1655the `*.idx` file.16561657pack.packSizeLimit::1658 The maximum size of a pack. This setting only affects1659 packing to a file when repacking, i.e. the git:// protocol1660 is unaffected. It can be overridden by the `--max-pack-size`1661 option of linkgit:git-repack[1]. Reaching this limit results1662 in the creation of multiple packfiles; which in turn prevents1663 bitmaps from being created.1664 The minimum size allowed is limited to 1 MiB.1665 The default is unlimited.1666 Common unit suffixes of 'k', 'm', or 'g' are1667 supported.16681669pack.useBitmaps::1670 When true, git will use pack bitmaps (if available) when packing1671 to stdout (e.g., during the server side of a fetch). Defaults to1672 true. You should not generally need to turn this off unless1673 you are debugging pack bitmaps.16741675pack.writeBitmaps (deprecated)::1676 This is a deprecated synonym for `repack.writeBitmaps`.16771678pack.writeBitmapHashCache::1679 When true, git will include a "hash cache" section in the bitmap1680 index (if one is written). This cache can be used to feed git's1681 delta heuristics, potentially leading to better deltas between1682 bitmapped and non-bitmapped objects (e.g., when serving a fetch1683 between an older, bitmapped pack and objects that have been1684 pushed since the last gc). The downside is that it consumes 41685 bytes per object of disk space, and that JGit's bitmap1686 implementation does not understand it, causing it to complain if1687 Git and JGit are used on the same repository. Defaults to false.16881689pager.<cmd>::1690 If the value is boolean, turns on or off pagination of the1691 output of a particular Git subcommand when writing to a tty.1692 Otherwise, turns on pagination for the subcommand using the1693 pager specified by the value of `pager.<cmd>`. If `--paginate`1694 or `--no-pager` is specified on the command line, it takes1695 precedence over this option. To disable pagination for all1696 commands, set `core.pager` or `GIT_PAGER` to `cat`.16971698pretty.<name>::1699 Alias for a --pretty= format string, as specified in1700 linkgit:git-log[1]. Any aliases defined here can be used just1701 as the built-in pretty formats could. For example,1702 running `git config pretty.changelog "format:* %H %s"`1703 would cause the invocation `git log --pretty=changelog`1704 to be equivalent to running `git log "--pretty=format:* %H %s"`.1705 Note that an alias with the same name as a built-in format1706 will be silently ignored.17071708protocol.allow::1709 If set, provide a user defined default policy for all protocols which1710 don't explicitly have a policy (`protocol.<name>.allow`). By default,1711 if unset, known-safe protocols (http, https, git, ssh, file) have a1712 default policy of `always`, known-dangerous protocols (ext) have a1713 default policy of `never`, and all other protocols have a default1714 policy of `user`. Supported policies:1715+1716--17171718* `always` - protocol is always able to be used.17191720* `never` - protocol is never able to be used.17211722* `user` - protocol is only able to be used when `GIT_PROTOCOL_FROM_USER` is1723 either unset or has a value of 1. This policy should be used when you want a1724 protocol to be directly usable by the user but don't want it used by commands which1725 execute clone/fetch/push commands without user input, e.g. recursive1726 submodule initialization.17271728--17291730protocol.<name>.allow::1731 Set a policy to be used by protocol `<name>` with clone/fetch/push1732 commands. See `protocol.allow` above for the available policies.1733+1734The protocol names currently used by git are:1735+1736--1737 - `file`: any local file-based path (including `file://` URLs,1738 or local paths)17391740 - `git`: the anonymous git protocol over a direct TCP1741 connection (or proxy, if configured)17421743 - `ssh`: git over ssh (including `host:path` syntax,1744 `ssh://`, etc).17451746 - `http`: git over http, both "smart http" and "dumb http".1747 Note that this does _not_ include `https`; if you want to configure1748 both, you must do so individually.17491750 - any external helpers are named by their protocol (e.g., use1751 `hg` to allow the `git-remote-hg` helper)1752--17531754protocol.version::1755 Experimental. If set, clients will attempt to communicate with a1756 server using the specified protocol version. If unset, no1757 attempt will be made by the client to communicate using a1758 particular protocol version, this results in protocol version 01759 being used.1760 Supported versions:1761+1762--17631764* `0` - the original wire protocol.17651766* `1` - the original wire protocol with the addition of a version string1767 in the initial response from the server.17681769* `2` - link:technical/protocol-v2.html[wire protocol version 2].17701771--17721773include::pull-config.txt[]17741775include::push-config.txt[]17761777include::rebase-config.txt[]17781779include::receive-config.txt[]17801781remote.pushDefault::1782 The remote to push to by default. Overrides1783 `branch.<name>.remote` for all branches, and is overridden by1784 `branch.<name>.pushRemote` for specific branches.17851786remote.<name>.url::1787 The URL of a remote repository. See linkgit:git-fetch[1] or1788 linkgit:git-push[1].17891790remote.<name>.pushurl::1791 The push URL of a remote repository. See linkgit:git-push[1].17921793remote.<name>.proxy::1794 For remotes that require curl (http, https and ftp), the URL to1795 the proxy to use for that remote. Set to the empty string to1796 disable proxying for that remote.17971798remote.<name>.proxyAuthMethod::1799 For remotes that require curl (http, https and ftp), the method to use for1800 authenticating against the proxy in use (probably set in1801 `remote.<name>.proxy`). See `http.proxyAuthMethod`.18021803remote.<name>.fetch::1804 The default set of "refspec" for linkgit:git-fetch[1]. See1805 linkgit:git-fetch[1].18061807remote.<name>.push::1808 The default set of "refspec" for linkgit:git-push[1]. See1809 linkgit:git-push[1].18101811remote.<name>.mirror::1812 If true, pushing to this remote will automatically behave1813 as if the `--mirror` option was given on the command line.18141815remote.<name>.skipDefaultUpdate::1816 If true, this remote will be skipped by default when updating1817 using linkgit:git-fetch[1] or the `update` subcommand of1818 linkgit:git-remote[1].18191820remote.<name>.skipFetchAll::1821 If true, this remote will be skipped by default when updating1822 using linkgit:git-fetch[1] or the `update` subcommand of1823 linkgit:git-remote[1].18241825remote.<name>.receivepack::1826 The default program to execute on the remote side when pushing. See1827 option --receive-pack of linkgit:git-push[1].18281829remote.<name>.uploadpack::1830 The default program to execute on the remote side when fetching. See1831 option --upload-pack of linkgit:git-fetch-pack[1].18321833remote.<name>.tagOpt::1834 Setting this value to --no-tags disables automatic tag following when1835 fetching from remote <name>. Setting it to --tags will fetch every1836 tag from remote <name>, even if they are not reachable from remote1837 branch heads. Passing these flags directly to linkgit:git-fetch[1] can1838 override this setting. See options --tags and --no-tags of1839 linkgit:git-fetch[1].18401841remote.<name>.vcs::1842 Setting this to a value <vcs> will cause Git to interact with1843 the remote with the git-remote-<vcs> helper.18441845remote.<name>.prune::1846 When set to true, fetching from this remote by default will also1847 remove any remote-tracking references that no longer exist on the1848 remote (as if the `--prune` option was given on the command line).1849 Overrides `fetch.prune` settings, if any.18501851remote.<name>.pruneTags::1852 When set to true, fetching from this remote by default will also1853 remove any local tags that no longer exist on the remote if pruning1854 is activated in general via `remote.<name>.prune`, `fetch.prune` or1855 `--prune`. Overrides `fetch.pruneTags` settings, if any.1856+1857See also `remote.<name>.prune` and the PRUNING section of1858linkgit:git-fetch[1].18591860remotes.<group>::1861 The list of remotes which are fetched by "git remote update1862 <group>". See linkgit:git-remote[1].18631864repack.useDeltaBaseOffset::1865 By default, linkgit:git-repack[1] creates packs that use1866 delta-base offset. If you need to share your repository with1867 Git older than version 1.4.4, either directly or via a dumb1868 protocol such as http, then you need to set this option to1869 "false" and repack. Access from old Git versions over the1870 native protocol are unaffected by this option.18711872repack.packKeptObjects::1873 If set to true, makes `git repack` act as if1874 `--pack-kept-objects` was passed. See linkgit:git-repack[1] for1875 details. Defaults to `false` normally, but `true` if a bitmap1876 index is being written (either via `--write-bitmap-index` or1877 `repack.writeBitmaps`).18781879repack.useDeltaIslands::1880 If set to true, makes `git repack` act as if `--delta-islands`1881 was passed. Defaults to `false`.18821883repack.writeBitmaps::1884 When true, git will write a bitmap index when packing all1885 objects to disk (e.g., when `git repack -a` is run). This1886 index can speed up the "counting objects" phase of subsequent1887 packs created for clones and fetches, at the cost of some disk1888 space and extra time spent on the initial repack. This has1889 no effect if multiple packfiles are created.1890 Defaults to false.18911892rerere.autoUpdate::1893 When set to true, `git-rerere` updates the index with the1894 resulting contents after it cleanly resolves conflicts using1895 previously recorded resolution. Defaults to false.18961897rerere.enabled::1898 Activate recording of resolved conflicts, so that identical1899 conflict hunks can be resolved automatically, should they be1900 encountered again. By default, linkgit:git-rerere[1] is1901 enabled if there is an `rr-cache` directory under the1902 `$GIT_DIR`, e.g. if "rerere" was previously used in the1903 repository.19041905reset.quiet::1906 When set to true, 'git reset' will default to the '--quiet' option.19071908include::sendemail-config.txt[]19091910sequence.editor::1911 Text editor used by `git rebase -i` for editing the rebase instruction file.1912 The value is meant to be interpreted by the shell when it is used.1913 It can be overridden by the `GIT_SEQUENCE_EDITOR` environment variable.1914 When not configured the default commit message editor is used instead.19151916showBranch.default::1917 The default set of branches for linkgit:git-show-branch[1].1918 See linkgit:git-show-branch[1].19191920splitIndex.maxPercentChange::1921 When the split index feature is used, this specifies the1922 percent of entries the split index can contain compared to the1923 total number of entries in both the split index and the shared1924 index before a new shared index is written.1925 The value should be between 0 and 100. If the value is 0 then1926 a new shared index is always written, if it is 100 a new1927 shared index is never written.1928 By default the value is 20, so a new shared index is written1929 if the number of entries in the split index would be greater1930 than 20 percent of the total number of entries.1931 See linkgit:git-update-index[1].19321933splitIndex.sharedIndexExpire::1934 When the split index feature is used, shared index files that1935 were not modified since the time this variable specifies will1936 be removed when a new shared index file is created. The value1937 "now" expires all entries immediately, and "never" suppresses1938 expiration altogether.1939 The default value is "2.weeks.ago".1940 Note that a shared index file is considered modified (for the1941 purpose of expiration) each time a new split-index file is1942 either created based on it or read from it.1943 See linkgit:git-update-index[1].19441945status.relativePaths::1946 By default, linkgit:git-status[1] shows paths relative to the1947 current directory. Setting this variable to `false` shows paths1948 relative to the repository root (this was the default for Git1949 prior to v1.5.4).19501951status.short::1952 Set to true to enable --short by default in linkgit:git-status[1].1953 The option --no-short takes precedence over this variable.19541955status.branch::1956 Set to true to enable --branch by default in linkgit:git-status[1].1957 The option --no-branch takes precedence over this variable.19581959status.displayCommentPrefix::1960 If set to true, linkgit:git-status[1] will insert a comment1961 prefix before each output line (starting with1962 `core.commentChar`, i.e. `#` by default). This was the1963 behavior of linkgit:git-status[1] in Git 1.8.4 and previous.1964 Defaults to false.19651966status.renameLimit::1967 The number of files to consider when performing rename detection1968 in linkgit:git-status[1] and linkgit:git-commit[1]. Defaults to1969 the value of diff.renameLimit.19701971status.renames::1972 Whether and how Git detects renames in linkgit:git-status[1] and1973 linkgit:git-commit[1] . If set to "false", rename detection is1974 disabled. If set to "true", basic rename detection is enabled.1975 If set to "copies" or "copy", Git will detect copies, as well.1976 Defaults to the value of diff.renames.19771978status.showStash::1979 If set to true, linkgit:git-status[1] will display the number of1980 entries currently stashed away.1981 Defaults to false.19821983status.showUntrackedFiles::1984 By default, linkgit:git-status[1] and linkgit:git-commit[1] show1985 files which are not currently tracked by Git. Directories which1986 contain only untracked files, are shown with the directory name1987 only. Showing untracked files means that Git needs to lstat() all1988 the files in the whole repository, which might be slow on some1989 systems. So, this variable controls how the commands displays1990 the untracked files. Possible values are:1991+1992--1993* `no` - Show no untracked files.1994* `normal` - Show untracked files and directories.1995* `all` - Show also individual files in untracked directories.1996--1997+1998If this variable is not specified, it defaults to 'normal'.1999This variable can be overridden with the -u|--untracked-files option2000of linkgit:git-status[1] and linkgit:git-commit[1].20012002status.submoduleSummary::2003 Defaults to false.2004 If this is set to a non zero number or true (identical to -1 or an2005 unlimited number), the submodule summary will be enabled and a2006 summary of commits for modified submodules will be shown (see2007 --summary-limit option of linkgit:git-submodule[1]). Please note2008 that the summary output command will be suppressed for all2009 submodules when `diff.ignoreSubmodules` is set to 'all' or only2010 for those submodules where `submodule.<name>.ignore=all`. The only2011 exception to that rule is that status and commit will show staged2012 submodule changes. To2013 also view the summary for ignored submodules you can either use2014 the --ignore-submodules=dirty command-line option or the 'git2015 submodule summary' command, which shows a similar output but does2016 not honor these settings.20172018stash.showPatch::2019 If this is set to true, the `git stash show` command without an2020 option will show the stash entry in patch form. Defaults to false.2021 See description of 'show' command in linkgit:git-stash[1].20222023stash.showStat::2024 If this is set to true, the `git stash show` command without an2025 option will show diffstat of the stash entry. Defaults to true.2026 See description of 'show' command in linkgit:git-stash[1].20272028include::submodule-config.txt[]20292030tag.forceSignAnnotated::2031 A boolean to specify whether annotated tags created should be GPG signed.2032 If `--annotate` is specified on the command line, it takes2033 precedence over this option.20342035tag.sort::2036 This variable controls the sort ordering of tags when displayed by2037 linkgit:git-tag[1]. Without the "--sort=<value>" option provided, the2038 value of this variable will be used as the default.20392040tar.umask::2041 This variable can be used to restrict the permission bits of2042 tar archive entries. The default is 0002, which turns off the2043 world write bit. The special value "user" indicates that the2044 archiving user's umask will be used instead. See umask(2) and2045 linkgit:git-archive[1].20462047transfer.fsckObjects::2048 When `fetch.fsckObjects` or `receive.fsckObjects` are2049 not set, the value of this variable is used instead.2050 Defaults to false.2051+2052When set, the fetch or receive will abort in the case of a malformed2053object or a link to a nonexistent object. In addition, various other2054issues are checked for, including legacy issues (see `fsck.<msg-id>`),2055and potential security issues like the existence of a `.GIT` directory2056or a malicious `.gitmodules` file (see the release notes for v2.2.12057and v2.17.1 for details). Other sanity and security checks may be2058added in future releases.2059+2060On the receiving side, failing fsckObjects will make those objects2061unreachable, see "QUARANTINE ENVIRONMENT" in2062linkgit:git-receive-pack[1]. On the fetch side, malformed objects will2063instead be left unreferenced in the repository.2064+2065Due to the non-quarantine nature of the `fetch.fsckObjects`2066implementation it can not be relied upon to leave the object store2067clean like `receive.fsckObjects` can.2068+2069As objects are unpacked they're written to the object store, so there2070can be cases where malicious objects get introduced even though the2071"fetch" failed, only to have a subsequent "fetch" succeed because only2072new incoming objects are checked, not those that have already been2073written to the object store. That difference in behavior should not be2074relied upon. In the future, such objects may be quarantined for2075"fetch" as well.2076+2077For now, the paranoid need to find some way to emulate the quarantine2078environment if they'd like the same protection as "push". E.g. in the2079case of an internal mirror do the mirroring in two steps, one to fetch2080the untrusted objects, and then do a second "push" (which will use the2081quarantine) to another internal repo, and have internal clients2082consume this pushed-to repository, or embargo internal fetches and2083only allow them once a full "fsck" has run (and no new fetches have2084happened in the meantime).20852086transfer.hideRefs::2087 String(s) `receive-pack` and `upload-pack` use to decide which2088 refs to omit from their initial advertisements. Use more than2089 one definition to specify multiple prefix strings. A ref that is2090 under the hierarchies listed in the value of this variable is2091 excluded, and is hidden when responding to `git push` or `git2092 fetch`. See `receive.hideRefs` and `uploadpack.hideRefs` for2093 program-specific versions of this config.2094+2095You may also include a `!` in front of the ref name to negate the entry,2096explicitly exposing it, even if an earlier entry marked it as hidden.2097If you have multiple hideRefs values, later entries override earlier ones2098(and entries in more-specific config files override less-specific ones).2099+2100If a namespace is in use, the namespace prefix is stripped from each2101reference before it is matched against `transfer.hiderefs` patterns.2102For example, if `refs/heads/master` is specified in `transfer.hideRefs` and2103the current namespace is `foo`, then `refs/namespaces/foo/refs/heads/master`2104is omitted from the advertisements but `refs/heads/master` and2105`refs/namespaces/bar/refs/heads/master` are still advertised as so-called2106"have" lines. In order to match refs before stripping, add a `^` in front of2107the ref name. If you combine `!` and `^`, `!` must be specified first.2108+2109Even if you hide refs, a client may still be able to steal the target2110objects via the techniques described in the "SECURITY" section of the2111linkgit:gitnamespaces[7] man page; it's best to keep private data in a2112separate repository.21132114transfer.unpackLimit::2115 When `fetch.unpackLimit` or `receive.unpackLimit` are2116 not set, the value of this variable is used instead.2117 The default value is 100.21182119uploadarchive.allowUnreachable::2120 If true, allow clients to use `git archive --remote` to request2121 any tree, whether reachable from the ref tips or not. See the2122 discussion in the "SECURITY" section of2123 linkgit:git-upload-archive[1] for more details. Defaults to2124 `false`.21252126uploadpack.hideRefs::2127 This variable is the same as `transfer.hideRefs`, but applies2128 only to `upload-pack` (and so affects only fetches, not pushes).2129 An attempt to fetch a hidden ref by `git fetch` will fail. See2130 also `uploadpack.allowTipSHA1InWant`.21312132uploadpack.allowTipSHA1InWant::2133 When `uploadpack.hideRefs` is in effect, allow `upload-pack`2134 to accept a fetch request that asks for an object at the tip2135 of a hidden ref (by default, such a request is rejected).2136 See also `uploadpack.hideRefs`. Even if this is false, a client2137 may be able to steal objects via the techniques described in the2138 "SECURITY" section of the linkgit:gitnamespaces[7] man page; it's2139 best to keep private data in a separate repository.21402141uploadpack.allowReachableSHA1InWant::2142 Allow `upload-pack` to accept a fetch request that asks for an2143 object that is reachable from any ref tip. However, note that2144 calculating object reachability is computationally expensive.2145 Defaults to `false`. Even if this is false, a client may be able2146 to steal objects via the techniques described in the "SECURITY"2147 section of the linkgit:gitnamespaces[7] man page; it's best to2148 keep private data in a separate repository.21492150uploadpack.allowAnySHA1InWant::2151 Allow `upload-pack` to accept a fetch request that asks for any2152 object at all.2153 Defaults to `false`.21542155uploadpack.keepAlive::2156 When `upload-pack` has started `pack-objects`, there may be a2157 quiet period while `pack-objects` prepares the pack. Normally2158 it would output progress information, but if `--quiet` was used2159 for the fetch, `pack-objects` will output nothing at all until2160 the pack data begins. Some clients and networks may consider2161 the server to be hung and give up. Setting this option instructs2162 `upload-pack` to send an empty keepalive packet every2163 `uploadpack.keepAlive` seconds. Setting this option to 02164 disables keepalive packets entirely. The default is 5 seconds.21652166uploadpack.packObjectsHook::2167 If this option is set, when `upload-pack` would run2168 `git pack-objects` to create a packfile for a client, it will2169 run this shell command instead. The `pack-objects` command and2170 arguments it _would_ have run (including the `git pack-objects`2171 at the beginning) are appended to the shell command. The stdin2172 and stdout of the hook are treated as if `pack-objects` itself2173 was run. I.e., `upload-pack` will feed input intended for2174 `pack-objects` to the hook, and expects a completed packfile on2175 stdout.2176+2177Note that this configuration variable is ignored if it is seen in the2178repository-level config (this is a safety measure against fetching from2179untrusted repositories).21802181uploadpack.allowFilter::2182 If this option is set, `upload-pack` will support partial2183 clone and partial fetch object filtering.21842185uploadpack.allowRefInWant::2186 If this option is set, `upload-pack` will support the `ref-in-want`2187 feature of the protocol version 2 `fetch` command. This feature2188 is intended for the benefit of load-balanced servers which may2189 not have the same view of what OIDs their refs point to due to2190 replication delay.21912192url.<base>.insteadOf::2193 Any URL that starts with this value will be rewritten to2194 start, instead, with <base>. In cases where some site serves a2195 large number of repositories, and serves them with multiple2196 access methods, and some users need to use different access2197 methods, this feature allows people to specify any of the2198 equivalent URLs and have Git automatically rewrite the URL to2199 the best alternative for the particular user, even for a2200 never-before-seen repository on the site. When more than one2201 insteadOf strings match a given URL, the longest match is used.2202+2203Note that any protocol restrictions will be applied to the rewritten2204URL. If the rewrite changes the URL to use a custom protocol or remote2205helper, you may need to adjust the `protocol.*.allow` config to permit2206the request. In particular, protocols you expect to use for submodules2207must be set to `always` rather than the default of `user`. See the2208description of `protocol.allow` above.22092210url.<base>.pushInsteadOf::2211 Any URL that starts with this value will not be pushed to;2212 instead, it will be rewritten to start with <base>, and the2213 resulting URL will be pushed to. In cases where some site serves2214 a large number of repositories, and serves them with multiple2215 access methods, some of which do not allow push, this feature2216 allows people to specify a pull-only URL and have Git2217 automatically use an appropriate URL to push, even for a2218 never-before-seen repository on the site. When more than one2219 pushInsteadOf strings match a given URL, the longest match is2220 used. If a remote has an explicit pushurl, Git will ignore this2221 setting for that remote.22222223user.email::2224 Your email address to be recorded in any newly created commits.2225 Can be overridden by the `GIT_AUTHOR_EMAIL`, `GIT_COMMITTER_EMAIL`, and2226 `EMAIL` environment variables. See linkgit:git-commit-tree[1].22272228user.name::2229 Your full name to be recorded in any newly created commits.2230 Can be overridden by the `GIT_AUTHOR_NAME` and `GIT_COMMITTER_NAME`2231 environment variables. See linkgit:git-commit-tree[1].22322233user.useConfigOnly::2234 Instruct Git to avoid trying to guess defaults for `user.email`2235 and `user.name`, and instead retrieve the values only from the2236 configuration. For example, if you have multiple email addresses2237 and would like to use a different one for each repository, then2238 with this configuration option set to `true` in the global config2239 along with a name, Git will prompt you to set up an email before2240 making new commits in a newly cloned repository.2241 Defaults to `false`.22422243user.signingKey::2244 If linkgit:git-tag[1] or linkgit:git-commit[1] is not selecting the2245 key you want it to automatically when creating a signed tag or2246 commit, you can override the default selection with this variable.2247 This option is passed unchanged to gpg's --local-user parameter,2248 so you may specify a key using any method that gpg supports.22492250versionsort.prereleaseSuffix (deprecated)::2251 Deprecated alias for `versionsort.suffix`. Ignored if2252 `versionsort.suffix` is set.22532254versionsort.suffix::2255 Even when version sort is used in linkgit:git-tag[1], tagnames2256 with the same base version but different suffixes are still sorted2257 lexicographically, resulting e.g. in prerelease tags appearing2258 after the main release (e.g. "1.0-rc1" after "1.0"). This2259 variable can be specified to determine the sorting order of tags2260 with different suffixes.2261+2262By specifying a single suffix in this variable, any tagname containing2263that suffix will appear before the corresponding main release. E.g. if2264the variable is set to "-rc", then all "1.0-rcX" tags will appear before2265"1.0". If specified multiple times, once per suffix, then the order of2266suffixes in the configuration will determine the sorting order of tagnames2267with those suffixes. E.g. if "-pre" appears before "-rc" in the2268configuration, then all "1.0-preX" tags will be listed before any2269"1.0-rcX" tags. The placement of the main release tag relative to tags2270with various suffixes can be determined by specifying the empty suffix2271among those other suffixes. E.g. if the suffixes "-rc", "", "-ck" and2272"-bfs" appear in the configuration in this order, then all "v4.8-rcX" tags2273are listed first, followed by "v4.8", then "v4.8-ckX" and finally2274"v4.8-bfsX".2275+2276If more than one suffixes match the same tagname, then that tagname will2277be sorted according to the suffix which starts at the earliest position in2278the tagname. If more than one different matching suffixes start at2279that earliest position, then that tagname will be sorted according to the2280longest of those suffixes.2281The sorting order between different suffixes is undefined if they are2282in multiple config files.22832284web.browser::2285 Specify a web browser that may be used by some commands.2286 Currently only linkgit:git-instaweb[1] and linkgit:git-help[1]2287 may use it.22882289worktree.guessRemote::2290 With `add`, if no branch argument, and neither of `-b` nor2291 `-B` nor `--detach` are given, the command defaults to2292 creating a new branch from HEAD. If `worktree.guessRemote` is2293 set to true, `worktree add` tries to find a remote-tracking2294 branch whose name uniquely matches the new branch name. If2295 such a branch exists, it is checked out and set as "upstream"2296 for the new branch. If no such match can be found, it falls2297 back to creating a new branch from the current HEAD.