1CONFIGURATION FILE 2------------------ 3 4The Git configuration file contains a number of variables that affect 5the Git commands' behavior. The `.git/config` file in each repository 6is used to store the configuration for that repository, and 7`$HOME/.gitconfig` is used to store a per-user configuration as 8fallback values for the `.git/config` file. The file `/etc/gitconfig` 9can be used to store a system-wide default configuration. 10 11The configuration variables are used by both the Git plumbing 12and the porcelains. The variables are divided into sections, wherein 13the fully qualified variable name of the variable itself is the last 14dot-separated segment and the section name is everything before the last 15dot. The variable names are case-insensitive, allow only alphanumeric 16characters and `-`, and must start with an alphabetic character. Some 17variables may appear multiple times; we say then that the variable is 18multivalued. 19 20Syntax 21~~~~~~ 22 23The syntax is fairly flexible and permissive; whitespaces are mostly 24ignored. The '#' and ';' characters begin comments to the end of line, 25blank lines are ignored. 26 27The file consists of sections and variables. A section begins with 28the name of the section in square brackets and continues until the next 29section begins. Section names are case-insensitive. Only alphanumeric 30characters, `-` and `.` are allowed in section names. Each variable 31must belong to some section, which means that there must be a section 32header before the first setting of a variable. 33 34Sections can be further divided into subsections. To begin a subsection 35put its name in double quotes, separated by space from the section name, 36in the section header, like in the example below: 37 38-------- 39 [section "subsection"] 40 41-------- 42 43Subsection names are case sensitive and can contain any characters except 44newline and the null byte. Doublequote `"` and backslash can be included 45by escaping them as `\"` and `\\`, respectively. Backslashes preceding 46other characters are dropped when reading; for example, `\t` is read as 47`t` and `\0` is read as `0` Section headers cannot span multiple lines. 48Variables may belong directly to a section or to a given subsection. You 49can have `[section]` if you have `[section "subsection"]`, but you don't 50need to. 51 52There is also a deprecated `[section.subsection]` syntax. With this 53syntax, the subsection name is converted to lower-case and is also 54compared case sensitively. These subsection names follow the same 55restrictions as section names. 56 57All the other lines (and the remainder of the line after the section 58header) are recognized as setting variables, in the form 59'name = value' (or just 'name', which is a short-hand to say that 60the variable is the boolean "true"). 61The variable names are case-insensitive, allow only alphanumeric characters 62and `-`, and must start with an alphabetic character. 63 64A line that defines a value can be continued to the next line by 65ending it with a `\`; the backquote and the end-of-line are 66stripped. Leading whitespaces after 'name =', the remainder of the 67line after the first comment character '#' or ';', and trailing 68whitespaces of the line are discarded unless they are enclosed in 69double quotes. Internal whitespaces within the value are retained 70verbatim. 71 72Inside double quotes, double quote `"` and backslash `\` characters 73must be escaped: use `\"` for `"` and `\\` for `\`. 74 75The following escape sequences (beside `\"` and `\\`) are recognized: 76`\n` for newline character (NL), `\t` for horizontal tabulation (HT, TAB) 77and `\b` for backspace (BS). Other char escape sequences (including octal 78escape sequences) are invalid. 79 80 81Includes 82~~~~~~~~ 83 84The `include` and `includeIf` sections allow you to include config 85directives from another source. These sections behave identically to 86each other with the exception that `includeIf` sections may be ignored 87if their condition does not evaluate to true; see "Conditional includes" 88below. 89 90You can include a config file from another by setting the special 91`include.path` (or `includeIf.*.path`) variable to the name of the file 92to be included. The variable takes a pathname as its value, and is 93subject to tilde expansion. These variables can be given multiple times. 94 95The contents of the included file are inserted immediately, as if they 96had been found at the location of the include directive. If the value of the 97variable is a relative path, the path is considered to 98be relative to the configuration file in which the include directive 99was found. See below for examples. 100 101Conditional includes 102~~~~~~~~~~~~~~~~~~~~ 103 104You can include a config file from another conditionally by setting a 105`includeIf.<condition>.path` variable to the name of the file to be 106included. 107 108The condition starts with a keyword followed by a colon and some data 109whose format and meaning depends on the keyword. Supported keywords 110are: 111 112`gitdir`:: 113 114 The data that follows the keyword `gitdir:` is used as a glob 115 pattern. If the location of the .git directory matches the 116 pattern, the include condition is met. 117+ 118The .git location may be auto-discovered, or come from `$GIT_DIR` 119environment variable. If the repository is auto discovered via a .git 120file (e.g. from submodules, or a linked worktree), the .git location 121would be the final location where the .git directory is, not where the 122.git file is. 123+ 124The pattern can contain standard globbing wildcards and two additional 125ones, `**/` and `/**`, that can match multiple path components. Please 126refer to linkgit:gitignore[5] for details. For convenience: 127 128 * If the pattern starts with `~/`, `~` will be substituted with the 129 content of the environment variable `HOME`. 130 131 * If the pattern starts with `./`, it is replaced with the directory 132 containing the current config file. 133 134 * If the pattern does not start with either `~/`, `./` or `/`, `**/` 135 will be automatically prepended. For example, the pattern `foo/bar` 136 becomes `**/foo/bar` and would match `/any/path/to/foo/bar`. 137 138 * If the pattern ends with `/`, `**` will be automatically added. For 139 example, the pattern `foo/` becomes `foo/**`. In other words, it 140 matches "foo" and everything inside, recursively. 141 142`gitdir/i`:: 143 This is the same as `gitdir` except that matching is done 144 case-insensitively (e.g. on case-insensitive file sytems) 145 146A few more notes on matching via `gitdir` and `gitdir/i`: 147 148 * Symlinks in `$GIT_DIR` are not resolved before matching. 149 150 * Both the symlink & realpath versions of paths will be matched 151 outside of `$GIT_DIR`. E.g. if ~/git is a symlink to 152 /mnt/storage/git, both `gitdir:~/git` and `gitdir:/mnt/storage/git` 153 will match. 154+ 155This was not the case in the initial release of this feature in 156v2.13.0, which only matched the realpath version. Configuration that 157wants to be compatible with the initial release of this feature needs 158to either specify only the realpath version, or both versions. 159 160 * Note that "../" is not special and will match literally, which is 161 unlikely what you want. 162 163Example 164~~~~~~~ 165 166 # Core variables 167 [core] 168 ; Don't trust file modes 169 filemode = false 170 171 # Our diff algorithm 172 [diff] 173 external = /usr/local/bin/diff-wrapper 174 renames = true 175 176 [branch "devel"] 177 remote = origin 178 merge = refs/heads/devel 179 180 # Proxy settings 181 [core] 182 gitProxy="ssh" for "kernel.org" 183 gitProxy=default-proxy ; for the rest 184 185 [include] 186 path = /path/to/foo.inc ; include by absolute path 187 path = foo.inc ; find "foo.inc" relative to the current file 188 path = ~/foo.inc ; find "foo.inc" in your `$HOME` directory 189 190 ; include if $GIT_DIR is /path/to/foo/.git 191 [includeIf "gitdir:/path/to/foo/.git"] 192 path = /path/to/foo.inc 193 194 ; include for all repositories inside /path/to/group 195 [includeIf "gitdir:/path/to/group/"] 196 path = /path/to/foo.inc 197 198 ; include for all repositories inside $HOME/to/group 199 [includeIf "gitdir:~/to/group/"] 200 path = /path/to/foo.inc 201 202 ; relative paths are always relative to the including 203 ; file (if the condition is true); their location is not 204 ; affected by the condition 205 [includeIf "gitdir:/path/to/group/"] 206 path = foo.inc 207 208Values 209~~~~~~ 210 211Values of many variables are treated as a simple string, but there 212are variables that take values of specific types and there are rules 213as to how to spell them. 214 215boolean:: 216 217 When a variable is said to take a boolean value, many 218 synonyms are accepted for 'true' and 'false'; these are all 219 case-insensitive. 220 221 true;; Boolean true literals are `yes`, `on`, `true`, 222 and `1`. Also, a variable defined without `= <value>` 223 is taken as true. 224 225 false;; Boolean false literals are `no`, `off`, `false`, 226 `0` and the empty string. 227+ 228When converting a value to its canonical form using the `--type=bool` type 229specifier, 'git config' will ensure that the output is "true" or 230"false" (spelled in lowercase). 231 232integer:: 233 The value for many variables that specify various sizes can 234 be suffixed with `k`, `M`,... to mean "scale the number by 235 1024", "by 1024x1024", etc. 236 237color:: 238 The value for a variable that takes a color is a list of 239 colors (at most two, one for foreground and one for background) 240 and attributes (as many as you want), separated by spaces. 241+ 242The basic colors accepted are `normal`, `black`, `red`, `green`, `yellow`, 243`blue`, `magenta`, `cyan` and `white`. The first color given is the 244foreground; the second is the background. 245+ 246Colors may also be given as numbers between 0 and 255; these use ANSI 247256-color mode (but note that not all terminals may support this). If 248your terminal supports it, you may also specify 24-bit RGB values as 249hex, like `#ff0ab3`. 250+ 251The accepted attributes are `bold`, `dim`, `ul`, `blink`, `reverse`, 252`italic`, and `strike` (for crossed-out or "strikethrough" letters). 253The position of any attributes with respect to the colors 254(before, after, or in between), doesn't matter. Specific attributes may 255be turned off by prefixing them with `no` or `no-` (e.g., `noreverse`, 256`no-ul`, etc). 257+ 258An empty color string produces no color effect at all. This can be used 259to avoid coloring specific elements without disabling color entirely. 260+ 261For git's pre-defined color slots, the attributes are meant to be reset 262at the beginning of each item in the colored output. So setting 263`color.decorate.branch` to `black` will paint that branch name in a 264plain `black`, even if the previous thing on the same output line (e.g. 265opening parenthesis before the list of branch names in `log --decorate` 266output) is set to be painted with `bold` or some other attribute. 267However, custom log formats may do more complicated and layered 268coloring, and the negated forms may be useful there. 269 270pathname:: 271 A variable that takes a pathname value can be given a 272 string that begins with "`~/`" or "`~user/`", and the usual 273 tilde expansion happens to such a string: `~/` 274 is expanded to the value of `$HOME`, and `~user/` to the 275 specified user's home directory. 276 277 278Variables 279~~~~~~~~~ 280 281Note that this list is non-comprehensive and not necessarily complete. 282For command-specific variables, you will find a more detailed description 283in the appropriate manual page. 284 285Other git-related tools may and do use their own variables. When 286inventing new variables for use in your own tool, make sure their 287names do not conflict with those that are used by Git itself and 288other popular tools, and describe them in your documentation. 289 290include::config/advice.txt[] 291 292include::config/core.txt[] 293 294include::config/add.txt[] 295 296include::config/alias.txt[] 297 298include::config/am.txt[] 299 300include::config/apply.txt[] 301 302include::config/blame.txt[] 303 304include::config/branch.txt[] 305 306include::config/browser.txt[] 307 308include::config/checkout.txt[] 309 310include::config/clean.txt[] 311 312include::config/color.txt[] 313 314include::config/column.txt[] 315 316include::config/commit.txt[] 317 318include::config/credential.txt[] 319 320include::config/completion.txt[] 321 322include::config/diff.txt[] 323 324include::config/difftool.txt[] 325 326include::config/fastimport.txt[] 327 328include::config/fetch.txt[] 329 330include::config/format.txt[] 331 332include::config/filter.txt[] 333 334include::config/fsck.txt[] 335 336include::config/gc.txt[] 337 338include::config/gitcvs.txt[] 339 340include::config/gitweb.txt[] 341 342include::config/grep.txt[] 343 344include::config/gpg.txt[] 345 346include::config/gui.txt[] 347 348include::config/guitool.txt[] 349 350include::config/help.txt[] 351 352include::config/http.txt[] 353 354include::config/i18n.txt[] 355 356include::config/imap.txt[] 357 358index.threads:: 359 Specifies the number of threads to spawn when loading the index. 360 This is meant to reduce index load time on multiprocessor machines. 361 Specifying 0 or 'true' will cause Git to auto-detect the number of 362 CPU's and set the number of threads accordingly. Specifying 1 or 363 'false' will disable multithreading. Defaults to 'true'. 364 365index.version:: 366 Specify the version with which new index files should be 367 initialized. This does not affect existing repositories. 368 369init.templateDir:: 370 Specify the directory from which templates will be copied. 371 (See the "TEMPLATE DIRECTORY" section of linkgit:git-init[1].) 372 373instaweb.browser:: 374 Specify the program that will be used to browse your working 375 repository in gitweb. See linkgit:git-instaweb[1]. 376 377instaweb.httpd:: 378 The HTTP daemon command-line to start gitweb on your working 379 repository. See linkgit:git-instaweb[1]. 380 381instaweb.local:: 382 If true the web server started by linkgit:git-instaweb[1] will 383 be bound to the local IP (127.0.0.1). 384 385instaweb.modulePath:: 386 The default module path for linkgit:git-instaweb[1] to use 387 instead of /usr/lib/apache2/modules. Only used if httpd 388 is Apache. 389 390instaweb.port:: 391 The port number to bind the gitweb httpd to. See 392 linkgit:git-instaweb[1]. 393 394interactive.singleKey:: 395 In interactive commands, allow the user to provide one-letter 396 input with a single key (i.e., without hitting enter). 397 Currently this is used by the `--patch` mode of 398 linkgit:git-add[1], linkgit:git-checkout[1], linkgit:git-commit[1], 399 linkgit:git-reset[1], and linkgit:git-stash[1]. Note that this 400 setting is silently ignored if portable keystroke input 401 is not available; requires the Perl module Term::ReadKey. 402 403interactive.diffFilter:: 404 When an interactive command (such as `git add --patch`) shows 405 a colorized diff, git will pipe the diff through the shell 406 command defined by this configuration variable. The command may 407 mark up the diff further for human consumption, provided that it 408 retains a one-to-one correspondence with the lines in the 409 original diff. Defaults to disabled (no filtering). 410 411log.abbrevCommit:: 412 If true, makes linkgit:git-log[1], linkgit:git-show[1], and 413 linkgit:git-whatchanged[1] assume `--abbrev-commit`. You may 414 override this option with `--no-abbrev-commit`. 415 416log.date:: 417 Set the default date-time mode for the 'log' command. 418 Setting a value for log.date is similar to using 'git log''s 419 `--date` option. See linkgit:git-log[1] for details. 420 421log.decorate:: 422 Print out the ref names of any commits that are shown by the log 423 command. If 'short' is specified, the ref name prefixes 'refs/heads/', 424 'refs/tags/' and 'refs/remotes/' will not be printed. If 'full' is 425 specified, the full ref name (including prefix) will be printed. 426 If 'auto' is specified, then if the output is going to a terminal, 427 the ref names are shown as if 'short' were given, otherwise no ref 428 names are shown. This is the same as the `--decorate` option 429 of the `git log`. 430 431log.follow:: 432 If `true`, `git log` will act as if the `--follow` option was used when 433 a single <path> is given. This has the same limitations as `--follow`, 434 i.e. it cannot be used to follow multiple files and does not work well 435 on non-linear history. 436 437log.graphColors:: 438 A list of colors, separated by commas, that can be used to draw 439 history lines in `git log --graph`. 440 441log.showRoot:: 442 If true, the initial commit will be shown as a big creation event. 443 This is equivalent to a diff against an empty tree. 444 Tools like linkgit:git-log[1] or linkgit:git-whatchanged[1], which 445 normally hide the root commit will now show it. True by default. 446 447log.showSignature:: 448 If true, makes linkgit:git-log[1], linkgit:git-show[1], and 449 linkgit:git-whatchanged[1] assume `--show-signature`. 450 451log.mailmap:: 452 If true, makes linkgit:git-log[1], linkgit:git-show[1], and 453 linkgit:git-whatchanged[1] assume `--use-mailmap`. 454 455mailinfo.scissors:: 456 If true, makes linkgit:git-mailinfo[1] (and therefore 457 linkgit:git-am[1]) act by default as if the --scissors option 458 was provided on the command-line. When active, this features 459 removes everything from the message body before a scissors 460 line (i.e. consisting mainly of ">8", "8<" and "-"). 461 462mailmap.file:: 463 The location of an augmenting mailmap file. The default 464 mailmap, located in the root of the repository, is loaded 465 first, then the mailmap file pointed to by this variable. 466 The location of the mailmap file may be in a repository 467 subdirectory, or somewhere outside of the repository itself. 468 See linkgit:git-shortlog[1] and linkgit:git-blame[1]. 469 470mailmap.blob:: 471 Like `mailmap.file`, but consider the value as a reference to a 472 blob in the repository. If both `mailmap.file` and 473 `mailmap.blob` are given, both are parsed, with entries from 474 `mailmap.file` taking precedence. In a bare repository, this 475 defaults to `HEAD:.mailmap`. In a non-bare repository, it 476 defaults to empty. 477 478man.viewer:: 479 Specify the programs that may be used to display help in the 480 'man' format. See linkgit:git-help[1]. 481 482man.<tool>.cmd:: 483 Specify the command to invoke the specified man viewer. The 484 specified command is evaluated in shell with the man page 485 passed as argument. (See linkgit:git-help[1].) 486 487man.<tool>.path:: 488 Override the path for the given tool that may be used to 489 display help in the 'man' format. See linkgit:git-help[1]. 490 491include::merge-config.txt[] 492 493mergetool.<tool>.path:: 494 Override the path for the given tool. This is useful in case 495 your tool is not in the PATH. 496 497mergetool.<tool>.cmd:: 498 Specify the command to invoke the specified merge tool. The 499 specified command is evaluated in shell with the following 500 variables available: 'BASE' is the name of a temporary file 501 containing the common base of the files to be merged, if available; 502 'LOCAL' is the name of a temporary file containing the contents of 503 the file on the current branch; 'REMOTE' is the name of a temporary 504 file containing the contents of the file from the branch being 505 merged; 'MERGED' contains the name of the file to which the merge 506 tool should write the results of a successful merge. 507 508mergetool.<tool>.trustExitCode:: 509 For a custom merge command, specify whether the exit code of 510 the merge command can be used to determine whether the merge was 511 successful. If this is not set to true then the merge target file 512 timestamp is checked and the merge assumed to have been successful 513 if the file has been updated, otherwise the user is prompted to 514 indicate the success of the merge. 515 516mergetool.meld.hasOutput:: 517 Older versions of `meld` do not support the `--output` option. 518 Git will attempt to detect whether `meld` supports `--output` 519 by inspecting the output of `meld --help`. Configuring 520 `mergetool.meld.hasOutput` will make Git skip these checks and 521 use the configured value instead. Setting `mergetool.meld.hasOutput` 522 to `true` tells Git to unconditionally use the `--output` option, 523 and `false` avoids using `--output`. 524 525mergetool.keepBackup:: 526 After performing a merge, the original file with conflict markers 527 can be saved as a file with a `.orig` extension. If this variable 528 is set to `false` then this file is not preserved. Defaults to 529 `true` (i.e. keep the backup files). 530 531mergetool.keepTemporaries:: 532 When invoking a custom merge tool, Git uses a set of temporary 533 files to pass to the tool. If the tool returns an error and this 534 variable is set to `true`, then these temporary files will be 535 preserved, otherwise they will be removed after the tool has 536 exited. Defaults to `false`. 537 538mergetool.writeToTemp:: 539 Git writes temporary 'BASE', 'LOCAL', and 'REMOTE' versions of 540 conflicting files in the worktree by default. Git will attempt 541 to use a temporary directory for these files when set `true`. 542 Defaults to `false`. 543 544mergetool.prompt:: 545 Prompt before each invocation of the merge resolution program. 546 547notes.mergeStrategy:: 548 Which merge strategy to choose by default when resolving notes 549 conflicts. Must be one of `manual`, `ours`, `theirs`, `union`, or 550 `cat_sort_uniq`. Defaults to `manual`. See "NOTES MERGE STRATEGIES" 551 section of linkgit:git-notes[1] for more information on each strategy. 552 553notes.<name>.mergeStrategy:: 554 Which merge strategy to choose when doing a notes merge into 555 refs/notes/<name>. This overrides the more general 556 "notes.mergeStrategy". See the "NOTES MERGE STRATEGIES" section in 557 linkgit:git-notes[1] for more information on the available strategies. 558 559notes.displayRef:: 560 The (fully qualified) refname from which to show notes when 561 showing commit messages. The value of this variable can be set 562 to a glob, in which case notes from all matching refs will be 563 shown. You may also specify this configuration variable 564 several times. A warning will be issued for refs that do not 565 exist, but a glob that does not match any refs is silently 566 ignored. 567+ 568This setting can be overridden with the `GIT_NOTES_DISPLAY_REF` 569environment variable, which must be a colon separated list of refs or 570globs. 571+ 572The effective value of "core.notesRef" (possibly overridden by 573GIT_NOTES_REF) is also implicitly added to the list of refs to be 574displayed. 575 576notes.rewrite.<command>:: 577 When rewriting commits with <command> (currently `amend` or 578 `rebase`) and this variable is set to `true`, Git 579 automatically copies your notes from the original to the 580 rewritten commit. Defaults to `true`, but see 581 "notes.rewriteRef" below. 582 583notes.rewriteMode:: 584 When copying notes during a rewrite (see the 585 "notes.rewrite.<command>" option), determines what to do if 586 the target commit already has a note. Must be one of 587 `overwrite`, `concatenate`, `cat_sort_uniq`, or `ignore`. 588 Defaults to `concatenate`. 589+ 590This setting can be overridden with the `GIT_NOTES_REWRITE_MODE` 591environment variable. 592 593notes.rewriteRef:: 594 When copying notes during a rewrite, specifies the (fully 595 qualified) ref whose notes should be copied. The ref may be a 596 glob, in which case notes in all matching refs will be copied. 597 You may also specify this configuration several times. 598+ 599Does not have a default value; you must configure this variable to 600enable note rewriting. Set it to `refs/notes/commits` to enable 601rewriting for the default commit notes. 602+ 603This setting can be overridden with the `GIT_NOTES_REWRITE_REF` 604environment variable, which must be a colon separated list of refs or 605globs. 606 607pack.window:: 608 The size of the window used by linkgit:git-pack-objects[1] when no 609 window size is given on the command line. Defaults to 10. 610 611pack.depth:: 612 The maximum delta depth used by linkgit:git-pack-objects[1] when no 613 maximum depth is given on the command line. Defaults to 50. 614 Maximum value is 4095. 615 616pack.windowMemory:: 617 The maximum size of memory that is consumed by each thread 618 in linkgit:git-pack-objects[1] for pack window memory when 619 no limit is given on the command line. The value can be 620 suffixed with "k", "m", or "g". When left unconfigured (or 621 set explicitly to 0), there will be no limit. 622 623pack.compression:: 624 An integer -1..9, indicating the compression level for objects 625 in a pack file. -1 is the zlib default. 0 means no 626 compression, and 1..9 are various speed/size tradeoffs, 9 being 627 slowest. If not set, defaults to core.compression. If that is 628 not set, defaults to -1, the zlib default, which is "a default 629 compromise between speed and compression (currently equivalent 630 to level 6)." 631+ 632Note that changing the compression level will not automatically recompress 633all existing objects. You can force recompression by passing the -F option 634to linkgit:git-repack[1]. 635 636pack.island:: 637 An extended regular expression configuring a set of delta 638 islands. See "DELTA ISLANDS" in linkgit:git-pack-objects[1] 639 for details. 640 641pack.islandCore:: 642 Specify an island name which gets to have its objects be 643 packed first. This creates a kind of pseudo-pack at the front 644 of one pack, so that the objects from the specified island are 645 hopefully faster to copy into any pack that should be served 646 to a user requesting these objects. In practice this means 647 that the island specified should likely correspond to what is 648 the most commonly cloned in the repo. See also "DELTA ISLANDS" 649 in linkgit:git-pack-objects[1]. 650 651pack.deltaCacheSize:: 652 The maximum memory in bytes used for caching deltas in 653 linkgit:git-pack-objects[1] before writing them out to a pack. 654 This cache is used to speed up the writing object phase by not 655 having to recompute the final delta result once the best match 656 for all objects is found. Repacking large repositories on machines 657 which are tight with memory might be badly impacted by this though, 658 especially if this cache pushes the system into swapping. 659 A value of 0 means no limit. The smallest size of 1 byte may be 660 used to virtually disable this cache. Defaults to 256 MiB. 661 662pack.deltaCacheLimit:: 663 The maximum size of a delta, that is cached in 664 linkgit:git-pack-objects[1]. This cache is used to speed up the 665 writing object phase by not having to recompute the final delta 666 result once the best match for all objects is found. 667 Defaults to 1000. Maximum value is 65535. 668 669pack.threads:: 670 Specifies the number of threads to spawn when searching for best 671 delta matches. This requires that linkgit:git-pack-objects[1] 672 be compiled with pthreads otherwise this option is ignored with a 673 warning. This is meant to reduce packing time on multiprocessor 674 machines. The required amount of memory for the delta search window 675 is however multiplied by the number of threads. 676 Specifying 0 will cause Git to auto-detect the number of CPU's 677 and set the number of threads accordingly. 678 679pack.indexVersion:: 680 Specify the default pack index version. Valid values are 1 for 681 legacy pack index used by Git versions prior to 1.5.2, and 2 for 682 the new pack index with capabilities for packs larger than 4 GB 683 as well as proper protection against the repacking of corrupted 684 packs. Version 2 is the default. Note that version 2 is enforced 685 and this config option ignored whenever the corresponding pack is 686 larger than 2 GB. 687+ 688If you have an old Git that does not understand the version 2 `*.idx` file, 689cloning or fetching over a non native protocol (e.g. "http") 690that will copy both `*.pack` file and corresponding `*.idx` file from the 691other side may give you a repository that cannot be accessed with your 692older version of Git. If the `*.pack` file is smaller than 2 GB, however, 693you can use linkgit:git-index-pack[1] on the *.pack file to regenerate 694the `*.idx` file. 695 696pack.packSizeLimit:: 697 The maximum size of a pack. This setting only affects 698 packing to a file when repacking, i.e. the git:// protocol 699 is unaffected. It can be overridden by the `--max-pack-size` 700 option of linkgit:git-repack[1]. Reaching this limit results 701 in the creation of multiple packfiles; which in turn prevents 702 bitmaps from being created. 703 The minimum size allowed is limited to 1 MiB. 704 The default is unlimited. 705 Common unit suffixes of 'k', 'm', or 'g' are 706 supported. 707 708pack.useBitmaps:: 709 When true, git will use pack bitmaps (if available) when packing 710 to stdout (e.g., during the server side of a fetch). Defaults to 711 true. You should not generally need to turn this off unless 712 you are debugging pack bitmaps. 713 714pack.writeBitmaps (deprecated):: 715 This is a deprecated synonym for `repack.writeBitmaps`. 716 717pack.writeBitmapHashCache:: 718 When true, git will include a "hash cache" section in the bitmap 719 index (if one is written). This cache can be used to feed git's 720 delta heuristics, potentially leading to better deltas between 721 bitmapped and non-bitmapped objects (e.g., when serving a fetch 722 between an older, bitmapped pack and objects that have been 723 pushed since the last gc). The downside is that it consumes 4 724 bytes per object of disk space, and that JGit's bitmap 725 implementation does not understand it, causing it to complain if 726 Git and JGit are used on the same repository. Defaults to false. 727 728pager.<cmd>:: 729 If the value is boolean, turns on or off pagination of the 730 output of a particular Git subcommand when writing to a tty. 731 Otherwise, turns on pagination for the subcommand using the 732 pager specified by the value of `pager.<cmd>`. If `--paginate` 733 or `--no-pager` is specified on the command line, it takes 734 precedence over this option. To disable pagination for all 735 commands, set `core.pager` or `GIT_PAGER` to `cat`. 736 737pretty.<name>:: 738 Alias for a --pretty= format string, as specified in 739 linkgit:git-log[1]. Any aliases defined here can be used just 740 as the built-in pretty formats could. For example, 741 running `git config pretty.changelog "format:* %H %s"` 742 would cause the invocation `git log --pretty=changelog` 743 to be equivalent to running `git log "--pretty=format:* %H %s"`. 744 Note that an alias with the same name as a built-in format 745 will be silently ignored. 746 747protocol.allow:: 748 If set, provide a user defined default policy for all protocols which 749 don't explicitly have a policy (`protocol.<name>.allow`). By default, 750 if unset, known-safe protocols (http, https, git, ssh, file) have a 751 default policy of `always`, known-dangerous protocols (ext) have a 752 default policy of `never`, and all other protocols have a default 753 policy of `user`. Supported policies: 754+ 755-- 756 757* `always` - protocol is always able to be used. 758 759* `never` - protocol is never able to be used. 760 761* `user` - protocol is only able to be used when `GIT_PROTOCOL_FROM_USER` is 762 either unset or has a value of 1. This policy should be used when you want a 763 protocol to be directly usable by the user but don't want it used by commands which 764 execute clone/fetch/push commands without user input, e.g. recursive 765 submodule initialization. 766 767-- 768 769protocol.<name>.allow:: 770 Set a policy to be used by protocol `<name>` with clone/fetch/push 771 commands. See `protocol.allow` above for the available policies. 772+ 773The protocol names currently used by git are: 774+ 775-- 776 - `file`: any local file-based path (including `file://` URLs, 777 or local paths) 778 779 - `git`: the anonymous git protocol over a direct TCP 780 connection (or proxy, if configured) 781 782 - `ssh`: git over ssh (including `host:path` syntax, 783 `ssh://`, etc). 784 785 - `http`: git over http, both "smart http" and "dumb http". 786 Note that this does _not_ include `https`; if you want to configure 787 both, you must do so individually. 788 789 - any external helpers are named by their protocol (e.g., use 790 `hg` to allow the `git-remote-hg` helper) 791-- 792 793protocol.version:: 794 Experimental. If set, clients will attempt to communicate with a 795 server using the specified protocol version. If unset, no 796 attempt will be made by the client to communicate using a 797 particular protocol version, this results in protocol version 0 798 being used. 799 Supported versions: 800+ 801-- 802 803* `0` - the original wire protocol. 804 805* `1` - the original wire protocol with the addition of a version string 806 in the initial response from the server. 807 808* `2` - link:technical/protocol-v2.html[wire protocol version 2]. 809 810-- 811 812include::pull-config.txt[] 813 814include::push-config.txt[] 815 816include::rebase-config.txt[] 817 818include::receive-config.txt[] 819 820remote.pushDefault:: 821 The remote to push to by default. Overrides 822 `branch.<name>.remote` for all branches, and is overridden by 823 `branch.<name>.pushRemote` for specific branches. 824 825remote.<name>.url:: 826 The URL of a remote repository. See linkgit:git-fetch[1] or 827 linkgit:git-push[1]. 828 829remote.<name>.pushurl:: 830 The push URL of a remote repository. See linkgit:git-push[1]. 831 832remote.<name>.proxy:: 833 For remotes that require curl (http, https and ftp), the URL to 834 the proxy to use for that remote. Set to the empty string to 835 disable proxying for that remote. 836 837remote.<name>.proxyAuthMethod:: 838 For remotes that require curl (http, https and ftp), the method to use for 839 authenticating against the proxy in use (probably set in 840 `remote.<name>.proxy`). See `http.proxyAuthMethod`. 841 842remote.<name>.fetch:: 843 The default set of "refspec" for linkgit:git-fetch[1]. See 844 linkgit:git-fetch[1]. 845 846remote.<name>.push:: 847 The default set of "refspec" for linkgit:git-push[1]. See 848 linkgit:git-push[1]. 849 850remote.<name>.mirror:: 851 If true, pushing to this remote will automatically behave 852 as if the `--mirror` option was given on the command line. 853 854remote.<name>.skipDefaultUpdate:: 855 If true, this remote will be skipped by default when updating 856 using linkgit:git-fetch[1] or the `update` subcommand of 857 linkgit:git-remote[1]. 858 859remote.<name>.skipFetchAll:: 860 If true, this remote will be skipped by default when updating 861 using linkgit:git-fetch[1] or the `update` subcommand of 862 linkgit:git-remote[1]. 863 864remote.<name>.receivepack:: 865 The default program to execute on the remote side when pushing. See 866 option --receive-pack of linkgit:git-push[1]. 867 868remote.<name>.uploadpack:: 869 The default program to execute on the remote side when fetching. See 870 option --upload-pack of linkgit:git-fetch-pack[1]. 871 872remote.<name>.tagOpt:: 873 Setting this value to --no-tags disables automatic tag following when 874 fetching from remote <name>. Setting it to --tags will fetch every 875 tag from remote <name>, even if they are not reachable from remote 876 branch heads. Passing these flags directly to linkgit:git-fetch[1] can 877 override this setting. See options --tags and --no-tags of 878 linkgit:git-fetch[1]. 879 880remote.<name>.vcs:: 881 Setting this to a value <vcs> will cause Git to interact with 882 the remote with the git-remote-<vcs> helper. 883 884remote.<name>.prune:: 885 When set to true, fetching from this remote by default will also 886 remove any remote-tracking references that no longer exist on the 887 remote (as if the `--prune` option was given on the command line). 888 Overrides `fetch.prune` settings, if any. 889 890remote.<name>.pruneTags:: 891 When set to true, fetching from this remote by default will also 892 remove any local tags that no longer exist on the remote if pruning 893 is activated in general via `remote.<name>.prune`, `fetch.prune` or 894 `--prune`. Overrides `fetch.pruneTags` settings, if any. 895+ 896See also `remote.<name>.prune` and the PRUNING section of 897linkgit:git-fetch[1]. 898 899remotes.<group>:: 900 The list of remotes which are fetched by "git remote update 901 <group>". See linkgit:git-remote[1]. 902 903repack.useDeltaBaseOffset:: 904 By default, linkgit:git-repack[1] creates packs that use 905 delta-base offset. If you need to share your repository with 906 Git older than version 1.4.4, either directly or via a dumb 907 protocol such as http, then you need to set this option to 908 "false" and repack. Access from old Git versions over the 909 native protocol are unaffected by this option. 910 911repack.packKeptObjects:: 912 If set to true, makes `git repack` act as if 913 `--pack-kept-objects` was passed. See linkgit:git-repack[1] for 914 details. Defaults to `false` normally, but `true` if a bitmap 915 index is being written (either via `--write-bitmap-index` or 916 `repack.writeBitmaps`). 917 918repack.useDeltaIslands:: 919 If set to true, makes `git repack` act as if `--delta-islands` 920 was passed. Defaults to `false`. 921 922repack.writeBitmaps:: 923 When true, git will write a bitmap index when packing all 924 objects to disk (e.g., when `git repack -a` is run). This 925 index can speed up the "counting objects" phase of subsequent 926 packs created for clones and fetches, at the cost of some disk 927 space and extra time spent on the initial repack. This has 928 no effect if multiple packfiles are created. 929 Defaults to false. 930 931rerere.autoUpdate:: 932 When set to true, `git-rerere` updates the index with the 933 resulting contents after it cleanly resolves conflicts using 934 previously recorded resolution. Defaults to false. 935 936rerere.enabled:: 937 Activate recording of resolved conflicts, so that identical 938 conflict hunks can be resolved automatically, should they be 939 encountered again. By default, linkgit:git-rerere[1] is 940 enabled if there is an `rr-cache` directory under the 941 `$GIT_DIR`, e.g. if "rerere" was previously used in the 942 repository. 943 944reset.quiet:: 945 When set to true, 'git reset' will default to the '--quiet' option. 946 947include::sendemail-config.txt[] 948 949sequence.editor:: 950 Text editor used by `git rebase -i` for editing the rebase instruction file. 951 The value is meant to be interpreted by the shell when it is used. 952 It can be overridden by the `GIT_SEQUENCE_EDITOR` environment variable. 953 When not configured the default commit message editor is used instead. 954 955showBranch.default:: 956 The default set of branches for linkgit:git-show-branch[1]. 957 See linkgit:git-show-branch[1]. 958 959splitIndex.maxPercentChange:: 960 When the split index feature is used, this specifies the 961 percent of entries the split index can contain compared to the 962 total number of entries in both the split index and the shared 963 index before a new shared index is written. 964 The value should be between 0 and 100. If the value is 0 then 965 a new shared index is always written, if it is 100 a new 966 shared index is never written. 967 By default the value is 20, so a new shared index is written 968 if the number of entries in the split index would be greater 969 than 20 percent of the total number of entries. 970 See linkgit:git-update-index[1]. 971 972splitIndex.sharedIndexExpire:: 973 When the split index feature is used, shared index files that 974 were not modified since the time this variable specifies will 975 be removed when a new shared index file is created. The value 976 "now" expires all entries immediately, and "never" suppresses 977 expiration altogether. 978 The default value is "2.weeks.ago". 979 Note that a shared index file is considered modified (for the 980 purpose of expiration) each time a new split-index file is 981 either created based on it or read from it. 982 See linkgit:git-update-index[1]. 983 984include::config/ssh.txt[] 985 986status.relativePaths:: 987 By default, linkgit:git-status[1] shows paths relative to the 988 current directory. Setting this variable to `false` shows paths 989 relative to the repository root (this was the default for Git 990 prior to v1.5.4). 991 992status.short:: 993 Set to true to enable --short by default in linkgit:git-status[1]. 994 The option --no-short takes precedence over this variable. 995 996status.branch:: 997 Set to true to enable --branch by default in linkgit:git-status[1]. 998 The option --no-branch takes precedence over this variable. 9991000status.displayCommentPrefix::1001 If set to true, linkgit:git-status[1] will insert a comment1002 prefix before each output line (starting with1003 `core.commentChar`, i.e. `#` by default). This was the1004 behavior of linkgit:git-status[1] in Git 1.8.4 and previous.1005 Defaults to false.10061007status.renameLimit::1008 The number of files to consider when performing rename detection1009 in linkgit:git-status[1] and linkgit:git-commit[1]. Defaults to1010 the value of diff.renameLimit.10111012status.renames::1013 Whether and how Git detects renames in linkgit:git-status[1] and1014 linkgit:git-commit[1] . If set to "false", rename detection is1015 disabled. If set to "true", basic rename detection is enabled.1016 If set to "copies" or "copy", Git will detect copies, as well.1017 Defaults to the value of diff.renames.10181019status.showStash::1020 If set to true, linkgit:git-status[1] will display the number of1021 entries currently stashed away.1022 Defaults to false.10231024status.showUntrackedFiles::1025 By default, linkgit:git-status[1] and linkgit:git-commit[1] show1026 files which are not currently tracked by Git. Directories which1027 contain only untracked files, are shown with the directory name1028 only. Showing untracked files means that Git needs to lstat() all1029 the files in the whole repository, which might be slow on some1030 systems. So, this variable controls how the commands displays1031 the untracked files. Possible values are:1032+1033--1034* `no` - Show no untracked files.1035* `normal` - Show untracked files and directories.1036* `all` - Show also individual files in untracked directories.1037--1038+1039If this variable is not specified, it defaults to 'normal'.1040This variable can be overridden with the -u|--untracked-files option1041of linkgit:git-status[1] and linkgit:git-commit[1].10421043status.submoduleSummary::1044 Defaults to false.1045 If this is set to a non zero number or true (identical to -1 or an1046 unlimited number), the submodule summary will be enabled and a1047 summary of commits for modified submodules will be shown (see1048 --summary-limit option of linkgit:git-submodule[1]). Please note1049 that the summary output command will be suppressed for all1050 submodules when `diff.ignoreSubmodules` is set to 'all' or only1051 for those submodules where `submodule.<name>.ignore=all`. The only1052 exception to that rule is that status and commit will show staged1053 submodule changes. To1054 also view the summary for ignored submodules you can either use1055 the --ignore-submodules=dirty command-line option or the 'git1056 submodule summary' command, which shows a similar output but does1057 not honor these settings.10581059stash.showPatch::1060 If this is set to true, the `git stash show` command without an1061 option will show the stash entry in patch form. Defaults to false.1062 See description of 'show' command in linkgit:git-stash[1].10631064stash.showStat::1065 If this is set to true, the `git stash show` command without an1066 option will show diffstat of the stash entry. Defaults to true.1067 See description of 'show' command in linkgit:git-stash[1].10681069include::submodule-config.txt[]10701071tag.forceSignAnnotated::1072 A boolean to specify whether annotated tags created should be GPG signed.1073 If `--annotate` is specified on the command line, it takes1074 precedence over this option.10751076tag.sort::1077 This variable controls the sort ordering of tags when displayed by1078 linkgit:git-tag[1]. Without the "--sort=<value>" option provided, the1079 value of this variable will be used as the default.10801081tar.umask::1082 This variable can be used to restrict the permission bits of1083 tar archive entries. The default is 0002, which turns off the1084 world write bit. The special value "user" indicates that the1085 archiving user's umask will be used instead. See umask(2) and1086 linkgit:git-archive[1].10871088transfer.fsckObjects::1089 When `fetch.fsckObjects` or `receive.fsckObjects` are1090 not set, the value of this variable is used instead.1091 Defaults to false.1092+1093When set, the fetch or receive will abort in the case of a malformed1094object or a link to a nonexistent object. In addition, various other1095issues are checked for, including legacy issues (see `fsck.<msg-id>`),1096and potential security issues like the existence of a `.GIT` directory1097or a malicious `.gitmodules` file (see the release notes for v2.2.11098and v2.17.1 for details). Other sanity and security checks may be1099added in future releases.1100+1101On the receiving side, failing fsckObjects will make those objects1102unreachable, see "QUARANTINE ENVIRONMENT" in1103linkgit:git-receive-pack[1]. On the fetch side, malformed objects will1104instead be left unreferenced in the repository.1105+1106Due to the non-quarantine nature of the `fetch.fsckObjects`1107implementation it can not be relied upon to leave the object store1108clean like `receive.fsckObjects` can.1109+1110As objects are unpacked they're written to the object store, so there1111can be cases where malicious objects get introduced even though the1112"fetch" failed, only to have a subsequent "fetch" succeed because only1113new incoming objects are checked, not those that have already been1114written to the object store. That difference in behavior should not be1115relied upon. In the future, such objects may be quarantined for1116"fetch" as well.1117+1118For now, the paranoid need to find some way to emulate the quarantine1119environment if they'd like the same protection as "push". E.g. in the1120case of an internal mirror do the mirroring in two steps, one to fetch1121the untrusted objects, and then do a second "push" (which will use the1122quarantine) to another internal repo, and have internal clients1123consume this pushed-to repository, or embargo internal fetches and1124only allow them once a full "fsck" has run (and no new fetches have1125happened in the meantime).11261127transfer.hideRefs::1128 String(s) `receive-pack` and `upload-pack` use to decide which1129 refs to omit from their initial advertisements. Use more than1130 one definition to specify multiple prefix strings. A ref that is1131 under the hierarchies listed in the value of this variable is1132 excluded, and is hidden when responding to `git push` or `git1133 fetch`. See `receive.hideRefs` and `uploadpack.hideRefs` for1134 program-specific versions of this config.1135+1136You may also include a `!` in front of the ref name to negate the entry,1137explicitly exposing it, even if an earlier entry marked it as hidden.1138If you have multiple hideRefs values, later entries override earlier ones1139(and entries in more-specific config files override less-specific ones).1140+1141If a namespace is in use, the namespace prefix is stripped from each1142reference before it is matched against `transfer.hiderefs` patterns.1143For example, if `refs/heads/master` is specified in `transfer.hideRefs` and1144the current namespace is `foo`, then `refs/namespaces/foo/refs/heads/master`1145is omitted from the advertisements but `refs/heads/master` and1146`refs/namespaces/bar/refs/heads/master` are still advertised as so-called1147"have" lines. In order to match refs before stripping, add a `^` in front of1148the ref name. If you combine `!` and `^`, `!` must be specified first.1149+1150Even if you hide refs, a client may still be able to steal the target1151objects via the techniques described in the "SECURITY" section of the1152linkgit:gitnamespaces[7] man page; it's best to keep private data in a1153separate repository.11541155transfer.unpackLimit::1156 When `fetch.unpackLimit` or `receive.unpackLimit` are1157 not set, the value of this variable is used instead.1158 The default value is 100.11591160uploadarchive.allowUnreachable::1161 If true, allow clients to use `git archive --remote` to request1162 any tree, whether reachable from the ref tips or not. See the1163 discussion in the "SECURITY" section of1164 linkgit:git-upload-archive[1] for more details. Defaults to1165 `false`.11661167uploadpack.hideRefs::1168 This variable is the same as `transfer.hideRefs`, but applies1169 only to `upload-pack` (and so affects only fetches, not pushes).1170 An attempt to fetch a hidden ref by `git fetch` will fail. See1171 also `uploadpack.allowTipSHA1InWant`.11721173uploadpack.allowTipSHA1InWant::1174 When `uploadpack.hideRefs` is in effect, allow `upload-pack`1175 to accept a fetch request that asks for an object at the tip1176 of a hidden ref (by default, such a request is rejected).1177 See also `uploadpack.hideRefs`. Even if this is false, a client1178 may be able to steal objects via the techniques described in the1179 "SECURITY" section of the linkgit:gitnamespaces[7] man page; it's1180 best to keep private data in a separate repository.11811182uploadpack.allowReachableSHA1InWant::1183 Allow `upload-pack` to accept a fetch request that asks for an1184 object that is reachable from any ref tip. However, note that1185 calculating object reachability is computationally expensive.1186 Defaults to `false`. Even if this is false, a client may be able1187 to steal objects via the techniques described in the "SECURITY"1188 section of the linkgit:gitnamespaces[7] man page; it's best to1189 keep private data in a separate repository.11901191uploadpack.allowAnySHA1InWant::1192 Allow `upload-pack` to accept a fetch request that asks for any1193 object at all.1194 Defaults to `false`.11951196uploadpack.keepAlive::1197 When `upload-pack` has started `pack-objects`, there may be a1198 quiet period while `pack-objects` prepares the pack. Normally1199 it would output progress information, but if `--quiet` was used1200 for the fetch, `pack-objects` will output nothing at all until1201 the pack data begins. Some clients and networks may consider1202 the server to be hung and give up. Setting this option instructs1203 `upload-pack` to send an empty keepalive packet every1204 `uploadpack.keepAlive` seconds. Setting this option to 01205 disables keepalive packets entirely. The default is 5 seconds.12061207uploadpack.packObjectsHook::1208 If this option is set, when `upload-pack` would run1209 `git pack-objects` to create a packfile for a client, it will1210 run this shell command instead. The `pack-objects` command and1211 arguments it _would_ have run (including the `git pack-objects`1212 at the beginning) are appended to the shell command. The stdin1213 and stdout of the hook are treated as if `pack-objects` itself1214 was run. I.e., `upload-pack` will feed input intended for1215 `pack-objects` to the hook, and expects a completed packfile on1216 stdout.1217+1218Note that this configuration variable is ignored if it is seen in the1219repository-level config (this is a safety measure against fetching from1220untrusted repositories).12211222uploadpack.allowFilter::1223 If this option is set, `upload-pack` will support partial1224 clone and partial fetch object filtering.12251226uploadpack.allowRefInWant::1227 If this option is set, `upload-pack` will support the `ref-in-want`1228 feature of the protocol version 2 `fetch` command. This feature1229 is intended for the benefit of load-balanced servers which may1230 not have the same view of what OIDs their refs point to due to1231 replication delay.12321233url.<base>.insteadOf::1234 Any URL that starts with this value will be rewritten to1235 start, instead, with <base>. In cases where some site serves a1236 large number of repositories, and serves them with multiple1237 access methods, and some users need to use different access1238 methods, this feature allows people to specify any of the1239 equivalent URLs and have Git automatically rewrite the URL to1240 the best alternative for the particular user, even for a1241 never-before-seen repository on the site. When more than one1242 insteadOf strings match a given URL, the longest match is used.1243+1244Note that any protocol restrictions will be applied to the rewritten1245URL. If the rewrite changes the URL to use a custom protocol or remote1246helper, you may need to adjust the `protocol.*.allow` config to permit1247the request. In particular, protocols you expect to use for submodules1248must be set to `always` rather than the default of `user`. See the1249description of `protocol.allow` above.12501251url.<base>.pushInsteadOf::1252 Any URL that starts with this value will not be pushed to;1253 instead, it will be rewritten to start with <base>, and the1254 resulting URL will be pushed to. In cases where some site serves1255 a large number of repositories, and serves them with multiple1256 access methods, some of which do not allow push, this feature1257 allows people to specify a pull-only URL and have Git1258 automatically use an appropriate URL to push, even for a1259 never-before-seen repository on the site. When more than one1260 pushInsteadOf strings match a given URL, the longest match is1261 used. If a remote has an explicit pushurl, Git will ignore this1262 setting for that remote.12631264user.email::1265 Your email address to be recorded in any newly created commits.1266 Can be overridden by the `GIT_AUTHOR_EMAIL`, `GIT_COMMITTER_EMAIL`, and1267 `EMAIL` environment variables. See linkgit:git-commit-tree[1].12681269user.name::1270 Your full name to be recorded in any newly created commits.1271 Can be overridden by the `GIT_AUTHOR_NAME` and `GIT_COMMITTER_NAME`1272 environment variables. See linkgit:git-commit-tree[1].12731274user.useConfigOnly::1275 Instruct Git to avoid trying to guess defaults for `user.email`1276 and `user.name`, and instead retrieve the values only from the1277 configuration. For example, if you have multiple email addresses1278 and would like to use a different one for each repository, then1279 with this configuration option set to `true` in the global config1280 along with a name, Git will prompt you to set up an email before1281 making new commits in a newly cloned repository.1282 Defaults to `false`.12831284user.signingKey::1285 If linkgit:git-tag[1] or linkgit:git-commit[1] is not selecting the1286 key you want it to automatically when creating a signed tag or1287 commit, you can override the default selection with this variable.1288 This option is passed unchanged to gpg's --local-user parameter,1289 so you may specify a key using any method that gpg supports.12901291versionsort.prereleaseSuffix (deprecated)::1292 Deprecated alias for `versionsort.suffix`. Ignored if1293 `versionsort.suffix` is set.12941295versionsort.suffix::1296 Even when version sort is used in linkgit:git-tag[1], tagnames1297 with the same base version but different suffixes are still sorted1298 lexicographically, resulting e.g. in prerelease tags appearing1299 after the main release (e.g. "1.0-rc1" after "1.0"). This1300 variable can be specified to determine the sorting order of tags1301 with different suffixes.1302+1303By specifying a single suffix in this variable, any tagname containing1304that suffix will appear before the corresponding main release. E.g. if1305the variable is set to "-rc", then all "1.0-rcX" tags will appear before1306"1.0". If specified multiple times, once per suffix, then the order of1307suffixes in the configuration will determine the sorting order of tagnames1308with those suffixes. E.g. if "-pre" appears before "-rc" in the1309configuration, then all "1.0-preX" tags will be listed before any1310"1.0-rcX" tags. The placement of the main release tag relative to tags1311with various suffixes can be determined by specifying the empty suffix1312among those other suffixes. E.g. if the suffixes "-rc", "", "-ck" and1313"-bfs" appear in the configuration in this order, then all "v4.8-rcX" tags1314are listed first, followed by "v4.8", then "v4.8-ckX" and finally1315"v4.8-bfsX".1316+1317If more than one suffixes match the same tagname, then that tagname will1318be sorted according to the suffix which starts at the earliest position in1319the tagname. If more than one different matching suffixes start at1320that earliest position, then that tagname will be sorted according to the1321longest of those suffixes.1322The sorting order between different suffixes is undefined if they are1323in multiple config files.13241325web.browser::1326 Specify a web browser that may be used by some commands.1327 Currently only linkgit:git-instaweb[1] and linkgit:git-help[1]1328 may use it.13291330worktree.guessRemote::1331 With `add`, if no branch argument, and neither of `-b` nor1332 `-B` nor `--detach` are given, the command defaults to1333 creating a new branch from HEAD. If `worktree.guessRemote` is1334 set to true, `worktree add` tries to find a remote-tracking1335 branch whose name uniquely matches the new branch name. If1336 such a branch exists, it is checked out and set as "upstream"1337 for the new branch. If no such match can be found, it falls1338 back to creating a new branch from the current HEAD.