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 (doublequote `"` and backslash can be included by escaping them 45as `\"` and `\\`, respectively). Section headers cannot span multiple 46lines. Variables may belong directly to a section or to a given subsection. 47You can have `[section]` if you have `[section "subsection"]`, but you 48don't need to. 49 50There is also a deprecated `[section.subsection]` syntax. With this 51syntax, the subsection name is converted to lower-case and is also 52compared case sensitively. These subsection names follow the same 53restrictions as section names. 54 55All the other lines (and the remainder of the line after the section 56header) are recognized as setting variables, in the form 57'name = value' (or just 'name', which is a short-hand to say that 58the variable is the boolean "true"). 59The variable names are case-insensitive, allow only alphanumeric characters 60and `-`, and must start with an alphabetic character. 61 62A line that defines a value can be continued to the next line by 63ending it with a `\`; the backquote and the end-of-line are 64stripped. Leading whitespaces after 'name =', the remainder of the 65line after the first comment character '#' or ';', and trailing 66whitespaces of the line are discarded unless they are enclosed in 67double quotes. Internal whitespaces within the value are retained 68verbatim. 69 70Inside double quotes, double quote `"` and backslash `\` characters 71must be escaped: use `\"` for `"` and `\\` for `\`. 72 73The following escape sequences (beside `\"` and `\\`) are recognized: 74`\n` for newline character (NL), `\t` for horizontal tabulation (HT, TAB) 75and `\b` for backspace (BS). Other char escape sequences (including octal 76escape sequences) are invalid. 77 78 79Includes 80~~~~~~~~ 81 82You can include one config file from another by setting the special 83`include.path` variable to the name of the file to be included. The 84variable takes a pathname as its value, and is subject to tilde 85expansion. 86 87The 88included file is expanded immediately, as if its contents had been 89found at the location of the include directive. If the value of the 90`include.path` variable is a relative path, the path is considered to be 91relative to the configuration file in which the include directive was 92found. See below for examples. 93 94 95Example 96~~~~~~~ 97 98 # Core variables 99 [core] 100 ; Don't trust file modes 101 filemode = false 102 103 # Our diff algorithm 104 [diff] 105 external = /usr/local/bin/diff-wrapper 106 renames = true 107 108 [branch "devel"] 109 remote = origin 110 merge = refs/heads/devel 111 112 # Proxy settings 113 [core] 114 gitProxy="ssh" for "kernel.org" 115 gitProxy=default-proxy ; for the rest 116 117 [include] 118 path = /path/to/foo.inc ; include by absolute path 119 path = foo ; expand "foo" relative to the current file 120 path = ~/foo ; expand "foo" in your `$HOME` directory 121 122 123Values 124~~~~~~ 125 126Values of many variables are treated as a simple string, but there 127are variables that take values of specific types and there are rules 128as to how to spell them. 129 130boolean:: 131 132 When a variable is said to take a boolean value, many 133 synonyms are accepted for 'true' and 'false'; these are all 134 case-insensitive. 135 136 true;; Boolean true can be spelled as `yes`, `on`, `true`, 137 or `1`. Also, a variable defined without `= <value>` 138 is taken as true. 139 140 false;; Boolean false can be spelled as `no`, `off`, 141 `false`, or `0`. 142+ 143When converting value to the canonical form using `--bool` type 144specifier; 'git config' will ensure that the output is "true" or 145"false" (spelled in lowercase). 146 147integer:: 148 The value for many variables that specify various sizes can 149 be suffixed with `k`, `M`,... to mean "scale the number by 150 1024", "by 1024x1024", etc. 151 152color:: 153 The value for a variable that takes a color is a list of 154 colors (at most two, one for foreground and one for background) 155 and attributes (as many as you want), separated by spaces. 156+ 157The basic colors accepted are `normal`, `black`, `red`, `green`, `yellow`, 158`blue`, `magenta`, `cyan` and `white`. The first color given is the 159foreground; the second is the background. 160+ 161Colors may also be given as numbers between 0 and 255; these use ANSI 162256-color mode (but note that not all terminals may support this). If 163your terminal supports it, you may also specify 24-bit RGB values as 164hex, like `#ff0ab3`. 165+ 166The accepted attributes are `bold`, `dim`, `ul`, `blink`, `reverse`, 167`italic`, and `strike` (for crossed-out or "strikethrough" letters). 168The position of any attributes with respect to the colors 169(before, after, or in between), doesn't matter. Specific attributes may 170be turned off by prefixing them with `no` or `no-` (e.g., `noreverse`, 171`no-ul`, etc). 172+ 173An empty color string produces no color effect at all. This can be used 174to avoid coloring specific elements without disabling color entirely. 175+ 176For git's pre-defined color slots, the attributes are meant to be reset 177at the beginning of each item in the colored output. So setting 178`color.decorate.branch` to `black` will paint that branch name in a 179plain `black`, even if the previous thing on the same output line (e.g. 180opening parenthesis before the list of branch names in `log --decorate` 181output) is set to be painted with `bold` or some other attribute. 182However, custom log formats may do more complicated and layered 183coloring, and the negated forms may be useful there. 184 185pathname:: 186 A variable that takes a pathname value can be given a 187 string that begins with "`~/`" or "`~user/`", and the usual 188 tilde expansion happens to such a string: `~/` 189 is expanded to the value of `$HOME`, and `~user/` to the 190 specified user's home directory. 191 192 193Variables 194~~~~~~~~~ 195 196Note that this list is non-comprehensive and not necessarily complete. 197For command-specific variables, you will find a more detailed description 198in the appropriate manual page. 199 200Other git-related tools may and do use their own variables. When 201inventing new variables for use in your own tool, make sure their 202names do not conflict with those that are used by Git itself and 203other popular tools, and describe them in your documentation. 204 205 206advice.*:: 207 These variables control various optional help messages designed to 208 aid new users. All 'advice.*' variables default to 'true', and you 209 can tell Git that you do not need help by setting these to 'false': 210+ 211-- 212 pushUpdateRejected:: 213 Set this variable to 'false' if you want to disable 214 'pushNonFFCurrent', 215 'pushNonFFMatching', 'pushAlreadyExists', 216 'pushFetchFirst', and 'pushNeedsForce' 217 simultaneously. 218 pushNonFFCurrent:: 219 Advice shown when linkgit:git-push[1] fails due to a 220 non-fast-forward update to the current branch. 221 pushNonFFMatching:: 222 Advice shown when you ran linkgit:git-push[1] and pushed 223 'matching refs' explicitly (i.e. you used ':', or 224 specified a refspec that isn't your current branch) and 225 it resulted in a non-fast-forward error. 226 pushAlreadyExists:: 227 Shown when linkgit:git-push[1] rejects an update that 228 does not qualify for fast-forwarding (e.g., a tag.) 229 pushFetchFirst:: 230 Shown when linkgit:git-push[1] rejects an update that 231 tries to overwrite a remote ref that points at an 232 object we do not have. 233 pushNeedsForce:: 234 Shown when linkgit:git-push[1] rejects an update that 235 tries to overwrite a remote ref that points at an 236 object that is not a commit-ish, or make the remote 237 ref point at an object that is not a commit-ish. 238 statusHints:: 239 Show directions on how to proceed from the current 240 state in the output of linkgit:git-status[1], in 241 the template shown when writing commit messages in 242 linkgit:git-commit[1], and in the help message shown 243 by linkgit:git-checkout[1] when switching branch. 244 statusUoption:: 245 Advise to consider using the `-u` option to linkgit:git-status[1] 246 when the command takes more than 2 seconds to enumerate untracked 247 files. 248 commitBeforeMerge:: 249 Advice shown when linkgit:git-merge[1] refuses to 250 merge to avoid overwriting local changes. 251 resolveConflict:: 252 Advice shown by various commands when conflicts 253 prevent the operation from being performed. 254 implicitIdentity:: 255 Advice on how to set your identity configuration when 256 your information is guessed from the system username and 257 domain name. 258 detachedHead:: 259 Advice shown when you used linkgit:git-checkout[1] to 260 move to the detach HEAD state, to instruct how to create 261 a local branch after the fact. 262 amWorkDir:: 263 Advice that shows the location of the patch file when 264 linkgit:git-am[1] fails to apply it. 265 rmHints:: 266 In case of failure in the output of linkgit:git-rm[1], 267 show directions on how to proceed from the current state. 268-- 269 270core.fileMode:: 271 Tells Git if the executable bit of files in the working tree 272 is to be honored. 273+ 274Some filesystems lose the executable bit when a file that is 275marked as executable is checked out, or checks out an 276non-executable file with executable bit on. 277linkgit:git-clone[1] or linkgit:git-init[1] probe the filesystem 278to see if it handles the executable bit correctly 279and this variable is automatically set as necessary. 280+ 281A repository, however, may be on a filesystem that handles 282the filemode correctly, and this variable is set to 'true' 283when created, but later may be made accessible from another 284environment that loses the filemode (e.g. exporting ext4 via 285CIFS mount, visiting a Cygwin created repository with 286Git for Windows or Eclipse). 287In such a case it may be necessary to set this variable to 'false'. 288See linkgit:git-update-index[1]. 289+ 290The default is true (when core.filemode is not specified in the config file). 291 292core.hideDotFiles:: 293 (Windows-only) If true, mark newly-created directories and files whose 294 name starts with a dot as hidden. If 'dotGitOnly', only the `.git/` 295 directory is hidden, but no other files starting with a dot. The 296 default mode is 'dotGitOnly'. 297 298core.ignoreCase:: 299 If true, this option enables various workarounds to enable 300 Git to work better on filesystems that are not case sensitive, 301 like FAT. For example, if a directory listing finds 302 "makefile" when Git expects "Makefile", Git will assume 303 it is really the same file, and continue to remember it as 304 "Makefile". 305+ 306The default is false, except linkgit:git-clone[1] or linkgit:git-init[1] 307will probe and set core.ignoreCase true if appropriate when the repository 308is created. 309 310core.precomposeUnicode:: 311 This option is only used by Mac OS implementation of Git. 312 When core.precomposeUnicode=true, Git reverts the unicode decomposition 313 of filenames done by Mac OS. This is useful when sharing a repository 314 between Mac OS and Linux or Windows. 315 (Git for Windows 1.7.10 or higher is needed, or Git under cygwin 1.7). 316 When false, file names are handled fully transparent by Git, 317 which is backward compatible with older versions of Git. 318 319core.protectHFS:: 320 If set to true, do not allow checkout of paths that would 321 be considered equivalent to `.git` on an HFS+ filesystem. 322 Defaults to `true` on Mac OS, and `false` elsewhere. 323 324core.protectNTFS:: 325 If set to true, do not allow checkout of paths that would 326 cause problems with the NTFS filesystem, e.g. conflict with 327 8.3 "short" names. 328 Defaults to `true` on Windows, and `false` elsewhere. 329 330core.trustctime:: 331 If false, the ctime differences between the index and the 332 working tree are ignored; useful when the inode change time 333 is regularly modified by something outside Git (file system 334 crawlers and some backup systems). 335 See linkgit:git-update-index[1]. True by default. 336 337core.untrackedCache:: 338 Determines what to do about the untracked cache feature of the 339 index. It will be kept, if this variable is unset or set to 340 `keep`. It will automatically be added if set to `true`. And 341 it will automatically be removed, if set to `false`. Before 342 setting it to `true`, you should check that mtime is working 343 properly on your system. 344 See linkgit:git-update-index[1]. `keep` by default. 345 346core.checkStat:: 347 Determines which stat fields to match between the index 348 and work tree. The user can set this to 'default' or 349 'minimal'. Default (or explicitly 'default'), is to check 350 all fields, including the sub-second part of mtime and ctime. 351 352core.quotePath:: 353 Commands that output paths (e.g. 'ls-files', 'diff'), will 354 quote "unusual" characters in the pathname by enclosing the 355 pathname in double-quotes and escaping those characters with 356 backslashes in the same way C escapes control characters (e.g. 357 `\t` for TAB, `\n` for LF, `\\` for backslash) or bytes with 358 values larger than 0x80 (e.g. octal `\302\265` for "micro" in 359 UTF-8). If this variable is set to false, bytes higher than 360 0x80 are not considered "unusual" any more. Double-quotes, 361 backslash and control characters are always escaped regardless 362 of the setting of this variable. A simple space character is 363 not considered "unusual". Many commands can output pathnames 364 completely verbatim using the `-z` option. The default value 365 is true. 366 367core.eol:: 368 Sets the line ending type to use in the working directory for 369 files that have the `text` property set when core.autocrlf is false. 370 Alternatives are 'lf', 'crlf' and 'native', which uses the platform's 371 native line ending. The default value is `native`. See 372 linkgit:gitattributes[5] for more information on end-of-line 373 conversion. 374 375core.safecrlf:: 376 If true, makes Git check if converting `CRLF` is reversible when 377 end-of-line conversion is active. Git will verify if a command 378 modifies a file in the work tree either directly or indirectly. 379 For example, committing a file followed by checking out the 380 same file should yield the original file in the work tree. If 381 this is not the case for the current setting of 382 `core.autocrlf`, Git will reject the file. The variable can 383 be set to "warn", in which case Git will only warn about an 384 irreversible conversion but continue the operation. 385+ 386CRLF conversion bears a slight chance of corrupting data. 387When it is enabled, Git will convert CRLF to LF during commit and LF to 388CRLF during checkout. A file that contains a mixture of LF and 389CRLF before the commit cannot be recreated by Git. For text 390files this is the right thing to do: it corrects line endings 391such that we have only LF line endings in the repository. 392But for binary files that are accidentally classified as text the 393conversion can corrupt data. 394+ 395If you recognize such corruption early you can easily fix it by 396setting the conversion type explicitly in .gitattributes. Right 397after committing you still have the original file in your work 398tree and this file is not yet corrupted. You can explicitly tell 399Git that this file is binary and Git will handle the file 400appropriately. 401+ 402Unfortunately, the desired effect of cleaning up text files with 403mixed line endings and the undesired effect of corrupting binary 404files cannot be distinguished. In both cases CRLFs are removed 405in an irreversible way. For text files this is the right thing 406to do because CRLFs are line endings, while for binary files 407converting CRLFs corrupts data. 408+ 409Note, this safety check does not mean that a checkout will generate a 410file identical to the original file for a different setting of 411`core.eol` and `core.autocrlf`, but only for the current one. For 412example, a text file with `LF` would be accepted with `core.eol=lf` 413and could later be checked out with `core.eol=crlf`, in which case the 414resulting file would contain `CRLF`, although the original file 415contained `LF`. However, in both work trees the line endings would be 416consistent, that is either all `LF` or all `CRLF`, but never mixed. A 417file with mixed line endings would be reported by the `core.safecrlf` 418mechanism. 419 420core.autocrlf:: 421 Setting this variable to "true" is the same as setting 422 the `text` attribute to "auto" on all files and core.eol to "crlf". 423 Set to true if you want to have `CRLF` line endings in your 424 working directory and the repository has LF line endings. 425 This variable can be set to 'input', 426 in which case no output conversion is performed. 427 428core.symlinks:: 429 If false, symbolic links are checked out as small plain files that 430 contain the link text. linkgit:git-update-index[1] and 431 linkgit:git-add[1] will not change the recorded type to regular 432 file. Useful on filesystems like FAT that do not support 433 symbolic links. 434+ 435The default is true, except linkgit:git-clone[1] or linkgit:git-init[1] 436will probe and set core.symlinks false if appropriate when the repository 437is created. 438 439core.gitProxy:: 440 A "proxy command" to execute (as 'command host port') instead 441 of establishing direct connection to the remote server when 442 using the Git protocol for fetching. If the variable value is 443 in the "COMMAND for DOMAIN" format, the command is applied only 444 on hostnames ending with the specified domain string. This variable 445 may be set multiple times and is matched in the given order; 446 the first match wins. 447+ 448Can be overridden by the `GIT_PROXY_COMMAND` environment variable 449(which always applies universally, without the special "for" 450handling). 451+ 452The special string `none` can be used as the proxy command to 453specify that no proxy be used for a given domain pattern. 454This is useful for excluding servers inside a firewall from 455proxy use, while defaulting to a common proxy for external domains. 456 457core.sshCommand:: 458 If this variable is set, `git fetch` and `git push` will 459 use the specified command instead of `ssh` when they need to 460 connect to a remote system. The command is in the same form as 461 the `GIT_SSH_COMMAND` environment variable and is overridden 462 when the environment variable is set. 463 464core.ignoreStat:: 465 If true, Git will avoid using lstat() calls to detect if files have 466 changed by setting the "assume-unchanged" bit for those tracked files 467 which it has updated identically in both the index and working tree. 468+ 469When files are modified outside of Git, the user will need to stage 470the modified files explicitly (e.g. see 'Examples' section in 471linkgit:git-update-index[1]). 472Git will not normally detect changes to those files. 473+ 474This is useful on systems where lstat() calls are very slow, such as 475CIFS/Microsoft Windows. 476+ 477False by default. 478 479core.preferSymlinkRefs:: 480 Instead of the default "symref" format for HEAD 481 and other symbolic reference files, use symbolic links. 482 This is sometimes needed to work with old scripts that 483 expect HEAD to be a symbolic link. 484 485core.bare:: 486 If true this repository is assumed to be 'bare' and has no 487 working directory associated with it. If this is the case a 488 number of commands that require a working directory will be 489 disabled, such as linkgit:git-add[1] or linkgit:git-merge[1]. 490+ 491This setting is automatically guessed by linkgit:git-clone[1] or 492linkgit:git-init[1] when the repository was created. By default a 493repository that ends in "/.git" is assumed to be not bare (bare = 494false), while all other repositories are assumed to be bare (bare 495= true). 496 497core.worktree:: 498 Set the path to the root of the working tree. 499 If `GIT_COMMON_DIR` environment variable is set, core.worktree 500 is ignored and not used for determining the root of working tree. 501 This can be overridden by the `GIT_WORK_TREE` environment 502 variable and the `--work-tree` command-line option. 503 The value can be an absolute path or relative to the path to 504 the .git directory, which is either specified by --git-dir 505 or GIT_DIR, or automatically discovered. 506 If --git-dir or GIT_DIR is specified but none of 507 --work-tree, GIT_WORK_TREE and core.worktree is specified, 508 the current working directory is regarded as the top level 509 of your working tree. 510+ 511Note that this variable is honored even when set in a configuration 512file in a ".git" subdirectory of a directory and its value differs 513from the latter directory (e.g. "/path/to/.git/config" has 514core.worktree set to "/different/path"), which is most likely a 515misconfiguration. Running Git commands in the "/path/to" directory will 516still use "/different/path" as the root of the work tree and can cause 517confusion unless you know what you are doing (e.g. you are creating a 518read-only snapshot of the same index to a location different from the 519repository's usual working tree). 520 521core.logAllRefUpdates:: 522 Enable the reflog. Updates to a ref <ref> is logged to the file 523 "`$GIT_DIR/logs/<ref>`", by appending the new and old 524 SHA-1, the date/time and the reason of the update, but 525 only when the file exists. If this configuration 526 variable is set to `true`, missing "`$GIT_DIR/logs/<ref>`" 527 file is automatically created for branch heads (i.e. under 528 `refs/heads/`), remote refs (i.e. under `refs/remotes/`), 529 note refs (i.e. under `refs/notes/`), and the symbolic ref `HEAD`. 530 If it is set to `always`, then a missing reflog is automatically 531 created for any ref under `refs/`. 532+ 533This information can be used to determine what commit 534was the tip of a branch "2 days ago". 535+ 536This value is true by default in a repository that has 537a working directory associated with it, and false by 538default in a bare repository. 539 540core.repositoryFormatVersion:: 541 Internal variable identifying the repository format and layout 542 version. 543 544core.sharedRepository:: 545 When 'group' (or 'true'), the repository is made shareable between 546 several users in a group (making sure all the files and objects are 547 group-writable). When 'all' (or 'world' or 'everybody'), the 548 repository will be readable by all users, additionally to being 549 group-shareable. When 'umask' (or 'false'), Git will use permissions 550 reported by umask(2). When '0xxx', where '0xxx' is an octal number, 551 files in the repository will have this mode value. '0xxx' will override 552 user's umask value (whereas the other options will only override 553 requested parts of the user's umask value). Examples: '0660' will make 554 the repo read/write-able for the owner and group, but inaccessible to 555 others (equivalent to 'group' unless umask is e.g. '0022'). '0640' is a 556 repository that is group-readable but not group-writable. 557 See linkgit:git-init[1]. False by default. 558 559core.warnAmbiguousRefs:: 560 If true, Git will warn you if the ref name you passed it is ambiguous 561 and might match multiple refs in the repository. True by default. 562 563core.compression:: 564 An integer -1..9, indicating a default compression level. 565 -1 is the zlib default. 0 means no compression, 566 and 1..9 are various speed/size tradeoffs, 9 being slowest. 567 If set, this provides a default to other compression variables, 568 such as `core.looseCompression` and `pack.compression`. 569 570core.looseCompression:: 571 An integer -1..9, indicating the compression level for objects that 572 are not in a pack file. -1 is the zlib default. 0 means no 573 compression, and 1..9 are various speed/size tradeoffs, 9 being 574 slowest. If not set, defaults to core.compression. If that is 575 not set, defaults to 1 (best speed). 576 577core.packedGitWindowSize:: 578 Number of bytes of a pack file to map into memory in a 579 single mapping operation. Larger window sizes may allow 580 your system to process a smaller number of large pack files 581 more quickly. Smaller window sizes will negatively affect 582 performance due to increased calls to the operating system's 583 memory manager, but may improve performance when accessing 584 a large number of large pack files. 585+ 586Default is 1 MiB if NO_MMAP was set at compile time, otherwise 32 587MiB on 32 bit platforms and 1 GiB on 64 bit platforms. This should 588be reasonable for all users/operating systems. You probably do 589not need to adjust this value. 590+ 591Common unit suffixes of 'k', 'm', or 'g' are supported. 592 593core.packedGitLimit:: 594 Maximum number of bytes to map simultaneously into memory 595 from pack files. If Git needs to access more than this many 596 bytes at once to complete an operation it will unmap existing 597 regions to reclaim virtual address space within the process. 598+ 599Default is 256 MiB on 32 bit platforms and 8 GiB on 64 bit platforms. 600This should be reasonable for all users/operating systems, except on 601the largest projects. You probably do not need to adjust this value. 602+ 603Common unit suffixes of 'k', 'm', or 'g' are supported. 604 605core.deltaBaseCacheLimit:: 606 Maximum number of bytes to reserve for caching base objects 607 that may be referenced by multiple deltified objects. By storing the 608 entire decompressed base objects in a cache Git is able 609 to avoid unpacking and decompressing frequently used base 610 objects multiple times. 611+ 612Default is 96 MiB on all platforms. This should be reasonable 613for all users/operating systems, except on the largest projects. 614You probably do not need to adjust this value. 615+ 616Common unit suffixes of 'k', 'm', or 'g' are supported. 617 618core.bigFileThreshold:: 619 Files larger than this size are stored deflated, without 620 attempting delta compression. Storing large files without 621 delta compression avoids excessive memory usage, at the 622 slight expense of increased disk usage. Additionally files 623 larger than this size are always treated as binary. 624+ 625Default is 512 MiB on all platforms. This should be reasonable 626for most projects as source code and other text files can still 627be delta compressed, but larger binary media files won't be. 628+ 629Common unit suffixes of 'k', 'm', or 'g' are supported. 630 631core.excludesFile:: 632 Specifies the pathname to the file that contains patterns to 633 describe paths that are not meant to be tracked, in addition 634 to '.gitignore' (per-directory) and '.git/info/exclude'. 635 Defaults to `$XDG_CONFIG_HOME/git/ignore`. 636 If `$XDG_CONFIG_HOME` is either not set or empty, `$HOME/.config/git/ignore` 637 is used instead. See linkgit:gitignore[5]. 638 639core.askPass:: 640 Some commands (e.g. svn and http interfaces) that interactively 641 ask for a password can be told to use an external program given 642 via the value of this variable. Can be overridden by the `GIT_ASKPASS` 643 environment variable. If not set, fall back to the value of the 644 `SSH_ASKPASS` environment variable or, failing that, a simple password 645 prompt. The external program shall be given a suitable prompt as 646 command-line argument and write the password on its STDOUT. 647 648core.attributesFile:: 649 In addition to '.gitattributes' (per-directory) and 650 '.git/info/attributes', Git looks into this file for attributes 651 (see linkgit:gitattributes[5]). Path expansions are made the same 652 way as for `core.excludesFile`. Its default value is 653 `$XDG_CONFIG_HOME/git/attributes`. If `$XDG_CONFIG_HOME` is either not 654 set or empty, `$HOME/.config/git/attributes` is used instead. 655 656core.hooksPath:: 657 By default Git will look for your hooks in the 658 '$GIT_DIR/hooks' directory. Set this to different path, 659 e.g. '/etc/git/hooks', and Git will try to find your hooks in 660 that directory, e.g. '/etc/git/hooks/pre-receive' instead of 661 in '$GIT_DIR/hooks/pre-receive'. 662+ 663The path can be either absolute or relative. A relative path is 664taken as relative to the directory where the hooks are run (see 665the "DESCRIPTION" section of linkgit:githooks[5]). 666+ 667This configuration variable is useful in cases where you'd like to 668centrally configure your Git hooks instead of configuring them on a 669per-repository basis, or as a more flexible and centralized 670alternative to having an `init.templateDir` where you've changed 671default hooks. 672 673core.editor:: 674 Commands such as `commit` and `tag` that lets you edit 675 messages by launching an editor uses the value of this 676 variable when it is set, and the environment variable 677 `GIT_EDITOR` is not set. See linkgit:git-var[1]. 678 679core.commentChar:: 680 Commands such as `commit` and `tag` that lets you edit 681 messages consider a line that begins with this character 682 commented, and removes them after the editor returns 683 (default '#'). 684+ 685If set to "auto", `git-commit` would select a character that is not 686the beginning character of any line in existing commit messages. 687 688core.packedRefsTimeout:: 689 The length of time, in milliseconds, to retry when trying to 690 lock the `packed-refs` file. Value 0 means not to retry at 691 all; -1 means to try indefinitely. Default is 1000 (i.e., 692 retry for 1 second). 693 694sequence.editor:: 695 Text editor used by `git rebase -i` for editing the rebase instruction file. 696 The value is meant to be interpreted by the shell when it is used. 697 It can be overridden by the `GIT_SEQUENCE_EDITOR` environment variable. 698 When not configured the default commit message editor is used instead. 699 700core.pager:: 701 Text viewer for use by Git commands (e.g., 'less'). The value 702 is meant to be interpreted by the shell. The order of preference 703 is the `$GIT_PAGER` environment variable, then `core.pager` 704 configuration, then `$PAGER`, and then the default chosen at 705 compile time (usually 'less'). 706+ 707When the `LESS` environment variable is unset, Git sets it to `FRX` 708(if `LESS` environment variable is set, Git does not change it at 709all). If you want to selectively override Git's default setting 710for `LESS`, you can set `core.pager` to e.g. `less -S`. This will 711be passed to the shell by Git, which will translate the final 712command to `LESS=FRX less -S`. The environment does not set the 713`S` option but the command line does, instructing less to truncate 714long lines. Similarly, setting `core.pager` to `less -+F` will 715deactivate the `F` option specified by the environment from the 716command-line, deactivating the "quit if one screen" behavior of 717`less`. One can specifically activate some flags for particular 718commands: for example, setting `pager.blame` to `less -S` enables 719line truncation only for `git blame`. 720+ 721Likewise, when the `LV` environment variable is unset, Git sets it 722to `-c`. You can override this setting by exporting `LV` with 723another value or setting `core.pager` to `lv +c`. 724 725core.whitespace:: 726 A comma separated list of common whitespace problems to 727 notice. 'git diff' will use `color.diff.whitespace` to 728 highlight them, and 'git apply --whitespace=error' will 729 consider them as errors. You can prefix `-` to disable 730 any of them (e.g. `-trailing-space`): 731+ 732* `blank-at-eol` treats trailing whitespaces at the end of the line 733 as an error (enabled by default). 734* `space-before-tab` treats a space character that appears immediately 735 before a tab character in the initial indent part of the line as an 736 error (enabled by default). 737* `indent-with-non-tab` treats a line that is indented with space 738 characters instead of the equivalent tabs as an error (not enabled by 739 default). 740* `tab-in-indent` treats a tab character in the initial indent part of 741 the line as an error (not enabled by default). 742* `blank-at-eof` treats blank lines added at the end of file as an error 743 (enabled by default). 744* `trailing-space` is a short-hand to cover both `blank-at-eol` and 745 `blank-at-eof`. 746* `cr-at-eol` treats a carriage-return at the end of line as 747 part of the line terminator, i.e. with it, `trailing-space` 748 does not trigger if the character before such a carriage-return 749 is not a whitespace (not enabled by default). 750* `tabwidth=<n>` tells how many character positions a tab occupies; this 751 is relevant for `indent-with-non-tab` and when Git fixes `tab-in-indent` 752 errors. The default tab width is 8. Allowed values are 1 to 63. 753 754core.fsyncObjectFiles:: 755 This boolean will enable 'fsync()' when writing object files. 756+ 757This is a total waste of time and effort on a filesystem that orders 758data writes properly, but can be useful for filesystems that do not use 759journalling (traditional UNIX filesystems) or that only journal metadata 760and not file contents (OS X's HFS+, or Linux ext3 with "data=writeback"). 761 762core.preloadIndex:: 763 Enable parallel index preload for operations like 'git diff' 764+ 765This can speed up operations like 'git diff' and 'git status' especially 766on filesystems like NFS that have weak caching semantics and thus 767relatively high IO latencies. When enabled, Git will do the 768index comparison to the filesystem data in parallel, allowing 769overlapping IO's. Defaults to true. 770 771core.createObject:: 772 You can set this to 'link', in which case a hardlink followed by 773 a delete of the source are used to make sure that object creation 774 will not overwrite existing objects. 775+ 776On some file system/operating system combinations, this is unreliable. 777Set this config setting to 'rename' there; However, This will remove the 778check that makes sure that existing object files will not get overwritten. 779 780core.notesRef:: 781 When showing commit messages, also show notes which are stored in 782 the given ref. The ref must be fully qualified. If the given 783 ref does not exist, it is not an error but means that no 784 notes should be printed. 785+ 786This setting defaults to "refs/notes/commits", and it can be overridden by 787the `GIT_NOTES_REF` environment variable. See linkgit:git-notes[1]. 788 789core.sparseCheckout:: 790 Enable "sparse checkout" feature. See section "Sparse checkout" in 791 linkgit:git-read-tree[1] for more information. 792 793core.abbrev:: 794 Set the length object names are abbreviated to. If 795 unspecified or set to "auto", an appropriate value is 796 computed based on the approximate number of packed objects 797 in your repository, which hopefully is enough for 798 abbreviated object names to stay unique for some time. 799 800add.ignoreErrors:: 801add.ignore-errors (deprecated):: 802 Tells 'git add' to continue adding files when some files cannot be 803 added due to indexing errors. Equivalent to the `--ignore-errors` 804 option of linkgit:git-add[1]. `add.ignore-errors` is deprecated, 805 as it does not follow the usual naming convention for configuration 806 variables. 807 808alias.*:: 809 Command aliases for the linkgit:git[1] command wrapper - e.g. 810 after defining "alias.last = cat-file commit HEAD", the invocation 811 "git last" is equivalent to "git cat-file commit HEAD". To avoid 812 confusion and troubles with script usage, aliases that 813 hide existing Git commands are ignored. Arguments are split by 814 spaces, the usual shell quoting and escaping is supported. 815 A quote pair or a backslash can be used to quote them. 816+ 817If the alias expansion is prefixed with an exclamation point, 818it will be treated as a shell command. For example, defining 819"alias.new = !gitk --all --not ORIG_HEAD", the invocation 820"git new" is equivalent to running the shell command 821"gitk --all --not ORIG_HEAD". Note that shell commands will be 822executed from the top-level directory of a repository, which may 823not necessarily be the current directory. 824`GIT_PREFIX` is set as returned by running 'git rev-parse --show-prefix' 825from the original current directory. See linkgit:git-rev-parse[1]. 826 827am.keepcr:: 828 If true, git-am will call git-mailsplit for patches in mbox format 829 with parameter `--keep-cr`. In this case git-mailsplit will 830 not remove `\r` from lines ending with `\r\n`. Can be overridden 831 by giving `--no-keep-cr` from the command line. 832 See linkgit:git-am[1], linkgit:git-mailsplit[1]. 833 834am.threeWay:: 835 By default, `git am` will fail if the patch does not apply cleanly. When 836 set to true, this setting tells `git am` to fall back on 3-way merge if 837 the patch records the identity of blobs it is supposed to apply to and 838 we have those blobs available locally (equivalent to giving the `--3way` 839 option from the command line). Defaults to `false`. 840 See linkgit:git-am[1]. 841 842apply.ignoreWhitespace:: 843 When set to 'change', tells 'git apply' to ignore changes in 844 whitespace, in the same way as the `--ignore-space-change` 845 option. 846 When set to one of: no, none, never, false tells 'git apply' to 847 respect all whitespace differences. 848 See linkgit:git-apply[1]. 849 850apply.whitespace:: 851 Tells 'git apply' how to handle whitespaces, in the same way 852 as the `--whitespace` option. See linkgit:git-apply[1]. 853 854branch.autoSetupMerge:: 855 Tells 'git branch' and 'git checkout' to set up new branches 856 so that linkgit:git-pull[1] will appropriately merge from the 857 starting point branch. Note that even if this option is not set, 858 this behavior can be chosen per-branch using the `--track` 859 and `--no-track` options. The valid settings are: `false` -- no 860 automatic setup is done; `true` -- automatic setup is done when the 861 starting point is a remote-tracking branch; `always` -- 862 automatic setup is done when the starting point is either a 863 local branch or remote-tracking 864 branch. This option defaults to true. 865 866branch.autoSetupRebase:: 867 When a new branch is created with 'git branch' or 'git checkout' 868 that tracks another branch, this variable tells Git to set 869 up pull to rebase instead of merge (see "branch.<name>.rebase"). 870 When `never`, rebase is never automatically set to true. 871 When `local`, rebase is set to true for tracked branches of 872 other local branches. 873 When `remote`, rebase is set to true for tracked branches of 874 remote-tracking branches. 875 When `always`, rebase will be set to true for all tracking 876 branches. 877 See "branch.autoSetupMerge" for details on how to set up a 878 branch to track another branch. 879 This option defaults to never. 880 881branch.<name>.remote:: 882 When on branch <name>, it tells 'git fetch' and 'git push' 883 which remote to fetch from/push to. The remote to push to 884 may be overridden with `remote.pushDefault` (for all branches). 885 The remote to push to, for the current branch, may be further 886 overridden by `branch.<name>.pushRemote`. If no remote is 887 configured, or if you are not on any branch, it defaults to 888 `origin` for fetching and `remote.pushDefault` for pushing. 889 Additionally, `.` (a period) is the current local repository 890 (a dot-repository), see `branch.<name>.merge`'s final note below. 891 892branch.<name>.pushRemote:: 893 When on branch <name>, it overrides `branch.<name>.remote` for 894 pushing. It also overrides `remote.pushDefault` for pushing 895 from branch <name>. When you pull from one place (e.g. your 896 upstream) and push to another place (e.g. your own publishing 897 repository), you would want to set `remote.pushDefault` to 898 specify the remote to push to for all branches, and use this 899 option to override it for a specific branch. 900 901branch.<name>.merge:: 902 Defines, together with branch.<name>.remote, the upstream branch 903 for the given branch. It tells 'git fetch'/'git pull'/'git rebase' which 904 branch to merge and can also affect 'git push' (see push.default). 905 When in branch <name>, it tells 'git fetch' the default 906 refspec to be marked for merging in FETCH_HEAD. The value is 907 handled like the remote part of a refspec, and must match a 908 ref which is fetched from the remote given by 909 "branch.<name>.remote". 910 The merge information is used by 'git pull' (which at first calls 911 'git fetch') to lookup the default branch for merging. Without 912 this option, 'git pull' defaults to merge the first refspec fetched. 913 Specify multiple values to get an octopus merge. 914 If you wish to setup 'git pull' so that it merges into <name> from 915 another branch in the local repository, you can point 916 branch.<name>.merge to the desired branch, and use the relative path 917 setting `.` (a period) for branch.<name>.remote. 918 919branch.<name>.mergeOptions:: 920 Sets default options for merging into branch <name>. The syntax and 921 supported options are the same as those of linkgit:git-merge[1], but 922 option values containing whitespace characters are currently not 923 supported. 924 925branch.<name>.rebase:: 926 When true, rebase the branch <name> on top of the fetched branch, 927 instead of merging the default branch from the default remote when 928 "git pull" is run. See "pull.rebase" for doing this in a non 929 branch-specific manner. 930+ 931When preserve, also pass `--preserve-merges` along to 'git rebase' 932so that locally committed merge commits will not be flattened 933by running 'git pull'. 934+ 935When the value is `interactive`, the rebase is run in interactive mode. 936+ 937*NOTE*: this is a possibly dangerous operation; do *not* use 938it unless you understand the implications (see linkgit:git-rebase[1] 939for details). 940 941branch.<name>.description:: 942 Branch description, can be edited with 943 `git branch --edit-description`. Branch description is 944 automatically added in the format-patch cover letter or 945 request-pull summary. 946 947browser.<tool>.cmd:: 948 Specify the command to invoke the specified browser. The 949 specified command is evaluated in shell with the URLs passed 950 as arguments. (See linkgit:git-web{litdd}browse[1].) 951 952browser.<tool>.path:: 953 Override the path for the given tool that may be used to 954 browse HTML help (see `-w` option in linkgit:git-help[1]) or a 955 working repository in gitweb (see linkgit:git-instaweb[1]). 956 957clean.requireForce:: 958 A boolean to make git-clean do nothing unless given -f, 959 -i or -n. Defaults to true. 960 961color.branch:: 962 A boolean to enable/disable color in the output of 963 linkgit:git-branch[1]. May be set to `always`, 964 `false` (or `never`) or `auto` (or `true`), in which case colors are used 965 only when the output is to a terminal. If unset, then the 966 value of `color.ui` is used (`auto` by default). 967 968color.branch.<slot>:: 969 Use customized color for branch coloration. `<slot>` is one of 970 `current` (the current branch), `local` (a local branch), 971 `remote` (a remote-tracking branch in refs/remotes/), 972 `upstream` (upstream tracking branch), `plain` (other 973 refs). 974 975color.diff:: 976 Whether to use ANSI escape sequences to add color to patches. 977 If this is set to `always`, linkgit:git-diff[1], 978 linkgit:git-log[1], and linkgit:git-show[1] will use color 979 for all patches. If it is set to `true` or `auto`, those 980 commands will only use color when output is to the terminal. 981 If unset, then the value of `color.ui` is used (`auto` by 982 default). 983+ 984This does not affect linkgit:git-format-patch[1] or the 985'git-diff-{asterisk}' plumbing commands. Can be overridden on the 986command line with the `--color[=<when>]` option. 987 988color.diff.<slot>:: 989 Use customized color for diff colorization. `<slot>` specifies 990 which part of the patch to use the specified color, and is one 991 of `context` (context text - `plain` is a historical synonym), 992 `meta` (metainformation), `frag` 993 (hunk header), 'func' (function in hunk header), `old` (removed lines), 994 `new` (added lines), `commit` (commit headers), or `whitespace` 995 (highlighting whitespace errors). 996 997color.decorate.<slot>:: 998 Use customized color for 'git log --decorate' output. `<slot>` is one 999 of `branch`, `remoteBranch`, `tag`, `stash` or `HEAD` for local1000 branches, remote-tracking branches, tags, stash and HEAD, respectively.10011002color.grep::1003 When set to `always`, always highlight matches. When `false` (or1004 `never`), never. When set to `true` or `auto`, use color only1005 when the output is written to the terminal. If unset, then the1006 value of `color.ui` is used (`auto` by default).10071008color.grep.<slot>::1009 Use customized color for grep colorization. `<slot>` specifies which1010 part of the line to use the specified color, and is one of1011+1012--1013`context`;;1014 non-matching text in context lines (when using `-A`, `-B`, or `-C`)1015`filename`;;1016 filename prefix (when not using `-h`)1017`function`;;1018 function name lines (when using `-p`)1019`linenumber`;;1020 line number prefix (when using `-n`)1021`match`;;1022 matching text (same as setting `matchContext` and `matchSelected`)1023`matchContext`;;1024 matching text in context lines1025`matchSelected`;;1026 matching text in selected lines1027`selected`;;1028 non-matching text in selected lines1029`separator`;;1030 separators between fields on a line (`:`, `-`, and `=`)1031 and between hunks (`--`)1032--10331034color.interactive::1035 When set to `always`, always use colors for interactive prompts1036 and displays (such as those used by "git-add --interactive" and1037 "git-clean --interactive"). When false (or `never`), never.1038 When set to `true` or `auto`, use colors only when the output is1039 to the terminal. If unset, then the value of `color.ui` is1040 used (`auto` by default).10411042color.interactive.<slot>::1043 Use customized color for 'git add --interactive' and 'git clean1044 --interactive' output. `<slot>` may be `prompt`, `header`, `help`1045 or `error`, for four distinct types of normal output from1046 interactive commands.10471048color.pager::1049 A boolean to enable/disable colored output when the pager is in1050 use (default is true).10511052color.showBranch::1053 A boolean to enable/disable color in the output of1054 linkgit:git-show-branch[1]. May be set to `always`,1055 `false` (or `never`) or `auto` (or `true`), in which case colors are used1056 only when the output is to a terminal. If unset, then the1057 value of `color.ui` is used (`auto` by default).10581059color.status::1060 A boolean to enable/disable color in the output of1061 linkgit:git-status[1]. May be set to `always`,1062 `false` (or `never`) or `auto` (or `true`), in which case colors are used1063 only when the output is to a terminal. If unset, then the1064 value of `color.ui` is used (`auto` by default).10651066color.status.<slot>::1067 Use customized color for status colorization. `<slot>` is1068 one of `header` (the header text of the status message),1069 `added` or `updated` (files which are added but not committed),1070 `changed` (files which are changed but not added in the index),1071 `untracked` (files which are not tracked by Git),1072 `branch` (the current branch),1073 `nobranch` (the color the 'no branch' warning is shown in, defaulting1074 to red), or1075 `unmerged` (files which have unmerged changes).10761077color.ui::1078 This variable determines the default value for variables such1079 as `color.diff` and `color.grep` that control the use of color1080 per command family. Its scope will expand as more commands learn1081 configuration to set a default for the `--color` option. Set it1082 to `false` or `never` if you prefer Git commands not to use1083 color unless enabled explicitly with some other configuration1084 or the `--color` option. Set it to `always` if you want all1085 output not intended for machine consumption to use color, to1086 `true` or `auto` (this is the default since Git 1.8.4) if you1087 want such output to use color when written to the terminal.10881089column.ui::1090 Specify whether supported commands should output in columns.1091 This variable consists of a list of tokens separated by spaces1092 or commas:1093+1094These options control when the feature should be enabled1095(defaults to 'never'):1096+1097--1098`always`;;1099 always show in columns1100`never`;;1101 never show in columns1102`auto`;;1103 show in columns if the output is to the terminal1104--1105+1106These options control layout (defaults to 'column'). Setting any1107of these implies 'always' if none of 'always', 'never', or 'auto' are1108specified.1109+1110--1111`column`;;1112 fill columns before rows1113`row`;;1114 fill rows before columns1115`plain`;;1116 show in one column1117--1118+1119Finally, these options can be combined with a layout option (defaults1120to 'nodense'):1121+1122--1123`dense`;;1124 make unequal size columns to utilize more space1125`nodense`;;1126 make equal size columns1127--11281129column.branch::1130 Specify whether to output branch listing in `git branch` in columns.1131 See `column.ui` for details.11321133column.clean::1134 Specify the layout when list items in `git clean -i`, which always1135 shows files and directories in columns. See `column.ui` for details.11361137column.status::1138 Specify whether to output untracked files in `git status` in columns.1139 See `column.ui` for details.11401141column.tag::1142 Specify whether to output tag listing in `git tag` in columns.1143 See `column.ui` for details.11441145commit.cleanup::1146 This setting overrides the default of the `--cleanup` option in1147 `git commit`. See linkgit:git-commit[1] for details. Changing the1148 default can be useful when you always want to keep lines that begin1149 with comment character `#` in your log message, in which case you1150 would do `git config commit.cleanup whitespace` (note that you will1151 have to remove the help lines that begin with `#` in the commit log1152 template yourself, if you do this).11531154commit.gpgSign::11551156 A boolean to specify whether all commits should be GPG signed.1157 Use of this option when doing operations such as rebase can1158 result in a large number of commits being signed. It may be1159 convenient to use an agent to avoid typing your GPG passphrase1160 several times.11611162commit.status::1163 A boolean to enable/disable inclusion of status information in the1164 commit message template when using an editor to prepare the commit1165 message. Defaults to true.11661167commit.template::1168 Specify the pathname of a file to use as the template for1169 new commit messages.11701171commit.verbose::1172 A boolean or int to specify the level of verbose with `git commit`.1173 See linkgit:git-commit[1].11741175credential.helper::1176 Specify an external helper to be called when a username or1177 password credential is needed; the helper may consult external1178 storage to avoid prompting the user for the credentials. Note1179 that multiple helpers may be defined. See linkgit:gitcredentials[7]1180 for details.11811182credential.useHttpPath::1183 When acquiring credentials, consider the "path" component of an http1184 or https URL to be important. Defaults to false. See1185 linkgit:gitcredentials[7] for more information.11861187credential.username::1188 If no username is set for a network authentication, use this username1189 by default. See credential.<context>.* below, and1190 linkgit:gitcredentials[7].11911192credential.<url>.*::1193 Any of the credential.* options above can be applied selectively to1194 some credentials. For example "credential.https://example.com.username"1195 would set the default username only for https connections to1196 example.com. See linkgit:gitcredentials[7] for details on how URLs are1197 matched.11981199credentialCache.ignoreSIGHUP::1200 Tell git-credential-cache--daemon to ignore SIGHUP, instead of quitting.12011202include::diff-config.txt[]12031204difftool.<tool>.path::1205 Override the path for the given tool. This is useful in case1206 your tool is not in the PATH.12071208difftool.<tool>.cmd::1209 Specify the command to invoke the specified diff tool.1210 The specified command is evaluated in shell with the following1211 variables available: 'LOCAL' is set to the name of the temporary1212 file containing the contents of the diff pre-image and 'REMOTE'1213 is set to the name of the temporary file containing the contents1214 of the diff post-image.12151216difftool.prompt::1217 Prompt before each invocation of the diff tool.12181219fastimport.unpackLimit::1220 If the number of objects imported by linkgit:git-fast-import[1]1221 is below this limit, then the objects will be unpacked into1222 loose object files. However if the number of imported objects1223 equals or exceeds this limit then the pack will be stored as a1224 pack. Storing the pack from a fast-import can make the import1225 operation complete faster, especially on slow filesystems. If1226 not set, the value of `transfer.unpackLimit` is used instead.12271228fetch.recurseSubmodules::1229 This option can be either set to a boolean value or to 'on-demand'.1230 Setting it to a boolean changes the behavior of fetch and pull to1231 unconditionally recurse into submodules when set to true or to not1232 recurse at all when set to false. When set to 'on-demand' (the default1233 value), fetch and pull will only recurse into a populated submodule1234 when its superproject retrieves a commit that updates the submodule's1235 reference.12361237fetch.fsckObjects::1238 If it is set to true, git-fetch-pack will check all fetched1239 objects. It will abort in the case of a malformed object or a1240 broken link. The result of an abort are only dangling objects.1241 Defaults to false. If not set, the value of `transfer.fsckObjects`1242 is used instead.12431244fetch.unpackLimit::1245 If the number of objects fetched over the Git native1246 transfer is below this1247 limit, then the objects will be unpacked into loose object1248 files. However if the number of received objects equals or1249 exceeds this limit then the received pack will be stored as1250 a pack, after adding any missing delta bases. Storing the1251 pack from a push can make the push operation complete faster,1252 especially on slow filesystems. If not set, the value of1253 `transfer.unpackLimit` is used instead.12541255fetch.prune::1256 If true, fetch will automatically behave as if the `--prune`1257 option was given on the command line. See also `remote.<name>.prune`.12581259fetch.output::1260 Control how ref update status is printed. Valid values are1261 `full` and `compact`. Default value is `full`. See section1262 OUTPUT in linkgit:git-fetch[1] for detail.12631264format.attach::1265 Enable multipart/mixed attachments as the default for1266 'format-patch'. The value can also be a double quoted string1267 which will enable attachments as the default and set the1268 value as the boundary. See the --attach option in1269 linkgit:git-format-patch[1].12701271format.from::1272 Provides the default value for the `--from` option to format-patch.1273 Accepts a boolean value, or a name and email address. If false,1274 format-patch defaults to `--no-from`, using commit authors directly in1275 the "From:" field of patch mails. If true, format-patch defaults to1276 `--from`, using your committer identity in the "From:" field of patch1277 mails and including a "From:" field in the body of the patch mail if1278 different. If set to a non-boolean value, format-patch uses that1279 value instead of your committer identity. Defaults to false.12801281format.numbered::1282 A boolean which can enable or disable sequence numbers in patch1283 subjects. It defaults to "auto" which enables it only if there1284 is more than one patch. It can be enabled or disabled for all1285 messages by setting it to "true" or "false". See --numbered1286 option in linkgit:git-format-patch[1].12871288format.headers::1289 Additional email headers to include in a patch to be submitted1290 by mail. See linkgit:git-format-patch[1].12911292format.to::1293format.cc::1294 Additional recipients to include in a patch to be submitted1295 by mail. See the --to and --cc options in1296 linkgit:git-format-patch[1].12971298format.subjectPrefix::1299 The default for format-patch is to output files with the '[PATCH]'1300 subject prefix. Use this variable to change that prefix.13011302format.signature::1303 The default for format-patch is to output a signature containing1304 the Git version number. Use this variable to change that default.1305 Set this variable to the empty string ("") to suppress1306 signature generation.13071308format.signatureFile::1309 Works just like format.signature except the contents of the1310 file specified by this variable will be used as the signature.13111312format.suffix::1313 The default for format-patch is to output files with the suffix1314 `.patch`. Use this variable to change that suffix (make sure to1315 include the dot if you want it).13161317format.pretty::1318 The default pretty format for log/show/whatchanged command,1319 See linkgit:git-log[1], linkgit:git-show[1],1320 linkgit:git-whatchanged[1].13211322format.thread::1323 The default threading style for 'git format-patch'. Can be1324 a boolean value, or `shallow` or `deep`. `shallow` threading1325 makes every mail a reply to the head of the series,1326 where the head is chosen from the cover letter, the1327 `--in-reply-to`, and the first patch mail, in this order.1328 `deep` threading makes every mail a reply to the previous one.1329 A true boolean value is the same as `shallow`, and a false1330 value disables threading.13311332format.signOff::1333 A boolean value which lets you enable the `-s/--signoff` option of1334 format-patch by default. *Note:* Adding the Signed-off-by: line to a1335 patch should be a conscious act and means that you certify you have1336 the rights to submit this work under the same open source license.1337 Please see the 'SubmittingPatches' document for further discussion.13381339format.coverLetter::1340 A boolean that controls whether to generate a cover-letter when1341 format-patch is invoked, but in addition can be set to "auto", to1342 generate a cover-letter only when there's more than one patch.13431344format.outputDirectory::1345 Set a custom directory to store the resulting files instead of the1346 current working directory.13471348format.useAutoBase::1349 A boolean value which lets you enable the `--base=auto` option of1350 format-patch by default.13511352filter.<driver>.clean::1353 The command which is used to convert the content of a worktree1354 file to a blob upon checkin. See linkgit:gitattributes[5] for1355 details.13561357filter.<driver>.smudge::1358 The command which is used to convert the content of a blob1359 object to a worktree file upon checkout. See1360 linkgit:gitattributes[5] for details.13611362fsck.<msg-id>::1363 Allows overriding the message type (error, warn or ignore) of a1364 specific message ID such as `missingEmail`.1365+1366For convenience, fsck prefixes the error/warning with the message ID,1367e.g. "missingEmail: invalid author/committer line - missing email" means1368that setting `fsck.missingEmail = ignore` will hide that issue.1369+1370This feature is intended to support working with legacy repositories1371which cannot be repaired without disruptive changes.13721373fsck.skipList::1374 The path to a sorted list of object names (i.e. one SHA-1 per1375 line) that are known to be broken in a non-fatal way and should1376 be ignored. This feature is useful when an established project1377 should be accepted despite early commits containing errors that1378 can be safely ignored such as invalid committer email addresses.1379 Note: corrupt objects cannot be skipped with this setting.13801381gc.aggressiveDepth::1382 The depth parameter used in the delta compression1383 algorithm used by 'git gc --aggressive'. This defaults1384 to 50.13851386gc.aggressiveWindow::1387 The window size parameter used in the delta compression1388 algorithm used by 'git gc --aggressive'. This defaults1389 to 250.13901391gc.auto::1392 When there are approximately more than this many loose1393 objects in the repository, `git gc --auto` will pack them.1394 Some Porcelain commands use this command to perform a1395 light-weight garbage collection from time to time. The1396 default value is 6700. Setting this to 0 disables it.13971398gc.autoPackLimit::1399 When there are more than this many packs that are not1400 marked with `*.keep` file in the repository, `git gc1401 --auto` consolidates them into one larger pack. The1402 default value is 50. Setting this to 0 disables it.14031404gc.autoDetach::1405 Make `git gc --auto` return immediately and run in background1406 if the system supports it. Default is true.14071408gc.logExpiry::1409 If the file gc.log exists, then `git gc --auto` won't run1410 unless that file is more than 'gc.logExpiry' old. Default is1411 "1.day". See `gc.pruneExpire` for more ways to specify its1412 value.14131414gc.packRefs::1415 Running `git pack-refs` in a repository renders it1416 unclonable by Git versions prior to 1.5.1.2 over dumb1417 transports such as HTTP. This variable determines whether1418 'git gc' runs `git pack-refs`. This can be set to `notbare`1419 to enable it within all non-bare repos or it can be set to a1420 boolean value. The default is `true`.14211422gc.pruneExpire::1423 When 'git gc' is run, it will call 'prune --expire 2.weeks.ago'.1424 Override the grace period with this config variable. The value1425 "now" may be used to disable this grace period and always prune1426 unreachable objects immediately, or "never" may be used to1427 suppress pruning. This feature helps prevent corruption when1428 'git gc' runs concurrently with another process writing to the1429 repository; see the "NOTES" section of linkgit:git-gc[1].14301431gc.worktreePruneExpire::1432 When 'git gc' is run, it calls1433 'git worktree prune --expire 3.months.ago'.1434 This config variable can be used to set a different grace1435 period. The value "now" may be used to disable the grace1436 period and prune `$GIT_DIR/worktrees` immediately, or "never"1437 may be used to suppress pruning.14381439gc.reflogExpire::1440gc.<pattern>.reflogExpire::1441 'git reflog expire' removes reflog entries older than1442 this time; defaults to 90 days. The value "now" expires all1443 entries immediately, and "never" suppresses expiration1444 altogether. With "<pattern>" (e.g.1445 "refs/stash") in the middle the setting applies only to1446 the refs that match the <pattern>.14471448gc.reflogExpireUnreachable::1449gc.<pattern>.reflogExpireUnreachable::1450 'git reflog expire' removes reflog entries older than1451 this time and are not reachable from the current tip;1452 defaults to 30 days. The value "now" expires all entries1453 immediately, and "never" suppresses expiration altogether.1454 With "<pattern>" (e.g. "refs/stash")1455 in the middle, the setting applies only to the refs that1456 match the <pattern>.14571458gc.rerereResolved::1459 Records of conflicted merge you resolved earlier are1460 kept for this many days when 'git rerere gc' is run.1461 The default is 60 days. See linkgit:git-rerere[1].14621463gc.rerereUnresolved::1464 Records of conflicted merge you have not resolved are1465 kept for this many days when 'git rerere gc' is run.1466 The default is 15 days. See linkgit:git-rerere[1].14671468gitcvs.commitMsgAnnotation::1469 Append this string to each commit message. Set to empty string1470 to disable this feature. Defaults to "via git-CVS emulator".14711472gitcvs.enabled::1473 Whether the CVS server interface is enabled for this repository.1474 See linkgit:git-cvsserver[1].14751476gitcvs.logFile::1477 Path to a log file where the CVS server interface well... logs1478 various stuff. See linkgit:git-cvsserver[1].14791480gitcvs.usecrlfattr::1481 If true, the server will look up the end-of-line conversion1482 attributes for files to determine the `-k` modes to use. If1483 the attributes force Git to treat a file as text,1484 the `-k` mode will be left blank so CVS clients will1485 treat it as text. If they suppress text conversion, the file1486 will be set with '-kb' mode, which suppresses any newline munging1487 the client might otherwise do. If the attributes do not allow1488 the file type to be determined, then `gitcvs.allBinary` is1489 used. See linkgit:gitattributes[5].14901491gitcvs.allBinary::1492 This is used if `gitcvs.usecrlfattr` does not resolve1493 the correct '-kb' mode to use. If true, all1494 unresolved files are sent to the client in1495 mode '-kb'. This causes the client to treat them1496 as binary files, which suppresses any newline munging it1497 otherwise might do. Alternatively, if it is set to "guess",1498 then the contents of the file are examined to decide if1499 it is binary, similar to `core.autocrlf`.15001501gitcvs.dbName::1502 Database used by git-cvsserver to cache revision information1503 derived from the Git repository. The exact meaning depends on the1504 used database driver, for SQLite (which is the default driver) this1505 is a filename. Supports variable substitution (see1506 linkgit:git-cvsserver[1] for details). May not contain semicolons (`;`).1507 Default: '%Ggitcvs.%m.sqlite'15081509gitcvs.dbDriver::1510 Used Perl DBI driver. You can specify any available driver1511 for this here, but it might not work. git-cvsserver is tested1512 with 'DBD::SQLite', reported to work with 'DBD::Pg', and1513 reported *not* to work with 'DBD::mysql'. Experimental feature.1514 May not contain double colons (`:`). Default: 'SQLite'.1515 See linkgit:git-cvsserver[1].15161517gitcvs.dbUser, gitcvs.dbPass::1518 Database user and password. Only useful if setting `gitcvs.dbDriver`,1519 since SQLite has no concept of database users and/or passwords.1520 'gitcvs.dbUser' supports variable substitution (see1521 linkgit:git-cvsserver[1] for details).15221523gitcvs.dbTableNamePrefix::1524 Database table name prefix. Prepended to the names of any1525 database tables used, allowing a single database to be used1526 for several repositories. Supports variable substitution (see1527 linkgit:git-cvsserver[1] for details). Any non-alphabetic1528 characters will be replaced with underscores.15291530All gitcvs variables except for `gitcvs.usecrlfattr` and1531`gitcvs.allBinary` can also be specified as1532'gitcvs.<access_method>.<varname>' (where 'access_method'1533is one of "ext" and "pserver") to make them apply only for the given1534access method.15351536gitweb.category::1537gitweb.description::1538gitweb.owner::1539gitweb.url::1540 See linkgit:gitweb[1] for description.15411542gitweb.avatar::1543gitweb.blame::1544gitweb.grep::1545gitweb.highlight::1546gitweb.patches::1547gitweb.pickaxe::1548gitweb.remote_heads::1549gitweb.showSizes::1550gitweb.snapshot::1551 See linkgit:gitweb.conf[5] for description.15521553grep.lineNumber::1554 If set to true, enable `-n` option by default.15551556grep.patternType::1557 Set the default matching behavior. Using a value of 'basic', 'extended',1558 'fixed', or 'perl' will enable the `--basic-regexp`, `--extended-regexp`,1559 `--fixed-strings`, or `--perl-regexp` option accordingly, while the1560 value 'default' will return to the default matching behavior.15611562grep.extendedRegexp::1563 If set to true, enable `--extended-regexp` option by default. This1564 option is ignored when the `grep.patternType` option is set to a value1565 other than 'default'.15661567grep.threads::1568 Number of grep worker threads to use.1569 See `grep.threads` in linkgit:git-grep[1] for more information.15701571grep.fallbackToNoIndex::1572 If set to true, fall back to git grep --no-index if git grep1573 is executed outside of a git repository. Defaults to false.15741575gpg.program::1576 Use this custom program instead of "`gpg`" found on `$PATH` when1577 making or verifying a PGP signature. The program must support the1578 same command-line interface as GPG, namely, to verify a detached1579 signature, "`gpg --verify $file - <$signature`" is run, and the1580 program is expected to signal a good signature by exiting with1581 code 0, and to generate an ASCII-armored detached signature, the1582 standard input of "`gpg -bsau $key`" is fed with the contents to be1583 signed, and the program is expected to send the result to its1584 standard output.15851586gui.commitMsgWidth::1587 Defines how wide the commit message window is in the1588 linkgit:git-gui[1]. "75" is the default.15891590gui.diffContext::1591 Specifies how many context lines should be used in calls to diff1592 made by the linkgit:git-gui[1]. The default is "5".15931594gui.displayUntracked::1595 Determines if linkgit:git-gui[1] shows untracked files1596 in the file list. The default is "true".15971598gui.encoding::1599 Specifies the default encoding to use for displaying of1600 file contents in linkgit:git-gui[1] and linkgit:gitk[1].1601 It can be overridden by setting the 'encoding' attribute1602 for relevant files (see linkgit:gitattributes[5]).1603 If this option is not set, the tools default to the1604 locale encoding.16051606gui.matchTrackingBranch::1607 Determines if new branches created with linkgit:git-gui[1] should1608 default to tracking remote branches with matching names or1609 not. Default: "false".16101611gui.newBranchTemplate::1612 Is used as suggested name when creating new branches using the1613 linkgit:git-gui[1].16141615gui.pruneDuringFetch::1616 "true" if linkgit:git-gui[1] should prune remote-tracking branches when1617 performing a fetch. The default value is "false".16181619gui.trustmtime::1620 Determines if linkgit:git-gui[1] should trust the file modification1621 timestamp or not. By default the timestamps are not trusted.16221623gui.spellingDictionary::1624 Specifies the dictionary used for spell checking commit messages in1625 the linkgit:git-gui[1]. When set to "none" spell checking is turned1626 off.16271628gui.fastCopyBlame::1629 If true, 'git gui blame' uses `-C` instead of `-C -C` for original1630 location detection. It makes blame significantly faster on huge1631 repositories at the expense of less thorough copy detection.16321633gui.copyBlameThreshold::1634 Specifies the threshold to use in 'git gui blame' original location1635 detection, measured in alphanumeric characters. See the1636 linkgit:git-blame[1] manual for more information on copy detection.16371638gui.blamehistoryctx::1639 Specifies the radius of history context in days to show in1640 linkgit:gitk[1] for the selected commit, when the `Show History1641 Context` menu item is invoked from 'git gui blame'. If this1642 variable is set to zero, the whole history is shown.16431644guitool.<name>.cmd::1645 Specifies the shell command line to execute when the corresponding item1646 of the linkgit:git-gui[1] `Tools` menu is invoked. This option is1647 mandatory for every tool. The command is executed from the root of1648 the working directory, and in the environment it receives the name of1649 the tool as `GIT_GUITOOL`, the name of the currently selected file as1650 'FILENAME', and the name of the current branch as 'CUR_BRANCH' (if1651 the head is detached, 'CUR_BRANCH' is empty).16521653guitool.<name>.needsFile::1654 Run the tool only if a diff is selected in the GUI. It guarantees1655 that 'FILENAME' is not empty.16561657guitool.<name>.noConsole::1658 Run the command silently, without creating a window to display its1659 output.16601661guitool.<name>.noRescan::1662 Don't rescan the working directory for changes after the tool1663 finishes execution.16641665guitool.<name>.confirm::1666 Show a confirmation dialog before actually running the tool.16671668guitool.<name>.argPrompt::1669 Request a string argument from the user, and pass it to the tool1670 through the `ARGS` environment variable. Since requesting an1671 argument implies confirmation, the 'confirm' option has no effect1672 if this is enabled. If the option is set to 'true', 'yes', or '1',1673 the dialog uses a built-in generic prompt; otherwise the exact1674 value of the variable is used.16751676guitool.<name>.revPrompt::1677 Request a single valid revision from the user, and set the1678 `REVISION` environment variable. In other aspects this option1679 is similar to 'argPrompt', and can be used together with it.16801681guitool.<name>.revUnmerged::1682 Show only unmerged branches in the 'revPrompt' subdialog.1683 This is useful for tools similar to merge or rebase, but not1684 for things like checkout or reset.16851686guitool.<name>.title::1687 Specifies the title to use for the prompt dialog. The default1688 is the tool name.16891690guitool.<name>.prompt::1691 Specifies the general prompt string to display at the top of1692 the dialog, before subsections for 'argPrompt' and 'revPrompt'.1693 The default value includes the actual command.16941695help.browser::1696 Specify the browser that will be used to display help in the1697 'web' format. See linkgit:git-help[1].16981699help.format::1700 Override the default help format used by linkgit:git-help[1].1701 Values 'man', 'info', 'web' and 'html' are supported. 'man' is1702 the default. 'web' and 'html' are the same.17031704help.autoCorrect::1705 Automatically correct and execute mistyped commands after1706 waiting for the given number of deciseconds (0.1 sec). If more1707 than one command can be deduced from the entered text, nothing1708 will be executed. If the value of this option is negative,1709 the corrected command will be executed immediately. If the1710 value is 0 - the command will be just shown but not executed.1711 This is the default.17121713help.htmlPath::1714 Specify the path where the HTML documentation resides. File system paths1715 and URLs are supported. HTML pages will be prefixed with this path when1716 help is displayed in the 'web' format. This defaults to the documentation1717 path of your Git installation.17181719http.proxy::1720 Override the HTTP proxy, normally configured using the 'http_proxy',1721 'https_proxy', and 'all_proxy' environment variables (see `curl(1)`). In1722 addition to the syntax understood by curl, it is possible to specify a1723 proxy string with a user name but no password, in which case git will1724 attempt to acquire one in the same way it does for other credentials. See1725 linkgit:gitcredentials[7] for more information. The syntax thus is1726 '[protocol://][user[:password]@]proxyhost[:port]'. This can be overridden1727 on a per-remote basis; see remote.<name>.proxy17281729http.proxyAuthMethod::1730 Set the method with which to authenticate against the HTTP proxy. This1731 only takes effect if the configured proxy string contains a user name part1732 (i.e. is of the form 'user@host' or 'user@host:port'). This can be1733 overridden on a per-remote basis; see `remote.<name>.proxyAuthMethod`.1734 Both can be overridden by the `GIT_HTTP_PROXY_AUTHMETHOD` environment1735 variable. Possible values are:1736+1737--1738* `anyauth` - Automatically pick a suitable authentication method. It is1739 assumed that the proxy answers an unauthenticated request with a 4071740 status code and one or more Proxy-authenticate headers with supported1741 authentication methods. This is the default.1742* `basic` - HTTP Basic authentication1743* `digest` - HTTP Digest authentication; this prevents the password from being1744 transmitted to the proxy in clear text1745* `negotiate` - GSS-Negotiate authentication (compare the --negotiate option1746 of `curl(1)`)1747* `ntlm` - NTLM authentication (compare the --ntlm option of `curl(1)`)1748--17491750http.emptyAuth::1751 Attempt authentication without seeking a username or password. This1752 can be used to attempt GSS-Negotiate authentication without specifying1753 a username in the URL, as libcurl normally requires a username for1754 authentication.17551756http.delegation::1757 Control GSSAPI credential delegation. The delegation is disabled1758 by default in libcurl since version 7.21.7. Set parameter to tell1759 the server what it is allowed to delegate when it comes to user1760 credentials. Used with GSS/kerberos. Possible values are:1761+1762--1763* `none` - Don't allow any delegation.1764* `policy` - Delegates if and only if the OK-AS-DELEGATE flag is set in the1765 Kerberos service ticket, which is a matter of realm policy.1766* `always` - Unconditionally allow the server to delegate.1767--176817691770http.extraHeader::1771 Pass an additional HTTP header when communicating with a server. If1772 more than one such entry exists, all of them are added as extra1773 headers. To allow overriding the settings inherited from the system1774 config, an empty value will reset the extra headers to the empty list.17751776http.cookieFile::1777 The pathname of a file containing previously stored cookie lines,1778 which should be used1779 in the Git http session, if they match the server. The file format1780 of the file to read cookies from should be plain HTTP headers or1781 the Netscape/Mozilla cookie file format (see `curl(1)`).1782 NOTE that the file specified with http.cookieFile is used only as1783 input unless http.saveCookies is set.17841785http.saveCookies::1786 If set, store cookies received during requests to the file specified by1787 http.cookieFile. Has no effect if http.cookieFile is unset.17881789http.sslVersion::1790 The SSL version to use when negotiating an SSL connection, if you1791 want to force the default. The available and default version1792 depend on whether libcurl was built against NSS or OpenSSL and the1793 particular configuration of the crypto library in use. Internally1794 this sets the 'CURLOPT_SSL_VERSION' option; see the libcurl1795 documentation for more details on the format of this option and1796 for the ssl version supported. Actually the possible values of1797 this option are:17981799 - sslv21800 - sslv31801 - tlsv11802 - tlsv1.01803 - tlsv1.11804 - tlsv1.218051806+1807Can be overridden by the `GIT_SSL_VERSION` environment variable.1808To force git to use libcurl's default ssl version and ignore any1809explicit http.sslversion option, set `GIT_SSL_VERSION` to the1810empty string.18111812http.sslCipherList::1813 A list of SSL ciphers to use when negotiating an SSL connection.1814 The available ciphers depend on whether libcurl was built against1815 NSS or OpenSSL and the particular configuration of the crypto1816 library in use. Internally this sets the 'CURLOPT_SSL_CIPHER_LIST'1817 option; see the libcurl documentation for more details on the format1818 of this list.1819+1820Can be overridden by the `GIT_SSL_CIPHER_LIST` environment variable.1821To force git to use libcurl's default cipher list and ignore any1822explicit http.sslCipherList option, set `GIT_SSL_CIPHER_LIST` to the1823empty string.18241825http.sslVerify::1826 Whether to verify the SSL certificate when fetching or pushing1827 over HTTPS. Can be overridden by the `GIT_SSL_NO_VERIFY` environment1828 variable.18291830http.sslCert::1831 File containing the SSL certificate when fetching or pushing1832 over HTTPS. Can be overridden by the `GIT_SSL_CERT` environment1833 variable.18341835http.sslKey::1836 File containing the SSL private key when fetching or pushing1837 over HTTPS. Can be overridden by the `GIT_SSL_KEY` environment1838 variable.18391840http.sslCertPasswordProtected::1841 Enable Git's password prompt for the SSL certificate. Otherwise1842 OpenSSL will prompt the user, possibly many times, if the1843 certificate or private key is encrypted. Can be overridden by the1844 `GIT_SSL_CERT_PASSWORD_PROTECTED` environment variable.18451846http.sslCAInfo::1847 File containing the certificates to verify the peer with when1848 fetching or pushing over HTTPS. Can be overridden by the1849 `GIT_SSL_CAINFO` environment variable.18501851http.sslCAPath::1852 Path containing files with the CA certificates to verify the peer1853 with when fetching or pushing over HTTPS. Can be overridden1854 by the `GIT_SSL_CAPATH` environment variable.18551856http.pinnedpubkey::1857 Public key of the https service. It may either be the filename of1858 a PEM or DER encoded public key file or a string starting with1859 'sha256//' followed by the base64 encoded sha256 hash of the1860 public key. See also libcurl 'CURLOPT_PINNEDPUBLICKEY'. git will1861 exit with an error if this option is set but not supported by1862 cURL.18631864http.sslTry::1865 Attempt to use AUTH SSL/TLS and encrypted data transfers1866 when connecting via regular FTP protocol. This might be needed1867 if the FTP server requires it for security reasons or you wish1868 to connect securely whenever remote FTP server supports it.1869 Default is false since it might trigger certificate verification1870 errors on misconfigured servers.18711872http.maxRequests::1873 How many HTTP requests to launch in parallel. Can be overridden1874 by the `GIT_HTTP_MAX_REQUESTS` environment variable. Default is 5.18751876http.minSessions::1877 The number of curl sessions (counted across slots) to be kept across1878 requests. They will not be ended with curl_easy_cleanup() until1879 http_cleanup() is invoked. If USE_CURL_MULTI is not defined, this1880 value will be capped at 1. Defaults to 1.18811882http.postBuffer::1883 Maximum size in bytes of the buffer used by smart HTTP1884 transports when POSTing data to the remote system.1885 For requests larger than this buffer size, HTTP/1.1 and1886 Transfer-Encoding: chunked is used to avoid creating a1887 massive pack file locally. Default is 1 MiB, which is1888 sufficient for most requests.18891890http.lowSpeedLimit, http.lowSpeedTime::1891 If the HTTP transfer speed is less than 'http.lowSpeedLimit'1892 for longer than 'http.lowSpeedTime' seconds, the transfer is aborted.1893 Can be overridden by the `GIT_HTTP_LOW_SPEED_LIMIT` and1894 `GIT_HTTP_LOW_SPEED_TIME` environment variables.18951896http.noEPSV::1897 A boolean which disables using of EPSV ftp command by curl.1898 This can helpful with some "poor" ftp servers which don't1899 support EPSV mode. Can be overridden by the `GIT_CURL_FTP_NO_EPSV`1900 environment variable. Default is false (curl will use EPSV).19011902http.userAgent::1903 The HTTP USER_AGENT string presented to an HTTP server. The default1904 value represents the version of the client Git such as git/1.7.1.1905 This option allows you to override this value to a more common value1906 such as Mozilla/4.0. This may be necessary, for instance, if1907 connecting through a firewall that restricts HTTP connections to a set1908 of common USER_AGENT strings (but not including those like git/1.7.1).1909 Can be overridden by the `GIT_HTTP_USER_AGENT` environment variable.19101911http.followRedirects::1912 Whether git should follow HTTP redirects. If set to `true`, git1913 will transparently follow any redirect issued by a server it1914 encounters. If set to `false`, git will treat all redirects as1915 errors. If set to `initial`, git will follow redirects only for1916 the initial request to a remote, but not for subsequent1917 follow-up HTTP requests. Since git uses the redirected URL as1918 the base for the follow-up requests, this is generally1919 sufficient. The default is `initial`.19201921http.<url>.*::1922 Any of the http.* options above can be applied selectively to some URLs.1923 For a config key to match a URL, each element of the config key is1924 compared to that of the URL, in the following order:1925+1926--1927. Scheme (e.g., `https` in `https://example.com/`). This field1928 must match exactly between the config key and the URL.19291930. Host/domain name (e.g., `example.com` in `https://example.com/`).1931 This field must match between the config key and the URL. It is1932 possible to specify a `*` as part of the host name to match all subdomains1933 at this level. `https://*.example.com/` for example would match1934 `https://foo.example.com/`, but not `https://foo.bar.example.com/`.19351936. Port number (e.g., `8080` in `http://example.com:8080/`).1937 This field must match exactly between the config key and the URL.1938 Omitted port numbers are automatically converted to the correct1939 default for the scheme before matching.19401941. Path (e.g., `repo.git` in `https://example.com/repo.git`). The1942 path field of the config key must match the path field of the URL1943 either exactly or as a prefix of slash-delimited path elements. This means1944 a config key with path `foo/` matches URL path `foo/bar`. A prefix can only1945 match on a slash (`/`) boundary. Longer matches take precedence (so a config1946 key with path `foo/bar` is a better match to URL path `foo/bar` than a config1947 key with just path `foo/`).19481949. User name (e.g., `user` in `https://user@example.com/repo.git`). If1950 the config key has a user name it must match the user name in the1951 URL exactly. If the config key does not have a user name, that1952 config key will match a URL with any user name (including none),1953 but at a lower precedence than a config key with a user name.1954--1955+1956The list above is ordered by decreasing precedence; a URL that matches1957a config key's path is preferred to one that matches its user name. For example,1958if the URL is `https://user@example.com/foo/bar` a config key match of1959`https://example.com/foo` will be preferred over a config key match of1960`https://user@example.com`.1961+1962All URLs are normalized before attempting any matching (the password part,1963if embedded in the URL, is always ignored for matching purposes) so that1964equivalent URLs that are simply spelled differently will match properly.1965Environment variable settings always override any matches. The URLs that are1966matched against are those given directly to Git commands. This means any URLs1967visited as a result of a redirection do not participate in matching.19681969ssh.variant::1970 Depending on the value of the environment variables `GIT_SSH` or1971 `GIT_SSH_COMMAND`, or the config setting `core.sshCommand`, Git1972 auto-detects whether to adjust its command-line parameters for use1973 with plink or tortoiseplink, as opposed to the default (OpenSSH).1974+1975The config variable `ssh.variant` can be set to override this auto-detection;1976valid values are `ssh`, `plink`, `putty` or `tortoiseplink`. Any other value1977will be treated as normal ssh. This setting can be overridden via the1978environment variable `GIT_SSH_VARIANT`.19791980i18n.commitEncoding::1981 Character encoding the commit messages are stored in; Git itself1982 does not care per se, but this information is necessary e.g. when1983 importing commits from emails or in the gitk graphical history1984 browser (and possibly at other places in the future or in other1985 porcelains). See e.g. linkgit:git-mailinfo[1]. Defaults to 'utf-8'.19861987i18n.logOutputEncoding::1988 Character encoding the commit messages are converted to when1989 running 'git log' and friends.19901991imap::1992 The configuration variables in the 'imap' section are described1993 in linkgit:git-imap-send[1].19941995index.version::1996 Specify the version with which new index files should be1997 initialized. This does not affect existing repositories.19981999init.templateDir::2000 Specify the directory from which templates will be copied.2001 (See the "TEMPLATE DIRECTORY" section of linkgit:git-init[1].)20022003instaweb.browser::2004 Specify the program that will be used to browse your working2005 repository in gitweb. See linkgit:git-instaweb[1].20062007instaweb.httpd::2008 The HTTP daemon command-line to start gitweb on your working2009 repository. See linkgit:git-instaweb[1].20102011instaweb.local::2012 If true the web server started by linkgit:git-instaweb[1] will2013 be bound to the local IP (127.0.0.1).20142015instaweb.modulePath::2016 The default module path for linkgit:git-instaweb[1] to use2017 instead of /usr/lib/apache2/modules. Only used if httpd2018 is Apache.20192020instaweb.port::2021 The port number to bind the gitweb httpd to. See2022 linkgit:git-instaweb[1].20232024interactive.singleKey::2025 In interactive commands, allow the user to provide one-letter2026 input with a single key (i.e., without hitting enter).2027 Currently this is used by the `--patch` mode of2028 linkgit:git-add[1], linkgit:git-checkout[1], linkgit:git-commit[1],2029 linkgit:git-reset[1], and linkgit:git-stash[1]. Note that this2030 setting is silently ignored if portable keystroke input2031 is not available; requires the Perl module Term::ReadKey.20322033interactive.diffFilter::2034 When an interactive command (such as `git add --patch`) shows2035 a colorized diff, git will pipe the diff through the shell2036 command defined by this configuration variable. The command may2037 mark up the diff further for human consumption, provided that it2038 retains a one-to-one correspondence with the lines in the2039 original diff. Defaults to disabled (no filtering).20402041log.abbrevCommit::2042 If true, makes linkgit:git-log[1], linkgit:git-show[1], and2043 linkgit:git-whatchanged[1] assume `--abbrev-commit`. You may2044 override this option with `--no-abbrev-commit`.20452046log.date::2047 Set the default date-time mode for the 'log' command.2048 Setting a value for log.date is similar to using 'git log''s2049 `--date` option. See linkgit:git-log[1] for details.20502051log.decorate::2052 Print out the ref names of any commits that are shown by the log2053 command. If 'short' is specified, the ref name prefixes 'refs/heads/',2054 'refs/tags/' and 'refs/remotes/' will not be printed. If 'full' is2055 specified, the full ref name (including prefix) will be printed.2056 If 'auto' is specified, then if the output is going to a terminal,2057 the ref names are shown as if 'short' were given, otherwise no ref2058 names are shown. This is the same as the `--decorate` option2059 of the `git log`.20602061log.follow::2062 If `true`, `git log` will act as if the `--follow` option was used when2063 a single <path> is given. This has the same limitations as `--follow`,2064 i.e. it cannot be used to follow multiple files and does not work well2065 on non-linear history.20662067log.graphColors::2068 A list of colors, separated by commas, that can be used to draw2069 history lines in `git log --graph`.20702071log.showRoot::2072 If true, the initial commit will be shown as a big creation event.2073 This is equivalent to a diff against an empty tree.2074 Tools like linkgit:git-log[1] or linkgit:git-whatchanged[1], which2075 normally hide the root commit will now show it. True by default.20762077log.mailmap::2078 If true, makes linkgit:git-log[1], linkgit:git-show[1], and2079 linkgit:git-whatchanged[1] assume `--use-mailmap`.20802081mailinfo.scissors::2082 If true, makes linkgit:git-mailinfo[1] (and therefore2083 linkgit:git-am[1]) act by default as if the --scissors option2084 was provided on the command-line. When active, this features2085 removes everything from the message body before a scissors2086 line (i.e. consisting mainly of ">8", "8<" and "-").20872088mailmap.file::2089 The location of an augmenting mailmap file. The default2090 mailmap, located in the root of the repository, is loaded2091 first, then the mailmap file pointed to by this variable.2092 The location of the mailmap file may be in a repository2093 subdirectory, or somewhere outside of the repository itself.2094 See linkgit:git-shortlog[1] and linkgit:git-blame[1].20952096mailmap.blob::2097 Like `mailmap.file`, but consider the value as a reference to a2098 blob in the repository. If both `mailmap.file` and2099 `mailmap.blob` are given, both are parsed, with entries from2100 `mailmap.file` taking precedence. In a bare repository, this2101 defaults to `HEAD:.mailmap`. In a non-bare repository, it2102 defaults to empty.21032104man.viewer::2105 Specify the programs that may be used to display help in the2106 'man' format. See linkgit:git-help[1].21072108man.<tool>.cmd::2109 Specify the command to invoke the specified man viewer. The2110 specified command is evaluated in shell with the man page2111 passed as argument. (See linkgit:git-help[1].)21122113man.<tool>.path::2114 Override the path for the given tool that may be used to2115 display help in the 'man' format. See linkgit:git-help[1].21162117include::merge-config.txt[]21182119mergetool.<tool>.path::2120 Override the path for the given tool. This is useful in case2121 your tool is not in the PATH.21222123mergetool.<tool>.cmd::2124 Specify the command to invoke the specified merge tool. The2125 specified command is evaluated in shell with the following2126 variables available: 'BASE' is the name of a temporary file2127 containing the common base of the files to be merged, if available;2128 'LOCAL' is the name of a temporary file containing the contents of2129 the file on the current branch; 'REMOTE' is the name of a temporary2130 file containing the contents of the file from the branch being2131 merged; 'MERGED' contains the name of the file to which the merge2132 tool should write the results of a successful merge.21332134mergetool.<tool>.trustExitCode::2135 For a custom merge command, specify whether the exit code of2136 the merge command can be used to determine whether the merge was2137 successful. If this is not set to true then the merge target file2138 timestamp is checked and the merge assumed to have been successful2139 if the file has been updated, otherwise the user is prompted to2140 indicate the success of the merge.21412142mergetool.meld.hasOutput::2143 Older versions of `meld` do not support the `--output` option.2144 Git will attempt to detect whether `meld` supports `--output`2145 by inspecting the output of `meld --help`. Configuring2146 `mergetool.meld.hasOutput` will make Git skip these checks and2147 use the configured value instead. Setting `mergetool.meld.hasOutput`2148 to `true` tells Git to unconditionally use the `--output` option,2149 and `false` avoids using `--output`.21502151mergetool.keepBackup::2152 After performing a merge, the original file with conflict markers2153 can be saved as a file with a `.orig` extension. If this variable2154 is set to `false` then this file is not preserved. Defaults to2155 `true` (i.e. keep the backup files).21562157mergetool.keepTemporaries::2158 When invoking a custom merge tool, Git uses a set of temporary2159 files to pass to the tool. If the tool returns an error and this2160 variable is set to `true`, then these temporary files will be2161 preserved, otherwise they will be removed after the tool has2162 exited. Defaults to `false`.21632164mergetool.writeToTemp::2165 Git writes temporary 'BASE', 'LOCAL', and 'REMOTE' versions of2166 conflicting files in the worktree by default. Git will attempt2167 to use a temporary directory for these files when set `true`.2168 Defaults to `false`.21692170mergetool.prompt::2171 Prompt before each invocation of the merge resolution program.21722173notes.mergeStrategy::2174 Which merge strategy to choose by default when resolving notes2175 conflicts. Must be one of `manual`, `ours`, `theirs`, `union`, or2176 `cat_sort_uniq`. Defaults to `manual`. See "NOTES MERGE STRATEGIES"2177 section of linkgit:git-notes[1] for more information on each strategy.21782179notes.<name>.mergeStrategy::2180 Which merge strategy to choose when doing a notes merge into2181 refs/notes/<name>. This overrides the more general2182 "notes.mergeStrategy". See the "NOTES MERGE STRATEGIES" section in2183 linkgit:git-notes[1] for more information on the available strategies.21842185notes.displayRef::2186 The (fully qualified) refname from which to show notes when2187 showing commit messages. The value of this variable can be set2188 to a glob, in which case notes from all matching refs will be2189 shown. You may also specify this configuration variable2190 several times. A warning will be issued for refs that do not2191 exist, but a glob that does not match any refs is silently2192 ignored.2193+2194This setting can be overridden with the `GIT_NOTES_DISPLAY_REF`2195environment variable, which must be a colon separated list of refs or2196globs.2197+2198The effective value of "core.notesRef" (possibly overridden by2199GIT_NOTES_REF) is also implicitly added to the list of refs to be2200displayed.22012202notes.rewrite.<command>::2203 When rewriting commits with <command> (currently `amend` or2204 `rebase`) and this variable is set to `true`, Git2205 automatically copies your notes from the original to the2206 rewritten commit. Defaults to `true`, but see2207 "notes.rewriteRef" below.22082209notes.rewriteMode::2210 When copying notes during a rewrite (see the2211 "notes.rewrite.<command>" option), determines what to do if2212 the target commit already has a note. Must be one of2213 `overwrite`, `concatenate`, `cat_sort_uniq`, or `ignore`.2214 Defaults to `concatenate`.2215+2216This setting can be overridden with the `GIT_NOTES_REWRITE_MODE`2217environment variable.22182219notes.rewriteRef::2220 When copying notes during a rewrite, specifies the (fully2221 qualified) ref whose notes should be copied. The ref may be a2222 glob, in which case notes in all matching refs will be copied.2223 You may also specify this configuration several times.2224+2225Does not have a default value; you must configure this variable to2226enable note rewriting. Set it to `refs/notes/commits` to enable2227rewriting for the default commit notes.2228+2229This setting can be overridden with the `GIT_NOTES_REWRITE_REF`2230environment variable, which must be a colon separated list of refs or2231globs.22322233pack.window::2234 The size of the window used by linkgit:git-pack-objects[1] when no2235 window size is given on the command line. Defaults to 10.22362237pack.depth::2238 The maximum delta depth used by linkgit:git-pack-objects[1] when no2239 maximum depth is given on the command line. Defaults to 50.22402241pack.windowMemory::2242 The maximum size of memory that is consumed by each thread2243 in linkgit:git-pack-objects[1] for pack window memory when2244 no limit is given on the command line. The value can be2245 suffixed with "k", "m", or "g". When left unconfigured (or2246 set explicitly to 0), there will be no limit.22472248pack.compression::2249 An integer -1..9, indicating the compression level for objects2250 in a pack file. -1 is the zlib default. 0 means no2251 compression, and 1..9 are various speed/size tradeoffs, 9 being2252 slowest. If not set, defaults to core.compression. If that is2253 not set, defaults to -1, the zlib default, which is "a default2254 compromise between speed and compression (currently equivalent2255 to level 6)."2256+2257Note that changing the compression level will not automatically recompress2258all existing objects. You can force recompression by passing the -F option2259to linkgit:git-repack[1].22602261pack.deltaCacheSize::2262 The maximum memory in bytes used for caching deltas in2263 linkgit:git-pack-objects[1] before writing them out to a pack.2264 This cache is used to speed up the writing object phase by not2265 having to recompute the final delta result once the best match2266 for all objects is found. Repacking large repositories on machines2267 which are tight with memory might be badly impacted by this though,2268 especially if this cache pushes the system into swapping.2269 A value of 0 means no limit. The smallest size of 1 byte may be2270 used to virtually disable this cache. Defaults to 256 MiB.22712272pack.deltaCacheLimit::2273 The maximum size of a delta, that is cached in2274 linkgit:git-pack-objects[1]. This cache is used to speed up the2275 writing object phase by not having to recompute the final delta2276 result once the best match for all objects is found. Defaults to 1000.22772278pack.threads::2279 Specifies the number of threads to spawn when searching for best2280 delta matches. This requires that linkgit:git-pack-objects[1]2281 be compiled with pthreads otherwise this option is ignored with a2282 warning. This is meant to reduce packing time on multiprocessor2283 machines. The required amount of memory for the delta search window2284 is however multiplied by the number of threads.2285 Specifying 0 will cause Git to auto-detect the number of CPU's2286 and set the number of threads accordingly.22872288pack.indexVersion::2289 Specify the default pack index version. Valid values are 1 for2290 legacy pack index used by Git versions prior to 1.5.2, and 2 for2291 the new pack index with capabilities for packs larger than 4 GB2292 as well as proper protection against the repacking of corrupted2293 packs. Version 2 is the default. Note that version 2 is enforced2294 and this config option ignored whenever the corresponding pack is2295 larger than 2 GB.2296+2297If you have an old Git that does not understand the version 2 `*.idx` file,2298cloning or fetching over a non native protocol (e.g. "http")2299that will copy both `*.pack` file and corresponding `*.idx` file from the2300other side may give you a repository that cannot be accessed with your2301older version of Git. If the `*.pack` file is smaller than 2 GB, however,2302you can use linkgit:git-index-pack[1] on the *.pack file to regenerate2303the `*.idx` file.23042305pack.packSizeLimit::2306 The maximum size of a pack. This setting only affects2307 packing to a file when repacking, i.e. the git:// protocol2308 is unaffected. It can be overridden by the `--max-pack-size`2309 option of linkgit:git-repack[1]. Reaching this limit results2310 in the creation of multiple packfiles; which in turn prevents2311 bitmaps from being created.2312 The minimum size allowed is limited to 1 MiB.2313 The default is unlimited.2314 Common unit suffixes of 'k', 'm', or 'g' are2315 supported.23162317pack.useBitmaps::2318 When true, git will use pack bitmaps (if available) when packing2319 to stdout (e.g., during the server side of a fetch). Defaults to2320 true. You should not generally need to turn this off unless2321 you are debugging pack bitmaps.23222323pack.writeBitmaps (deprecated)::2324 This is a deprecated synonym for `repack.writeBitmaps`.23252326pack.writeBitmapHashCache::2327 When true, git will include a "hash cache" section in the bitmap2328 index (if one is written). This cache can be used to feed git's2329 delta heuristics, potentially leading to better deltas between2330 bitmapped and non-bitmapped objects (e.g., when serving a fetch2331 between an older, bitmapped pack and objects that have been2332 pushed since the last gc). The downside is that it consumes 42333 bytes per object of disk space, and that JGit's bitmap2334 implementation does not understand it, causing it to complain if2335 Git and JGit are used on the same repository. Defaults to false.23362337pager.<cmd>::2338 If the value is boolean, turns on or off pagination of the2339 output of a particular Git subcommand when writing to a tty.2340 Otherwise, turns on pagination for the subcommand using the2341 pager specified by the value of `pager.<cmd>`. If `--paginate`2342 or `--no-pager` is specified on the command line, it takes2343 precedence over this option. To disable pagination for all2344 commands, set `core.pager` or `GIT_PAGER` to `cat`.23452346pretty.<name>::2347 Alias for a --pretty= format string, as specified in2348 linkgit:git-log[1]. Any aliases defined here can be used just2349 as the built-in pretty formats could. For example,2350 running `git config pretty.changelog "format:* %H %s"`2351 would cause the invocation `git log --pretty=changelog`2352 to be equivalent to running `git log "--pretty=format:* %H %s"`.2353 Note that an alias with the same name as a built-in format2354 will be silently ignored.23552356protocol.allow::2357 If set, provide a user defined default policy for all protocols which2358 don't explicitly have a policy (`protocol.<name>.allow`). By default,2359 if unset, known-safe protocols (http, https, git, ssh, file) have a2360 default policy of `always`, known-dangerous protocols (ext) have a2361 default policy of `never`, and all other protocols have a default2362 policy of `user`. Supported policies:2363+2364--23652366* `always` - protocol is always able to be used.23672368* `never` - protocol is never able to be used.23692370* `user` - protocol is only able to be used when `GIT_PROTOCOL_FROM_USER` is2371 either unset or has a value of 1. This policy should be used when you want a2372 protocol to be directly usable by the user but don't want it used by commands which2373 execute clone/fetch/push commands without user input, e.g. recursive2374 submodule initialization.23752376--23772378protocol.<name>.allow::2379 Set a policy to be used by protocol `<name>` with clone/fetch/push2380 commands. See `protocol.allow` above for the available policies.2381+2382The protocol names currently used by git are:2383+2384--2385 - `file`: any local file-based path (including `file://` URLs,2386 or local paths)23872388 - `git`: the anonymous git protocol over a direct TCP2389 connection (or proxy, if configured)23902391 - `ssh`: git over ssh (including `host:path` syntax,2392 `ssh://`, etc).23932394 - `http`: git over http, both "smart http" and "dumb http".2395 Note that this does _not_ include `https`; if you want to configure2396 both, you must do so individually.23972398 - any external helpers are named by their protocol (e.g., use2399 `hg` to allow the `git-remote-hg` helper)2400--24012402pull.ff::2403 By default, Git does not create an extra merge commit when merging2404 a commit that is a descendant of the current commit. Instead, the2405 tip of the current branch is fast-forwarded. When set to `false`,2406 this variable tells Git to create an extra merge commit in such2407 a case (equivalent to giving the `--no-ff` option from the command2408 line). When set to `only`, only such fast-forward merges are2409 allowed (equivalent to giving the `--ff-only` option from the2410 command line). This setting overrides `merge.ff` when pulling.24112412pull.rebase::2413 When true, rebase branches on top of the fetched branch, instead2414 of merging the default branch from the default remote when "git2415 pull" is run. See "branch.<name>.rebase" for setting this on a2416 per-branch basis.2417+2418When preserve, also pass `--preserve-merges` along to 'git rebase'2419so that locally committed merge commits will not be flattened2420by running 'git pull'.2421+2422When the value is `interactive`, the rebase is run in interactive mode.2423+2424*NOTE*: this is a possibly dangerous operation; do *not* use2425it unless you understand the implications (see linkgit:git-rebase[1]2426for details).24272428pull.octopus::2429 The default merge strategy to use when pulling multiple branches2430 at once.24312432pull.twohead::2433 The default merge strategy to use when pulling a single branch.24342435push.default::2436 Defines the action `git push` should take if no refspec is2437 explicitly given. Different values are well-suited for2438 specific workflows; for instance, in a purely central workflow2439 (i.e. the fetch source is equal to the push destination),2440 `upstream` is probably what you want. Possible values are:2441+2442--24432444* `nothing` - do not push anything (error out) unless a refspec is2445 explicitly given. This is primarily meant for people who want to2446 avoid mistakes by always being explicit.24472448* `current` - push the current branch to update a branch with the same2449 name on the receiving end. Works in both central and non-central2450 workflows.24512452* `upstream` - push the current branch back to the branch whose2453 changes are usually integrated into the current branch (which is2454 called `@{upstream}`). This mode only makes sense if you are2455 pushing to the same repository you would normally pull from2456 (i.e. central workflow).24572458* `simple` - in centralized workflow, work like `upstream` with an2459 added safety to refuse to push if the upstream branch's name is2460 different from the local one.2461+2462When pushing to a remote that is different from the remote you normally2463pull from, work as `current`. This is the safest option and is suited2464for beginners.2465+2466This mode has become the default in Git 2.0.24672468* `matching` - push all branches having the same name on both ends.2469 This makes the repository you are pushing to remember the set of2470 branches that will be pushed out (e.g. if you always push 'maint'2471 and 'master' there and no other branches, the repository you push2472 to will have these two branches, and your local 'maint' and2473 'master' will be pushed there).2474+2475To use this mode effectively, you have to make sure _all_ the2476branches you would push out are ready to be pushed out before2477running 'git push', as the whole point of this mode is to allow you2478to push all of the branches in one go. If you usually finish work2479on only one branch and push out the result, while other branches are2480unfinished, this mode is not for you. Also this mode is not2481suitable for pushing into a shared central repository, as other2482people may add new branches there, or update the tip of existing2483branches outside your control.2484+2485This used to be the default, but not since Git 2.0 (`simple` is the2486new default).24872488--24892490push.followTags::2491 If set to true enable `--follow-tags` option by default. You2492 may override this configuration at time of push by specifying2493 `--no-follow-tags`.24942495push.gpgSign::2496 May be set to a boolean value, or the string 'if-asked'. A true2497 value causes all pushes to be GPG signed, as if `--signed` is2498 passed to linkgit:git-push[1]. The string 'if-asked' causes2499 pushes to be signed if the server supports it, as if2500 `--signed=if-asked` is passed to 'git push'. A false value may2501 override a value from a lower-priority config file. An explicit2502 command-line flag always overrides this config option.25032504push.recurseSubmodules::2505 Make sure all submodule commits used by the revisions to be pushed2506 are available on a remote-tracking branch. If the value is 'check'2507 then Git will verify that all submodule commits that changed in the2508 revisions to be pushed are available on at least one remote of the2509 submodule. If any commits are missing, the push will be aborted and2510 exit with non-zero status. If the value is 'on-demand' then all2511 submodules that changed in the revisions to be pushed will be2512 pushed. If on-demand was not able to push all necessary revisions2513 it will also be aborted and exit with non-zero status. If the value2514 is 'no' then default behavior of ignoring submodules when pushing2515 is retained. You may override this configuration at time of push by2516 specifying '--recurse-submodules=check|on-demand|no'.25172518rebase.stat::2519 Whether to show a diffstat of what changed upstream since the last2520 rebase. False by default.25212522rebase.autoSquash::2523 If set to true enable `--autosquash` option by default.25242525rebase.autoStash::2526 When set to true, automatically create a temporary stash2527 before the operation begins, and apply it after the operation2528 ends. This means that you can run rebase on a dirty worktree.2529 However, use with care: the final stash application after a2530 successful rebase might result in non-trivial conflicts.2531 Defaults to false.25322533rebase.missingCommitsCheck::2534 If set to "warn", git rebase -i will print a warning if some2535 commits are removed (e.g. a line was deleted), however the2536 rebase will still proceed. If set to "error", it will print2537 the previous warning and stop the rebase, 'git rebase2538 --edit-todo' can then be used to correct the error. If set to2539 "ignore", no checking is done.2540 To drop a commit without warning or error, use the `drop`2541 command in the todo-list.2542 Defaults to "ignore".25432544rebase.instructionFormat::2545 A format string, as specified in linkgit:git-log[1], to be used for2546 the instruction list during an interactive rebase. The format will automatically2547 have the long commit hash prepended to the format.25482549receive.advertiseAtomic::2550 By default, git-receive-pack will advertise the atomic push2551 capability to its clients. If you don't want to advertise this2552 capability, set this variable to false.25532554receive.advertisePushOptions::2555 By default, git-receive-pack will advertise the push options2556 capability to its clients. If you don't want to advertise this2557 capability, set this variable to false.25582559receive.autogc::2560 By default, git-receive-pack will run "git-gc --auto" after2561 receiving data from git-push and updating refs. You can stop2562 it by setting this variable to false.25632564receive.certNonceSeed::2565 By setting this variable to a string, `git receive-pack`2566 will accept a `git push --signed` and verifies it by using2567 a "nonce" protected by HMAC using this string as a secret2568 key.25692570receive.certNonceSlop::2571 When a `git push --signed` sent a push certificate with a2572 "nonce" that was issued by a receive-pack serving the same2573 repository within this many seconds, export the "nonce"2574 found in the certificate to `GIT_PUSH_CERT_NONCE` to the2575 hooks (instead of what the receive-pack asked the sending2576 side to include). This may allow writing checks in2577 `pre-receive` and `post-receive` a bit easier. Instead of2578 checking `GIT_PUSH_CERT_NONCE_SLOP` environment variable2579 that records by how many seconds the nonce is stale to2580 decide if they want to accept the certificate, they only2581 can check `GIT_PUSH_CERT_NONCE_STATUS` is `OK`.25822583receive.fsckObjects::2584 If it is set to true, git-receive-pack will check all received2585 objects. It will abort in the case of a malformed object or a2586 broken link. The result of an abort are only dangling objects.2587 Defaults to false. If not set, the value of `transfer.fsckObjects`2588 is used instead.25892590receive.fsck.<msg-id>::2591 When `receive.fsckObjects` is set to true, errors can be switched2592 to warnings and vice versa by configuring the `receive.fsck.<msg-id>`2593 setting where the `<msg-id>` is the fsck message ID and the value2594 is one of `error`, `warn` or `ignore`. For convenience, fsck prefixes2595 the error/warning with the message ID, e.g. "missingEmail: invalid2596 author/committer line - missing email" means that setting2597 `receive.fsck.missingEmail = ignore` will hide that issue.2598+2599This feature is intended to support working with legacy repositories2600which would not pass pushing when `receive.fsckObjects = true`, allowing2601the host to accept repositories with certain known issues but still catch2602other issues.26032604receive.fsck.skipList::2605 The path to a sorted list of object names (i.e. one SHA-1 per2606 line) that are known to be broken in a non-fatal way and should2607 be ignored. This feature is useful when an established project2608 should be accepted despite early commits containing errors that2609 can be safely ignored such as invalid committer email addresses.2610 Note: corrupt objects cannot be skipped with this setting.26112612receive.keepAlive::2613 After receiving the pack from the client, `receive-pack` may2614 produce no output (if `--quiet` was specified) while processing2615 the pack, causing some networks to drop the TCP connection.2616 With this option set, if `receive-pack` does not transmit2617 any data in this phase for `receive.keepAlive` seconds, it will2618 send a short keepalive packet. The default is 5 seconds; set2619 to 0 to disable keepalives entirely.26202621receive.unpackLimit::2622 If the number of objects received in a push is below this2623 limit then the objects will be unpacked into loose object2624 files. However if the number of received objects equals or2625 exceeds this limit then the received pack will be stored as2626 a pack, after adding any missing delta bases. Storing the2627 pack from a push can make the push operation complete faster,2628 especially on slow filesystems. If not set, the value of2629 `transfer.unpackLimit` is used instead.26302631receive.maxInputSize::2632 If the size of the incoming pack stream is larger than this2633 limit, then git-receive-pack will error out, instead of2634 accepting the pack file. If not set or set to 0, then the size2635 is unlimited.26362637receive.denyDeletes::2638 If set to true, git-receive-pack will deny a ref update that deletes2639 the ref. Use this to prevent such a ref deletion via a push.26402641receive.denyDeleteCurrent::2642 If set to true, git-receive-pack will deny a ref update that2643 deletes the currently checked out branch of a non-bare repository.26442645receive.denyCurrentBranch::2646 If set to true or "refuse", git-receive-pack will deny a ref update2647 to the currently checked out branch of a non-bare repository.2648 Such a push is potentially dangerous because it brings the HEAD2649 out of sync with the index and working tree. If set to "warn",2650 print a warning of such a push to stderr, but allow the push to2651 proceed. If set to false or "ignore", allow such pushes with no2652 message. Defaults to "refuse".2653+2654Another option is "updateInstead" which will update the working2655tree if pushing into the current branch. This option is2656intended for synchronizing working directories when one side is not easily2657accessible via interactive ssh (e.g. a live web site, hence the requirement2658that the working directory be clean). This mode also comes in handy when2659developing inside a VM to test and fix code on different Operating Systems.2660+2661By default, "updateInstead" will refuse the push if the working tree or2662the index have any difference from the HEAD, but the `push-to-checkout`2663hook can be used to customize this. See linkgit:githooks[5].26642665receive.denyNonFastForwards::2666 If set to true, git-receive-pack will deny a ref update which is2667 not a fast-forward. Use this to prevent such an update via a push,2668 even if that push is forced. This configuration variable is2669 set when initializing a shared repository.26702671receive.hideRefs::2672 This variable is the same as `transfer.hideRefs`, but applies2673 only to `receive-pack` (and so affects pushes, but not fetches).2674 An attempt to update or delete a hidden ref by `git push` is2675 rejected.26762677receive.updateServerInfo::2678 If set to true, git-receive-pack will run git-update-server-info2679 after receiving data from git-push and updating refs.26802681receive.shallowUpdate::2682 If set to true, .git/shallow can be updated when new refs2683 require new shallow roots. Otherwise those refs are rejected.26842685remote.pushDefault::2686 The remote to push to by default. Overrides2687 `branch.<name>.remote` for all branches, and is overridden by2688 `branch.<name>.pushRemote` for specific branches.26892690remote.<name>.url::2691 The URL of a remote repository. See linkgit:git-fetch[1] or2692 linkgit:git-push[1].26932694remote.<name>.pushurl::2695 The push URL of a remote repository. See linkgit:git-push[1].26962697remote.<name>.proxy::2698 For remotes that require curl (http, https and ftp), the URL to2699 the proxy to use for that remote. Set to the empty string to2700 disable proxying for that remote.27012702remote.<name>.proxyAuthMethod::2703 For remotes that require curl (http, https and ftp), the method to use for2704 authenticating against the proxy in use (probably set in2705 `remote.<name>.proxy`). See `http.proxyAuthMethod`.27062707remote.<name>.fetch::2708 The default set of "refspec" for linkgit:git-fetch[1]. See2709 linkgit:git-fetch[1].27102711remote.<name>.push::2712 The default set of "refspec" for linkgit:git-push[1]. See2713 linkgit:git-push[1].27142715remote.<name>.mirror::2716 If true, pushing to this remote will automatically behave2717 as if the `--mirror` option was given on the command line.27182719remote.<name>.skipDefaultUpdate::2720 If true, this remote will be skipped by default when updating2721 using linkgit:git-fetch[1] or the `update` subcommand of2722 linkgit:git-remote[1].27232724remote.<name>.skipFetchAll::2725 If true, this remote will be skipped by default when updating2726 using linkgit:git-fetch[1] or the `update` subcommand of2727 linkgit:git-remote[1].27282729remote.<name>.receivepack::2730 The default program to execute on the remote side when pushing. See2731 option --receive-pack of linkgit:git-push[1].27322733remote.<name>.uploadpack::2734 The default program to execute on the remote side when fetching. See2735 option --upload-pack of linkgit:git-fetch-pack[1].27362737remote.<name>.tagOpt::2738 Setting this value to --no-tags disables automatic tag following when2739 fetching from remote <name>. Setting it to --tags will fetch every2740 tag from remote <name>, even if they are not reachable from remote2741 branch heads. Passing these flags directly to linkgit:git-fetch[1] can2742 override this setting. See options --tags and --no-tags of2743 linkgit:git-fetch[1].27442745remote.<name>.vcs::2746 Setting this to a value <vcs> will cause Git to interact with2747 the remote with the git-remote-<vcs> helper.27482749remote.<name>.prune::2750 When set to true, fetching from this remote by default will also2751 remove any remote-tracking references that no longer exist on the2752 remote (as if the `--prune` option was given on the command line).2753 Overrides `fetch.prune` settings, if any.27542755remotes.<group>::2756 The list of remotes which are fetched by "git remote update2757 <group>". See linkgit:git-remote[1].27582759repack.useDeltaBaseOffset::2760 By default, linkgit:git-repack[1] creates packs that use2761 delta-base offset. If you need to share your repository with2762 Git older than version 1.4.4, either directly or via a dumb2763 protocol such as http, then you need to set this option to2764 "false" and repack. Access from old Git versions over the2765 native protocol are unaffected by this option.27662767repack.packKeptObjects::2768 If set to true, makes `git repack` act as if2769 `--pack-kept-objects` was passed. See linkgit:git-repack[1] for2770 details. Defaults to `false` normally, but `true` if a bitmap2771 index is being written (either via `--write-bitmap-index` or2772 `repack.writeBitmaps`).27732774repack.writeBitmaps::2775 When true, git will write a bitmap index when packing all2776 objects to disk (e.g., when `git repack -a` is run). This2777 index can speed up the "counting objects" phase of subsequent2778 packs created for clones and fetches, at the cost of some disk2779 space and extra time spent on the initial repack. This has2780 no effect if multiple packfiles are created.2781 Defaults to false.27822783rerere.autoUpdate::2784 When set to true, `git-rerere` updates the index with the2785 resulting contents after it cleanly resolves conflicts using2786 previously recorded resolution. Defaults to false.27872788rerere.enabled::2789 Activate recording of resolved conflicts, so that identical2790 conflict hunks can be resolved automatically, should they be2791 encountered again. By default, linkgit:git-rerere[1] is2792 enabled if there is an `rr-cache` directory under the2793 `$GIT_DIR`, e.g. if "rerere" was previously used in the2794 repository.27952796sendemail.identity::2797 A configuration identity. When given, causes values in the2798 'sendemail.<identity>' subsection to take precedence over2799 values in the 'sendemail' section. The default identity is2800 the value of `sendemail.identity`.28012802sendemail.smtpEncryption::2803 See linkgit:git-send-email[1] for description. Note that this2804 setting is not subject to the 'identity' mechanism.28052806sendemail.smtpssl (deprecated)::2807 Deprecated alias for 'sendemail.smtpEncryption = ssl'.28082809sendemail.smtpsslcertpath::2810 Path to ca-certificates (either a directory or a single file).2811 Set it to an empty string to disable certificate verification.28122813sendemail.<identity>.*::2814 Identity-specific versions of the 'sendemail.*' parameters2815 found below, taking precedence over those when the this2816 identity is selected, through command-line or2817 `sendemail.identity`.28182819sendemail.aliasesFile::2820sendemail.aliasFileType::2821sendemail.annotate::2822sendemail.bcc::2823sendemail.cc::2824sendemail.ccCmd::2825sendemail.chainReplyTo::2826sendemail.confirm::2827sendemail.envelopeSender::2828sendemail.from::2829sendemail.multiEdit::2830sendemail.signedoffbycc::2831sendemail.smtpPass::2832sendemail.suppresscc::2833sendemail.suppressFrom::2834sendemail.to::2835sendemail.smtpDomain::2836sendemail.smtpServer::2837sendemail.smtpServerPort::2838sendemail.smtpServerOption::2839sendemail.smtpUser::2840sendemail.thread::2841sendemail.transferEncoding::2842sendemail.validate::2843sendemail.xmailer::2844 See linkgit:git-send-email[1] for description.28452846sendemail.signedoffcc (deprecated)::2847 Deprecated alias for `sendemail.signedoffbycc`.28482849showbranch.default::2850 The default set of branches for linkgit:git-show-branch[1].2851 See linkgit:git-show-branch[1].28522853status.relativePaths::2854 By default, linkgit:git-status[1] shows paths relative to the2855 current directory. Setting this variable to `false` shows paths2856 relative to the repository root (this was the default for Git2857 prior to v1.5.4).28582859status.short::2860 Set to true to enable --short by default in linkgit:git-status[1].2861 The option --no-short takes precedence over this variable.28622863status.branch::2864 Set to true to enable --branch by default in linkgit:git-status[1].2865 The option --no-branch takes precedence over this variable.28662867status.displayCommentPrefix::2868 If set to true, linkgit:git-status[1] will insert a comment2869 prefix before each output line (starting with2870 `core.commentChar`, i.e. `#` by default). This was the2871 behavior of linkgit:git-status[1] in Git 1.8.4 and previous.2872 Defaults to false.28732874status.showUntrackedFiles::2875 By default, linkgit:git-status[1] and linkgit:git-commit[1] show2876 files which are not currently tracked by Git. Directories which2877 contain only untracked files, are shown with the directory name2878 only. Showing untracked files means that Git needs to lstat() all2879 the files in the whole repository, which might be slow on some2880 systems. So, this variable controls how the commands displays2881 the untracked files. Possible values are:2882+2883--2884* `no` - Show no untracked files.2885* `normal` - Show untracked files and directories.2886* `all` - Show also individual files in untracked directories.2887--2888+2889If this variable is not specified, it defaults to 'normal'.2890This variable can be overridden with the -u|--untracked-files option2891of linkgit:git-status[1] and linkgit:git-commit[1].28922893status.submoduleSummary::2894 Defaults to false.2895 If this is set to a non zero number or true (identical to -1 or an2896 unlimited number), the submodule summary will be enabled and a2897 summary of commits for modified submodules will be shown (see2898 --summary-limit option of linkgit:git-submodule[1]). Please note2899 that the summary output command will be suppressed for all2900 submodules when `diff.ignoreSubmodules` is set to 'all' or only2901 for those submodules where `submodule.<name>.ignore=all`. The only2902 exception to that rule is that status and commit will show staged2903 submodule changes. To2904 also view the summary for ignored submodules you can either use2905 the --ignore-submodules=dirty command-line option or the 'git2906 submodule summary' command, which shows a similar output but does2907 not honor these settings.29082909stash.showPatch::2910 If this is set to true, the `git stash show` command without an2911 option will show the stash in patch form. Defaults to false.2912 See description of 'show' command in linkgit:git-stash[1].29132914stash.showStat::2915 If this is set to true, the `git stash show` command without an2916 option will show diffstat of the stash. Defaults to true.2917 See description of 'show' command in linkgit:git-stash[1].29182919submodule.<name>.url::2920 The URL for a submodule. This variable is copied from the .gitmodules2921 file to the git config via 'git submodule init'. The user can change2922 the configured URL before obtaining the submodule via 'git submodule2923 update'. If neither submodule.<name>.active or submodule.active are2924 set, the presence of this variable is used as a fallback to indicate2925 whether the submodule is of interest to git commands.2926 See linkgit:git-submodule[1] and linkgit:gitmodules[5] for details.29272928submodule.<name>.update::2929 The default update procedure for a submodule. This variable2930 is populated by `git submodule init` from the2931 linkgit:gitmodules[5] file. See description of 'update'2932 command in linkgit:git-submodule[1].29332934submodule.<name>.branch::2935 The remote branch name for a submodule, used by `git submodule2936 update --remote`. Set this option to override the value found in2937 the `.gitmodules` file. See linkgit:git-submodule[1] and2938 linkgit:gitmodules[5] for details.29392940submodule.<name>.fetchRecurseSubmodules::2941 This option can be used to control recursive fetching of this2942 submodule. It can be overridden by using the --[no-]recurse-submodules2943 command-line option to "git fetch" and "git pull".2944 This setting will override that from in the linkgit:gitmodules[5]2945 file.29462947submodule.<name>.ignore::2948 Defines under what circumstances "git status" and the diff family show2949 a submodule as modified. When set to "all", it will never be considered2950 modified (but it will nonetheless show up in the output of status and2951 commit when it has been staged), "dirty" will ignore all changes2952 to the submodules work tree and2953 takes only differences between the HEAD of the submodule and the commit2954 recorded in the superproject into account. "untracked" will additionally2955 let submodules with modified tracked files in their work tree show up.2956 Using "none" (the default when this option is not set) also shows2957 submodules that have untracked files in their work tree as changed.2958 This setting overrides any setting made in .gitmodules for this submodule,2959 both settings can be overridden on the command line by using the2960 "--ignore-submodules" option. The 'git submodule' commands are not2961 affected by this setting.29622963submodule.<name>.active::2964 Boolean value indicating if the submodule is of interest to git2965 commands. This config option takes precedence over the2966 submodule.active config option.29672968submodule.active::2969 A repeated field which contains a pathspec used to match against a2970 submodule's path to determine if the submodule is of interest to git2971 commands.29722973submodule.fetchJobs::2974 Specifies how many submodules are fetched/cloned at the same time.2975 A positive integer allows up to that number of submodules fetched2976 in parallel. A value of 0 will give some reasonable default.2977 If unset, it defaults to 1.29782979submodule.alternateLocation::2980 Specifies how the submodules obtain alternates when submodules are2981 cloned. Possible values are `no`, `superproject`.2982 By default `no` is assumed, which doesn't add references. When the2983 value is set to `superproject` the submodule to be cloned computes2984 its alternates location relative to the superprojects alternate.29852986submodule.alternateErrorStrategy::2987 Specifies how to treat errors with the alternates for a submodule2988 as computed via `submodule.alternateLocation`. Possible values are2989 `ignore`, `info`, `die`. Default is `die`.29902991tag.forceSignAnnotated::2992 A boolean to specify whether annotated tags created should be GPG signed.2993 If `--annotate` is specified on the command line, it takes2994 precedence over this option.29952996tag.sort::2997 This variable controls the sort ordering of tags when displayed by2998 linkgit:git-tag[1]. Without the "--sort=<value>" option provided, the2999 value of this variable will be used as the default.30003001tar.umask::3002 This variable can be used to restrict the permission bits of3003 tar archive entries. The default is 0002, which turns off the3004 world write bit. The special value "user" indicates that the3005 archiving user's umask will be used instead. See umask(2) and3006 linkgit:git-archive[1].30073008transfer.fsckObjects::3009 When `fetch.fsckObjects` or `receive.fsckObjects` are3010 not set, the value of this variable is used instead.3011 Defaults to false.30123013transfer.hideRefs::3014 String(s) `receive-pack` and `upload-pack` use to decide which3015 refs to omit from their initial advertisements. Use more than3016 one definition to specify multiple prefix strings. A ref that is3017 under the hierarchies listed in the value of this variable is3018 excluded, and is hidden when responding to `git push` or `git3019 fetch`. See `receive.hideRefs` and `uploadpack.hideRefs` for3020 program-specific versions of this config.3021+3022You may also include a `!` in front of the ref name to negate the entry,3023explicitly exposing it, even if an earlier entry marked it as hidden.3024If you have multiple hideRefs values, later entries override earlier ones3025(and entries in more-specific config files override less-specific ones).3026+3027If a namespace is in use, the namespace prefix is stripped from each3028reference before it is matched against `transfer.hiderefs` patterns.3029For example, if `refs/heads/master` is specified in `transfer.hideRefs` and3030the current namespace is `foo`, then `refs/namespaces/foo/refs/heads/master`3031is omitted from the advertisements but `refs/heads/master` and3032`refs/namespaces/bar/refs/heads/master` are still advertised as so-called3033"have" lines. In order to match refs before stripping, add a `^` in front of3034the ref name. If you combine `!` and `^`, `!` must be specified first.3035+3036Even if you hide refs, a client may still be able to steal the target3037objects via the techniques described in the "SECURITY" section of the3038linkgit:gitnamespaces[7] man page; it's best to keep private data in a3039separate repository.30403041transfer.unpackLimit::3042 When `fetch.unpackLimit` or `receive.unpackLimit` are3043 not set, the value of this variable is used instead.3044 The default value is 100.30453046uploadarchive.allowUnreachable::3047 If true, allow clients to use `git archive --remote` to request3048 any tree, whether reachable from the ref tips or not. See the3049 discussion in the "SECURITY" section of3050 linkgit:git-upload-archive[1] for more details. Defaults to3051 `false`.30523053uploadpack.hideRefs::3054 This variable is the same as `transfer.hideRefs`, but applies3055 only to `upload-pack` (and so affects only fetches, not pushes).3056 An attempt to fetch a hidden ref by `git fetch` will fail. See3057 also `uploadpack.allowTipSHA1InWant`.30583059uploadpack.allowTipSHA1InWant::3060 When `uploadpack.hideRefs` is in effect, allow `upload-pack`3061 to accept a fetch request that asks for an object at the tip3062 of a hidden ref (by default, such a request is rejected).3063 See also `uploadpack.hideRefs`. Even if this is false, a client3064 may be able to steal objects via the techniques described in the3065 "SECURITY" section of the linkgit:gitnamespaces[7] man page; it's3066 best to keep private data in a separate repository.30673068uploadpack.allowReachableSHA1InWant::3069 Allow `upload-pack` to accept a fetch request that asks for an3070 object that is reachable from any ref tip. However, note that3071 calculating object reachability is computationally expensive.3072 Defaults to `false`. Even if this is false, a client may be able3073 to steal objects via the techniques described in the "SECURITY"3074 section of the linkgit:gitnamespaces[7] man page; it's best to3075 keep private data in a separate repository.30763077uploadpack.allowAnySHA1InWant::3078 Allow `upload-pack` to accept a fetch request that asks for any3079 object at all.3080 Defaults to `false`.30813082uploadpack.keepAlive::3083 When `upload-pack` has started `pack-objects`, there may be a3084 quiet period while `pack-objects` prepares the pack. Normally3085 it would output progress information, but if `--quiet` was used3086 for the fetch, `pack-objects` will output nothing at all until3087 the pack data begins. Some clients and networks may consider3088 the server to be hung and give up. Setting this option instructs3089 `upload-pack` to send an empty keepalive packet every3090 `uploadpack.keepAlive` seconds. Setting this option to 03091 disables keepalive packets entirely. The default is 5 seconds.30923093uploadpack.packObjectsHook::3094 If this option is set, when `upload-pack` would run3095 `git pack-objects` to create a packfile for a client, it will3096 run this shell command instead. The `pack-objects` command and3097 arguments it _would_ have run (including the `git pack-objects`3098 at the beginning) are appended to the shell command. The stdin3099 and stdout of the hook are treated as if `pack-objects` itself3100 was run. I.e., `upload-pack` will feed input intended for3101 `pack-objects` to the hook, and expects a completed packfile on3102 stdout.3103+3104Note that this configuration variable is ignored if it is seen in the3105repository-level config (this is a safety measure against fetching from3106untrusted repositories).31073108url.<base>.insteadOf::3109 Any URL that starts with this value will be rewritten to3110 start, instead, with <base>. In cases where some site serves a3111 large number of repositories, and serves them with multiple3112 access methods, and some users need to use different access3113 methods, this feature allows people to specify any of the3114 equivalent URLs and have Git automatically rewrite the URL to3115 the best alternative for the particular user, even for a3116 never-before-seen repository on the site. When more than one3117 insteadOf strings match a given URL, the longest match is used.31183119url.<base>.pushInsteadOf::3120 Any URL that starts with this value will not be pushed to;3121 instead, it will be rewritten to start with <base>, and the3122 resulting URL will be pushed to. In cases where some site serves3123 a large number of repositories, and serves them with multiple3124 access methods, some of which do not allow push, this feature3125 allows people to specify a pull-only URL and have Git3126 automatically use an appropriate URL to push, even for a3127 never-before-seen repository on the site. When more than one3128 pushInsteadOf strings match a given URL, the longest match is3129 used. If a remote has an explicit pushurl, Git will ignore this3130 setting for that remote.31313132user.email::3133 Your email address to be recorded in any newly created commits.3134 Can be overridden by the `GIT_AUTHOR_EMAIL`, `GIT_COMMITTER_EMAIL`, and3135 `EMAIL` environment variables. See linkgit:git-commit-tree[1].31363137user.name::3138 Your full name to be recorded in any newly created commits.3139 Can be overridden by the `GIT_AUTHOR_NAME` and `GIT_COMMITTER_NAME`3140 environment variables. See linkgit:git-commit-tree[1].31413142user.useConfigOnly::3143 Instruct Git to avoid trying to guess defaults for `user.email`3144 and `user.name`, and instead retrieve the values only from the3145 configuration. For example, if you have multiple email addresses3146 and would like to use a different one for each repository, then3147 with this configuration option set to `true` in the global config3148 along with a name, Git will prompt you to set up an email before3149 making new commits in a newly cloned repository.3150 Defaults to `false`.31513152user.signingKey::3153 If linkgit:git-tag[1] or linkgit:git-commit[1] is not selecting the3154 key you want it to automatically when creating a signed tag or3155 commit, you can override the default selection with this variable.3156 This option is passed unchanged to gpg's --local-user parameter,3157 so you may specify a key using any method that gpg supports.31583159versionsort.prereleaseSuffix (deprecated)::3160 Deprecated alias for `versionsort.suffix`. Ignored if3161 `versionsort.suffix` is set.31623163versionsort.suffix::3164 Even when version sort is used in linkgit:git-tag[1], tagnames3165 with the same base version but different suffixes are still sorted3166 lexicographically, resulting e.g. in prerelease tags appearing3167 after the main release (e.g. "1.0-rc1" after "1.0"). This3168 variable can be specified to determine the sorting order of tags3169 with different suffixes.3170+3171By specifying a single suffix in this variable, any tagname containing3172that suffix will appear before the corresponding main release. E.g. if3173the variable is set to "-rc", then all "1.0-rcX" tags will appear before3174"1.0". If specified multiple times, once per suffix, then the order of3175suffixes in the configuration will determine the sorting order of tagnames3176with those suffixes. E.g. if "-pre" appears before "-rc" in the3177configuration, then all "1.0-preX" tags will be listed before any3178"1.0-rcX" tags. The placement of the main release tag relative to tags3179with various suffixes can be determined by specifying the empty suffix3180among those other suffixes. E.g. if the suffixes "-rc", "", "-ck" and3181"-bfs" appear in the configuration in this order, then all "v4.8-rcX" tags3182are listed first, followed by "v4.8", then "v4.8-ckX" and finally3183"v4.8-bfsX".3184+3185If more than one suffixes match the same tagname, then that tagname will3186be sorted according to the suffix which starts at the earliest position in3187the tagname. If more than one different matching suffixes start at3188that earliest position, then that tagname will be sorted according to the3189longest of those suffixes.3190The sorting order between different suffixes is undefined if they are3191in multiple config files.31923193web.browser::3194 Specify a web browser that may be used by some commands.3195 Currently only linkgit:git-instaweb[1] and linkgit:git-help[1]3196 may use it.