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 82The `include` and `includeIf` sections allow you to include config 83directives from another source. These sections behave identically to 84each other with the exception that `includeIf` sections may be ignored 85if their condition does not evaluate to true; see "Conditional includes" 86below. 87 88You can include a config file from another by setting the special 89`include.path` (or `includeIf.*.path`) variable to the name of the file 90to be included. The variable takes a pathname as its value, and is 91subject to tilde expansion. These variables can be given multiple times. 92 93The included file is expanded immediately, as if its contents had been 94found at the location of the include directive. If the value of the 95variable is a relative path, the path is considered to 96be relative to the configuration file in which the include directive 97was found. See below for examples. 98 99Conditional includes 100~~~~~~~~~~~~~~~~~~~~ 101 102You can include a config file from another conditionally by setting a 103`includeIf.<condition>.path` variable to the name of the file to be 104included. 105 106The condition starts with a keyword followed by a colon and some data 107whose format and meaning depends on the keyword. Supported keywords 108are: 109 110`gitdir`:: 111 112 The data that follows the keyword `gitdir:` is used as a glob 113 pattern. If the location of the .git directory matches the 114 pattern, the include condition is met. 115+ 116The .git location may be auto-discovered, or come from `$GIT_DIR` 117environment variable. If the repository is auto discovered via a .git 118file (e.g. from submodules, or a linked worktree), the .git location 119would be the final location where the .git directory is, not where the 120.git file is. 121+ 122The pattern can contain standard globbing wildcards and two additional 123ones, `**/` and `/**`, that can match multiple path components. Please 124refer to linkgit:gitignore[5] for details. For convenience: 125 126 * If the pattern starts with `~/`, `~` will be substituted with the 127 content of the environment variable `HOME`. 128 129 * If the pattern starts with `./`, it is replaced with the directory 130 containing the current config file. 131 132 * If the pattern does not start with either `~/`, `./` or `/`, `**/` 133 will be automatically prepended. For example, the pattern `foo/bar` 134 becomes `**/foo/bar` and would match `/any/path/to/foo/bar`. 135 136 * If the pattern ends with `/`, `**` will be automatically added. For 137 example, the pattern `foo/` becomes `foo/**`. In other words, it 138 matches "foo" and everything inside, recursively. 139 140`gitdir/i`:: 141 This is the same as `gitdir` except that matching is done 142 case-insensitively (e.g. on case-insensitive file sytems) 143 144A few more notes on matching via `gitdir` and `gitdir/i`: 145 146 * Symlinks in `$GIT_DIR` are not resolved before matching. 147 148 * Note that "../" is not special and will match literally, which is 149 unlikely what you want. 150 151Example 152~~~~~~~ 153 154 # Core variables 155 [core] 156 ; Don't trust file modes 157 filemode = false 158 159 # Our diff algorithm 160 [diff] 161 external = /usr/local/bin/diff-wrapper 162 renames = true 163 164 [branch "devel"] 165 remote = origin 166 merge = refs/heads/devel 167 168 # Proxy settings 169 [core] 170 gitProxy="ssh" for "kernel.org" 171 gitProxy=default-proxy ; for the rest 172 173 [include] 174 path = /path/to/foo.inc ; include by absolute path 175 path = foo ; expand "foo" relative to the current file 176 path = ~/foo ; expand "foo" in your `$HOME` directory 177 178 ; include if $GIT_DIR is /path/to/foo/.git 179 [includeIf "gitdir:/path/to/foo/.git"] 180 path = /path/to/foo.inc 181 182 ; include for all repositories inside /path/to/group 183 [includeIf "gitdir:/path/to/group/"] 184 path = /path/to/foo.inc 185 186 ; include for all repositories inside $HOME/to/group 187 [includeIf "gitdir:~/to/group/"] 188 path = /path/to/foo.inc 189 190Values 191~~~~~~ 192 193Values of many variables are treated as a simple string, but there 194are variables that take values of specific types and there are rules 195as to how to spell them. 196 197boolean:: 198 199 When a variable is said to take a boolean value, many 200 synonyms are accepted for 'true' and 'false'; these are all 201 case-insensitive. 202 203 true;; Boolean true can be spelled as `yes`, `on`, `true`, 204 or `1`. Also, a variable defined without `= <value>` 205 is taken as true. 206 207 false;; Boolean false can be spelled as `no`, `off`, 208 `false`, or `0`. 209+ 210When converting value to the canonical form using `--bool` type 211specifier; 'git config' will ensure that the output is "true" or 212"false" (spelled in lowercase). 213 214integer:: 215 The value for many variables that specify various sizes can 216 be suffixed with `k`, `M`,... to mean "scale the number by 217 1024", "by 1024x1024", etc. 218 219color:: 220 The value for a variable that takes a color is a list of 221 colors (at most two, one for foreground and one for background) 222 and attributes (as many as you want), separated by spaces. 223+ 224The basic colors accepted are `normal`, `black`, `red`, `green`, `yellow`, 225`blue`, `magenta`, `cyan` and `white`. The first color given is the 226foreground; the second is the background. 227+ 228Colors may also be given as numbers between 0 and 255; these use ANSI 229256-color mode (but note that not all terminals may support this). If 230your terminal supports it, you may also specify 24-bit RGB values as 231hex, like `#ff0ab3`. 232+ 233The accepted attributes are `bold`, `dim`, `ul`, `blink`, `reverse`, 234`italic`, and `strike` (for crossed-out or "strikethrough" letters). 235The position of any attributes with respect to the colors 236(before, after, or in between), doesn't matter. Specific attributes may 237be turned off by prefixing them with `no` or `no-` (e.g., `noreverse`, 238`no-ul`, etc). 239+ 240An empty color string produces no color effect at all. This can be used 241to avoid coloring specific elements without disabling color entirely. 242+ 243For git's pre-defined color slots, the attributes are meant to be reset 244at the beginning of each item in the colored output. So setting 245`color.decorate.branch` to `black` will paint that branch name in a 246plain `black`, even if the previous thing on the same output line (e.g. 247opening parenthesis before the list of branch names in `log --decorate` 248output) is set to be painted with `bold` or some other attribute. 249However, custom log formats may do more complicated and layered 250coloring, and the negated forms may be useful there. 251 252pathname:: 253 A variable that takes a pathname value can be given a 254 string that begins with "`~/`" or "`~user/`", and the usual 255 tilde expansion happens to such a string: `~/` 256 is expanded to the value of `$HOME`, and `~user/` to the 257 specified user's home directory. 258 259 260Variables 261~~~~~~~~~ 262 263Note that this list is non-comprehensive and not necessarily complete. 264For command-specific variables, you will find a more detailed description 265in the appropriate manual page. 266 267Other git-related tools may and do use their own variables. When 268inventing new variables for use in your own tool, make sure their 269names do not conflict with those that are used by Git itself and 270other popular tools, and describe them in your documentation. 271 272 273advice.*:: 274 These variables control various optional help messages designed to 275 aid new users. All 'advice.*' variables default to 'true', and you 276 can tell Git that you do not need help by setting these to 'false': 277+ 278-- 279 pushUpdateRejected:: 280 Set this variable to 'false' if you want to disable 281 'pushNonFFCurrent', 282 'pushNonFFMatching', 'pushAlreadyExists', 283 'pushFetchFirst', and 'pushNeedsForce' 284 simultaneously. 285 pushNonFFCurrent:: 286 Advice shown when linkgit:git-push[1] fails due to a 287 non-fast-forward update to the current branch. 288 pushNonFFMatching:: 289 Advice shown when you ran linkgit:git-push[1] and pushed 290 'matching refs' explicitly (i.e. you used ':', or 291 specified a refspec that isn't your current branch) and 292 it resulted in a non-fast-forward error. 293 pushAlreadyExists:: 294 Shown when linkgit:git-push[1] rejects an update that 295 does not qualify for fast-forwarding (e.g., a tag.) 296 pushFetchFirst:: 297 Shown when linkgit:git-push[1] rejects an update that 298 tries to overwrite a remote ref that points at an 299 object we do not have. 300 pushNeedsForce:: 301 Shown when linkgit:git-push[1] rejects an update that 302 tries to overwrite a remote ref that points at an 303 object that is not a commit-ish, or make the remote 304 ref point at an object that is not a commit-ish. 305 statusHints:: 306 Show directions on how to proceed from the current 307 state in the output of linkgit:git-status[1], in 308 the template shown when writing commit messages in 309 linkgit:git-commit[1], and in the help message shown 310 by linkgit:git-checkout[1] when switching branch. 311 statusUoption:: 312 Advise to consider using the `-u` option to linkgit:git-status[1] 313 when the command takes more than 2 seconds to enumerate untracked 314 files. 315 commitBeforeMerge:: 316 Advice shown when linkgit:git-merge[1] refuses to 317 merge to avoid overwriting local changes. 318 resolveConflict:: 319 Advice shown by various commands when conflicts 320 prevent the operation from being performed. 321 implicitIdentity:: 322 Advice on how to set your identity configuration when 323 your information is guessed from the system username and 324 domain name. 325 detachedHead:: 326 Advice shown when you used linkgit:git-checkout[1] to 327 move to the detach HEAD state, to instruct how to create 328 a local branch after the fact. 329 amWorkDir:: 330 Advice that shows the location of the patch file when 331 linkgit:git-am[1] fails to apply it. 332 rmHints:: 333 In case of failure in the output of linkgit:git-rm[1], 334 show directions on how to proceed from the current state. 335-- 336 337core.fileMode:: 338 Tells Git if the executable bit of files in the working tree 339 is to be honored. 340+ 341Some filesystems lose the executable bit when a file that is 342marked as executable is checked out, or checks out an 343non-executable file with executable bit on. 344linkgit:git-clone[1] or linkgit:git-init[1] probe the filesystem 345to see if it handles the executable bit correctly 346and this variable is automatically set as necessary. 347+ 348A repository, however, may be on a filesystem that handles 349the filemode correctly, and this variable is set to 'true' 350when created, but later may be made accessible from another 351environment that loses the filemode (e.g. exporting ext4 via 352CIFS mount, visiting a Cygwin created repository with 353Git for Windows or Eclipse). 354In such a case it may be necessary to set this variable to 'false'. 355See linkgit:git-update-index[1]. 356+ 357The default is true (when core.filemode is not specified in the config file). 358 359core.hideDotFiles:: 360 (Windows-only) If true, mark newly-created directories and files whose 361 name starts with a dot as hidden. If 'dotGitOnly', only the `.git/` 362 directory is hidden, but no other files starting with a dot. The 363 default mode is 'dotGitOnly'. 364 365core.ignoreCase:: 366 If true, this option enables various workarounds to enable 367 Git to work better on filesystems that are not case sensitive, 368 like FAT. For example, if a directory listing finds 369 "makefile" when Git expects "Makefile", Git will assume 370 it is really the same file, and continue to remember it as 371 "Makefile". 372+ 373The default is false, except linkgit:git-clone[1] or linkgit:git-init[1] 374will probe and set core.ignoreCase true if appropriate when the repository 375is created. 376 377core.precomposeUnicode:: 378 This option is only used by Mac OS implementation of Git. 379 When core.precomposeUnicode=true, Git reverts the unicode decomposition 380 of filenames done by Mac OS. This is useful when sharing a repository 381 between Mac OS and Linux or Windows. 382 (Git for Windows 1.7.10 or higher is needed, or Git under cygwin 1.7). 383 When false, file names are handled fully transparent by Git, 384 which is backward compatible with older versions of Git. 385 386core.protectHFS:: 387 If set to true, do not allow checkout of paths that would 388 be considered equivalent to `.git` on an HFS+ filesystem. 389 Defaults to `true` on Mac OS, and `false` elsewhere. 390 391core.protectNTFS:: 392 If set to true, do not allow checkout of paths that would 393 cause problems with the NTFS filesystem, e.g. conflict with 394 8.3 "short" names. 395 Defaults to `true` on Windows, and `false` elsewhere. 396 397core.trustctime:: 398 If false, the ctime differences between the index and the 399 working tree are ignored; useful when the inode change time 400 is regularly modified by something outside Git (file system 401 crawlers and some backup systems). 402 See linkgit:git-update-index[1]. True by default. 403 404core.splitIndex:: 405 If true, the split-index feature of the index will be used. 406 See linkgit:git-update-index[1]. False by default. 407 408core.untrackedCache:: 409 Determines what to do about the untracked cache feature of the 410 index. It will be kept, if this variable is unset or set to 411 `keep`. It will automatically be added if set to `true`. And 412 it will automatically be removed, if set to `false`. Before 413 setting it to `true`, you should check that mtime is working 414 properly on your system. 415 See linkgit:git-update-index[1]. `keep` by default. 416 417core.checkStat:: 418 Determines which stat fields to match between the index 419 and work tree. The user can set this to 'default' or 420 'minimal'. Default (or explicitly 'default'), is to check 421 all fields, including the sub-second part of mtime and ctime. 422 423core.quotePath:: 424 Commands that output paths (e.g. 'ls-files', 'diff'), will 425 quote "unusual" characters in the pathname by enclosing the 426 pathname in double-quotes and escaping those characters with 427 backslashes in the same way C escapes control characters (e.g. 428 `\t` for TAB, `\n` for LF, `\\` for backslash) or bytes with 429 values larger than 0x80 (e.g. octal `\302\265` for "micro" in 430 UTF-8). If this variable is set to false, bytes higher than 431 0x80 are not considered "unusual" any more. Double-quotes, 432 backslash and control characters are always escaped regardless 433 of the setting of this variable. A simple space character is 434 not considered "unusual". Many commands can output pathnames 435 completely verbatim using the `-z` option. The default value 436 is true. 437 438core.eol:: 439 Sets the line ending type to use in the working directory for 440 files that have the `text` property set when core.autocrlf is false. 441 Alternatives are 'lf', 'crlf' and 'native', which uses the platform's 442 native line ending. The default value is `native`. See 443 linkgit:gitattributes[5] for more information on end-of-line 444 conversion. 445 446core.safecrlf:: 447 If true, makes Git check if converting `CRLF` is reversible when 448 end-of-line conversion is active. Git will verify if a command 449 modifies a file in the work tree either directly or indirectly. 450 For example, committing a file followed by checking out the 451 same file should yield the original file in the work tree. If 452 this is not the case for the current setting of 453 `core.autocrlf`, Git will reject the file. The variable can 454 be set to "warn", in which case Git will only warn about an 455 irreversible conversion but continue the operation. 456+ 457CRLF conversion bears a slight chance of corrupting data. 458When it is enabled, Git will convert CRLF to LF during commit and LF to 459CRLF during checkout. A file that contains a mixture of LF and 460CRLF before the commit cannot be recreated by Git. For text 461files this is the right thing to do: it corrects line endings 462such that we have only LF line endings in the repository. 463But for binary files that are accidentally classified as text the 464conversion can corrupt data. 465+ 466If you recognize such corruption early you can easily fix it by 467setting the conversion type explicitly in .gitattributes. Right 468after committing you still have the original file in your work 469tree and this file is not yet corrupted. You can explicitly tell 470Git that this file is binary and Git will handle the file 471appropriately. 472+ 473Unfortunately, the desired effect of cleaning up text files with 474mixed line endings and the undesired effect of corrupting binary 475files cannot be distinguished. In both cases CRLFs are removed 476in an irreversible way. For text files this is the right thing 477to do because CRLFs are line endings, while for binary files 478converting CRLFs corrupts data. 479+ 480Note, this safety check does not mean that a checkout will generate a 481file identical to the original file for a different setting of 482`core.eol` and `core.autocrlf`, but only for the current one. For 483example, a text file with `LF` would be accepted with `core.eol=lf` 484and could later be checked out with `core.eol=crlf`, in which case the 485resulting file would contain `CRLF`, although the original file 486contained `LF`. However, in both work trees the line endings would be 487consistent, that is either all `LF` or all `CRLF`, but never mixed. A 488file with mixed line endings would be reported by the `core.safecrlf` 489mechanism. 490 491core.autocrlf:: 492 Setting this variable to "true" is the same as setting 493 the `text` attribute to "auto" on all files and core.eol to "crlf". 494 Set to true if you want to have `CRLF` line endings in your 495 working directory and the repository has LF line endings. 496 This variable can be set to 'input', 497 in which case no output conversion is performed. 498 499core.symlinks:: 500 If false, symbolic links are checked out as small plain files that 501 contain the link text. linkgit:git-update-index[1] and 502 linkgit:git-add[1] will not change the recorded type to regular 503 file. Useful on filesystems like FAT that do not support 504 symbolic links. 505+ 506The default is true, except linkgit:git-clone[1] or linkgit:git-init[1] 507will probe and set core.symlinks false if appropriate when the repository 508is created. 509 510core.gitProxy:: 511 A "proxy command" to execute (as 'command host port') instead 512 of establishing direct connection to the remote server when 513 using the Git protocol for fetching. If the variable value is 514 in the "COMMAND for DOMAIN" format, the command is applied only 515 on hostnames ending with the specified domain string. This variable 516 may be set multiple times and is matched in the given order; 517 the first match wins. 518+ 519Can be overridden by the `GIT_PROXY_COMMAND` environment variable 520(which always applies universally, without the special "for" 521handling). 522+ 523The special string `none` can be used as the proxy command to 524specify that no proxy be used for a given domain pattern. 525This is useful for excluding servers inside a firewall from 526proxy use, while defaulting to a common proxy for external domains. 527 528core.sshCommand:: 529 If this variable is set, `git fetch` and `git push` will 530 use the specified command instead of `ssh` when they need to 531 connect to a remote system. The command is in the same form as 532 the `GIT_SSH_COMMAND` environment variable and is overridden 533 when the environment variable is set. 534 535core.ignoreStat:: 536 If true, Git will avoid using lstat() calls to detect if files have 537 changed by setting the "assume-unchanged" bit for those tracked files 538 which it has updated identically in both the index and working tree. 539+ 540When files are modified outside of Git, the user will need to stage 541the modified files explicitly (e.g. see 'Examples' section in 542linkgit:git-update-index[1]). 543Git will not normally detect changes to those files. 544+ 545This is useful on systems where lstat() calls are very slow, such as 546CIFS/Microsoft Windows. 547+ 548False by default. 549 550core.preferSymlinkRefs:: 551 Instead of the default "symref" format for HEAD 552 and other symbolic reference files, use symbolic links. 553 This is sometimes needed to work with old scripts that 554 expect HEAD to be a symbolic link. 555 556core.bare:: 557 If true this repository is assumed to be 'bare' and has no 558 working directory associated with it. If this is the case a 559 number of commands that require a working directory will be 560 disabled, such as linkgit:git-add[1] or linkgit:git-merge[1]. 561+ 562This setting is automatically guessed by linkgit:git-clone[1] or 563linkgit:git-init[1] when the repository was created. By default a 564repository that ends in "/.git" is assumed to be not bare (bare = 565false), while all other repositories are assumed to be bare (bare 566= true). 567 568core.worktree:: 569 Set the path to the root of the working tree. 570 If `GIT_COMMON_DIR` environment variable is set, core.worktree 571 is ignored and not used for determining the root of working tree. 572 This can be overridden by the `GIT_WORK_TREE` environment 573 variable and the `--work-tree` command-line option. 574 The value can be an absolute path or relative to the path to 575 the .git directory, which is either specified by --git-dir 576 or GIT_DIR, or automatically discovered. 577 If --git-dir or GIT_DIR is specified but none of 578 --work-tree, GIT_WORK_TREE and core.worktree is specified, 579 the current working directory is regarded as the top level 580 of your working tree. 581+ 582Note that this variable is honored even when set in a configuration 583file in a ".git" subdirectory of a directory and its value differs 584from the latter directory (e.g. "/path/to/.git/config" has 585core.worktree set to "/different/path"), which is most likely a 586misconfiguration. Running Git commands in the "/path/to" directory will 587still use "/different/path" as the root of the work tree and can cause 588confusion unless you know what you are doing (e.g. you are creating a 589read-only snapshot of the same index to a location different from the 590repository's usual working tree). 591 592core.logAllRefUpdates:: 593 Enable the reflog. Updates to a ref <ref> is logged to the file 594 "`$GIT_DIR/logs/<ref>`", by appending the new and old 595 SHA-1, the date/time and the reason of the update, but 596 only when the file exists. If this configuration 597 variable is set to `true`, missing "`$GIT_DIR/logs/<ref>`" 598 file is automatically created for branch heads (i.e. under 599 `refs/heads/`), remote refs (i.e. under `refs/remotes/`), 600 note refs (i.e. under `refs/notes/`), and the symbolic ref `HEAD`. 601 If it is set to `always`, then a missing reflog is automatically 602 created for any ref under `refs/`. 603+ 604This information can be used to determine what commit 605was the tip of a branch "2 days ago". 606+ 607This value is true by default in a repository that has 608a working directory associated with it, and false by 609default in a bare repository. 610 611core.repositoryFormatVersion:: 612 Internal variable identifying the repository format and layout 613 version. 614 615core.sharedRepository:: 616 When 'group' (or 'true'), the repository is made shareable between 617 several users in a group (making sure all the files and objects are 618 group-writable). When 'all' (or 'world' or 'everybody'), the 619 repository will be readable by all users, additionally to being 620 group-shareable. When 'umask' (or 'false'), Git will use permissions 621 reported by umask(2). When '0xxx', where '0xxx' is an octal number, 622 files in the repository will have this mode value. '0xxx' will override 623 user's umask value (whereas the other options will only override 624 requested parts of the user's umask value). Examples: '0660' will make 625 the repo read/write-able for the owner and group, but inaccessible to 626 others (equivalent to 'group' unless umask is e.g. '0022'). '0640' is a 627 repository that is group-readable but not group-writable. 628 See linkgit:git-init[1]. False by default. 629 630core.warnAmbiguousRefs:: 631 If true, Git will warn you if the ref name you passed it is ambiguous 632 and might match multiple refs in the repository. True by default. 633 634core.compression:: 635 An integer -1..9, indicating a default compression level. 636 -1 is the zlib default. 0 means no compression, 637 and 1..9 are various speed/size tradeoffs, 9 being slowest. 638 If set, this provides a default to other compression variables, 639 such as `core.looseCompression` and `pack.compression`. 640 641core.looseCompression:: 642 An integer -1..9, indicating the compression level for objects that 643 are not in a pack file. -1 is the zlib default. 0 means no 644 compression, and 1..9 are various speed/size tradeoffs, 9 being 645 slowest. If not set, defaults to core.compression. If that is 646 not set, defaults to 1 (best speed). 647 648core.packedGitWindowSize:: 649 Number of bytes of a pack file to map into memory in a 650 single mapping operation. Larger window sizes may allow 651 your system to process a smaller number of large pack files 652 more quickly. Smaller window sizes will negatively affect 653 performance due to increased calls to the operating system's 654 memory manager, but may improve performance when accessing 655 a large number of large pack files. 656+ 657Default is 1 MiB if NO_MMAP was set at compile time, otherwise 32 658MiB on 32 bit platforms and 1 GiB on 64 bit platforms. This should 659be reasonable for all users/operating systems. You probably do 660not need to adjust this value. 661+ 662Common unit suffixes of 'k', 'm', or 'g' are supported. 663 664core.packedGitLimit:: 665 Maximum number of bytes to map simultaneously into memory 666 from pack files. If Git needs to access more than this many 667 bytes at once to complete an operation it will unmap existing 668 regions to reclaim virtual address space within the process. 669+ 670Default is 256 MiB on 32 bit platforms and 8 GiB on 64 bit platforms. 671This should be reasonable for all users/operating systems, except on 672the largest projects. You probably do not need to adjust this value. 673+ 674Common unit suffixes of 'k', 'm', or 'g' are supported. 675 676core.deltaBaseCacheLimit:: 677 Maximum number of bytes to reserve for caching base objects 678 that may be referenced by multiple deltified objects. By storing the 679 entire decompressed base objects in a cache Git is able 680 to avoid unpacking and decompressing frequently used base 681 objects multiple times. 682+ 683Default is 96 MiB on all platforms. This should be reasonable 684for all users/operating systems, except on the largest projects. 685You probably do not need to adjust this value. 686+ 687Common unit suffixes of 'k', 'm', or 'g' are supported. 688 689core.bigFileThreshold:: 690 Files larger than this size are stored deflated, without 691 attempting delta compression. Storing large files without 692 delta compression avoids excessive memory usage, at the 693 slight expense of increased disk usage. Additionally files 694 larger than this size are always treated as binary. 695+ 696Default is 512 MiB on all platforms. This should be reasonable 697for most projects as source code and other text files can still 698be delta compressed, but larger binary media files won't be. 699+ 700Common unit suffixes of 'k', 'm', or 'g' are supported. 701 702core.excludesFile:: 703 Specifies the pathname to the file that contains patterns to 704 describe paths that are not meant to be tracked, in addition 705 to '.gitignore' (per-directory) and '.git/info/exclude'. 706 Defaults to `$XDG_CONFIG_HOME/git/ignore`. 707 If `$XDG_CONFIG_HOME` is either not set or empty, `$HOME/.config/git/ignore` 708 is used instead. See linkgit:gitignore[5]. 709 710core.askPass:: 711 Some commands (e.g. svn and http interfaces) that interactively 712 ask for a password can be told to use an external program given 713 via the value of this variable. Can be overridden by the `GIT_ASKPASS` 714 environment variable. If not set, fall back to the value of the 715 `SSH_ASKPASS` environment variable or, failing that, a simple password 716 prompt. The external program shall be given a suitable prompt as 717 command-line argument and write the password on its STDOUT. 718 719core.attributesFile:: 720 In addition to '.gitattributes' (per-directory) and 721 '.git/info/attributes', Git looks into this file for attributes 722 (see linkgit:gitattributes[5]). Path expansions are made the same 723 way as for `core.excludesFile`. Its default value is 724 `$XDG_CONFIG_HOME/git/attributes`. If `$XDG_CONFIG_HOME` is either not 725 set or empty, `$HOME/.config/git/attributes` is used instead. 726 727core.hooksPath:: 728 By default Git will look for your hooks in the 729 '$GIT_DIR/hooks' directory. Set this to different path, 730 e.g. '/etc/git/hooks', and Git will try to find your hooks in 731 that directory, e.g. '/etc/git/hooks/pre-receive' instead of 732 in '$GIT_DIR/hooks/pre-receive'. 733+ 734The path can be either absolute or relative. A relative path is 735taken as relative to the directory where the hooks are run (see 736the "DESCRIPTION" section of linkgit:githooks[5]). 737+ 738This configuration variable is useful in cases where you'd like to 739centrally configure your Git hooks instead of configuring them on a 740per-repository basis, or as a more flexible and centralized 741alternative to having an `init.templateDir` where you've changed 742default hooks. 743 744core.editor:: 745 Commands such as `commit` and `tag` that let you edit 746 messages by launching an editor use the value of this 747 variable when it is set, and the environment variable 748 `GIT_EDITOR` is not set. See linkgit:git-var[1]. 749 750core.commentChar:: 751 Commands such as `commit` and `tag` that let you edit 752 messages consider a line that begins with this character 753 commented, and removes them after the editor returns 754 (default '#'). 755+ 756If set to "auto", `git-commit` would select a character that is not 757the beginning character of any line in existing commit messages. 758 759core.packedRefsTimeout:: 760 The length of time, in milliseconds, to retry when trying to 761 lock the `packed-refs` file. Value 0 means not to retry at 762 all; -1 means to try indefinitely. Default is 1000 (i.e., 763 retry for 1 second). 764 765sequence.editor:: 766 Text editor used by `git rebase -i` for editing the rebase instruction file. 767 The value is meant to be interpreted by the shell when it is used. 768 It can be overridden by the `GIT_SEQUENCE_EDITOR` environment variable. 769 When not configured the default commit message editor is used instead. 770 771core.pager:: 772 Text viewer for use by Git commands (e.g., 'less'). The value 773 is meant to be interpreted by the shell. The order of preference 774 is the `$GIT_PAGER` environment variable, then `core.pager` 775 configuration, then `$PAGER`, and then the default chosen at 776 compile time (usually 'less'). 777+ 778When the `LESS` environment variable is unset, Git sets it to `FRX` 779(if `LESS` environment variable is set, Git does not change it at 780all). If you want to selectively override Git's default setting 781for `LESS`, you can set `core.pager` to e.g. `less -S`. This will 782be passed to the shell by Git, which will translate the final 783command to `LESS=FRX less -S`. The environment does not set the 784`S` option but the command line does, instructing less to truncate 785long lines. Similarly, setting `core.pager` to `less -+F` will 786deactivate the `F` option specified by the environment from the 787command-line, deactivating the "quit if one screen" behavior of 788`less`. One can specifically activate some flags for particular 789commands: for example, setting `pager.blame` to `less -S` enables 790line truncation only for `git blame`. 791+ 792Likewise, when the `LV` environment variable is unset, Git sets it 793to `-c`. You can override this setting by exporting `LV` with 794another value or setting `core.pager` to `lv +c`. 795 796core.whitespace:: 797 A comma separated list of common whitespace problems to 798 notice. 'git diff' will use `color.diff.whitespace` to 799 highlight them, and 'git apply --whitespace=error' will 800 consider them as errors. You can prefix `-` to disable 801 any of them (e.g. `-trailing-space`): 802+ 803* `blank-at-eol` treats trailing whitespaces at the end of the line 804 as an error (enabled by default). 805* `space-before-tab` treats a space character that appears immediately 806 before a tab character in the initial indent part of the line as an 807 error (enabled by default). 808* `indent-with-non-tab` treats a line that is indented with space 809 characters instead of the equivalent tabs as an error (not enabled by 810 default). 811* `tab-in-indent` treats a tab character in the initial indent part of 812 the line as an error (not enabled by default). 813* `blank-at-eof` treats blank lines added at the end of file as an error 814 (enabled by default). 815* `trailing-space` is a short-hand to cover both `blank-at-eol` and 816 `blank-at-eof`. 817* `cr-at-eol` treats a carriage-return at the end of line as 818 part of the line terminator, i.e. with it, `trailing-space` 819 does not trigger if the character before such a carriage-return 820 is not a whitespace (not enabled by default). 821* `tabwidth=<n>` tells how many character positions a tab occupies; this 822 is relevant for `indent-with-non-tab` and when Git fixes `tab-in-indent` 823 errors. The default tab width is 8. Allowed values are 1 to 63. 824 825core.fsyncObjectFiles:: 826 This boolean will enable 'fsync()' when writing object files. 827+ 828This is a total waste of time and effort on a filesystem that orders 829data writes properly, but can be useful for filesystems that do not use 830journalling (traditional UNIX filesystems) or that only journal metadata 831and not file contents (OS X's HFS+, or Linux ext3 with "data=writeback"). 832 833core.preloadIndex:: 834 Enable parallel index preload for operations like 'git diff' 835+ 836This can speed up operations like 'git diff' and 'git status' especially 837on filesystems like NFS that have weak caching semantics and thus 838relatively high IO latencies. When enabled, Git will do the 839index comparison to the filesystem data in parallel, allowing 840overlapping IO's. Defaults to true. 841 842core.createObject:: 843 You can set this to 'link', in which case a hardlink followed by 844 a delete of the source are used to make sure that object creation 845 will not overwrite existing objects. 846+ 847On some file system/operating system combinations, this is unreliable. 848Set this config setting to 'rename' there; However, This will remove the 849check that makes sure that existing object files will not get overwritten. 850 851core.notesRef:: 852 When showing commit messages, also show notes which are stored in 853 the given ref. The ref must be fully qualified. If the given 854 ref does not exist, it is not an error but means that no 855 notes should be printed. 856+ 857This setting defaults to "refs/notes/commits", and it can be overridden by 858the `GIT_NOTES_REF` environment variable. See linkgit:git-notes[1]. 859 860core.sparseCheckout:: 861 Enable "sparse checkout" feature. See section "Sparse checkout" in 862 linkgit:git-read-tree[1] for more information. 863 864core.abbrev:: 865 Set the length object names are abbreviated to. If 866 unspecified or set to "auto", an appropriate value is 867 computed based on the approximate number of packed objects 868 in your repository, which hopefully is enough for 869 abbreviated object names to stay unique for some time. 870 871add.ignoreErrors:: 872add.ignore-errors (deprecated):: 873 Tells 'git add' to continue adding files when some files cannot be 874 added due to indexing errors. Equivalent to the `--ignore-errors` 875 option of linkgit:git-add[1]. `add.ignore-errors` is deprecated, 876 as it does not follow the usual naming convention for configuration 877 variables. 878 879alias.*:: 880 Command aliases for the linkgit:git[1] command wrapper - e.g. 881 after defining "alias.last = cat-file commit HEAD", the invocation 882 "git last" is equivalent to "git cat-file commit HEAD". To avoid 883 confusion and troubles with script usage, aliases that 884 hide existing Git commands are ignored. Arguments are split by 885 spaces, the usual shell quoting and escaping is supported. 886 A quote pair or a backslash can be used to quote them. 887+ 888If the alias expansion is prefixed with an exclamation point, 889it will be treated as a shell command. For example, defining 890"alias.new = !gitk --all --not ORIG_HEAD", the invocation 891"git new" is equivalent to running the shell command 892"gitk --all --not ORIG_HEAD". Note that shell commands will be 893executed from the top-level directory of a repository, which may 894not necessarily be the current directory. 895`GIT_PREFIX` is set as returned by running 'git rev-parse --show-prefix' 896from the original current directory. See linkgit:git-rev-parse[1]. 897 898am.keepcr:: 899 If true, git-am will call git-mailsplit for patches in mbox format 900 with parameter `--keep-cr`. In this case git-mailsplit will 901 not remove `\r` from lines ending with `\r\n`. Can be overridden 902 by giving `--no-keep-cr` from the command line. 903 See linkgit:git-am[1], linkgit:git-mailsplit[1]. 904 905am.threeWay:: 906 By default, `git am` will fail if the patch does not apply cleanly. When 907 set to true, this setting tells `git am` to fall back on 3-way merge if 908 the patch records the identity of blobs it is supposed to apply to and 909 we have those blobs available locally (equivalent to giving the `--3way` 910 option from the command line). Defaults to `false`. 911 See linkgit:git-am[1]. 912 913apply.ignoreWhitespace:: 914 When set to 'change', tells 'git apply' to ignore changes in 915 whitespace, in the same way as the `--ignore-space-change` 916 option. 917 When set to one of: no, none, never, false tells 'git apply' to 918 respect all whitespace differences. 919 See linkgit:git-apply[1]. 920 921apply.whitespace:: 922 Tells 'git apply' how to handle whitespaces, in the same way 923 as the `--whitespace` option. See linkgit:git-apply[1]. 924 925branch.autoSetupMerge:: 926 Tells 'git branch' and 'git checkout' to set up new branches 927 so that linkgit:git-pull[1] will appropriately merge from the 928 starting point branch. Note that even if this option is not set, 929 this behavior can be chosen per-branch using the `--track` 930 and `--no-track` options. The valid settings are: `false` -- no 931 automatic setup is done; `true` -- automatic setup is done when the 932 starting point is a remote-tracking branch; `always` -- 933 automatic setup is done when the starting point is either a 934 local branch or remote-tracking 935 branch. This option defaults to true. 936 937branch.autoSetupRebase:: 938 When a new branch is created with 'git branch' or 'git checkout' 939 that tracks another branch, this variable tells Git to set 940 up pull to rebase instead of merge (see "branch.<name>.rebase"). 941 When `never`, rebase is never automatically set to true. 942 When `local`, rebase is set to true for tracked branches of 943 other local branches. 944 When `remote`, rebase is set to true for tracked branches of 945 remote-tracking branches. 946 When `always`, rebase will be set to true for all tracking 947 branches. 948 See "branch.autoSetupMerge" for details on how to set up a 949 branch to track another branch. 950 This option defaults to never. 951 952branch.<name>.remote:: 953 When on branch <name>, it tells 'git fetch' and 'git push' 954 which remote to fetch from/push to. The remote to push to 955 may be overridden with `remote.pushDefault` (for all branches). 956 The remote to push to, for the current branch, may be further 957 overridden by `branch.<name>.pushRemote`. If no remote is 958 configured, or if you are not on any branch, it defaults to 959 `origin` for fetching and `remote.pushDefault` for pushing. 960 Additionally, `.` (a period) is the current local repository 961 (a dot-repository), see `branch.<name>.merge`'s final note below. 962 963branch.<name>.pushRemote:: 964 When on branch <name>, it overrides `branch.<name>.remote` for 965 pushing. It also overrides `remote.pushDefault` for pushing 966 from branch <name>. When you pull from one place (e.g. your 967 upstream) and push to another place (e.g. your own publishing 968 repository), you would want to set `remote.pushDefault` to 969 specify the remote to push to for all branches, and use this 970 option to override it for a specific branch. 971 972branch.<name>.merge:: 973 Defines, together with branch.<name>.remote, the upstream branch 974 for the given branch. It tells 'git fetch'/'git pull'/'git rebase' which 975 branch to merge and can also affect 'git push' (see push.default). 976 When in branch <name>, it tells 'git fetch' the default 977 refspec to be marked for merging in FETCH_HEAD. The value is 978 handled like the remote part of a refspec, and must match a 979 ref which is fetched from the remote given by 980 "branch.<name>.remote". 981 The merge information is used by 'git pull' (which at first calls 982 'git fetch') to lookup the default branch for merging. Without 983 this option, 'git pull' defaults to merge the first refspec fetched. 984 Specify multiple values to get an octopus merge. 985 If you wish to setup 'git pull' so that it merges into <name> from 986 another branch in the local repository, you can point 987 branch.<name>.merge to the desired branch, and use the relative path 988 setting `.` (a period) for branch.<name>.remote. 989 990branch.<name>.mergeOptions:: 991 Sets default options for merging into branch <name>. The syntax and 992 supported options are the same as those of linkgit:git-merge[1], but 993 option values containing whitespace characters are currently not 994 supported. 995 996branch.<name>.rebase:: 997 When true, rebase the branch <name> on top of the fetched branch, 998 instead of merging the default branch from the default remote when 999 "git pull" is run. See "pull.rebase" for doing this in a non1000 branch-specific manner.1001+1002When preserve, also pass `--preserve-merges` along to 'git rebase'1003so that locally committed merge commits will not be flattened1004by running 'git pull'.1005+1006When the value is `interactive`, the rebase is run in interactive mode.1007+1008*NOTE*: this is a possibly dangerous operation; do *not* use1009it unless you understand the implications (see linkgit:git-rebase[1]1010for details).10111012branch.<name>.description::1013 Branch description, can be edited with1014 `git branch --edit-description`. Branch description is1015 automatically added in the format-patch cover letter or1016 request-pull summary.10171018browser.<tool>.cmd::1019 Specify the command to invoke the specified browser. The1020 specified command is evaluated in shell with the URLs passed1021 as arguments. (See linkgit:git-web{litdd}browse[1].)10221023browser.<tool>.path::1024 Override the path for the given tool that may be used to1025 browse HTML help (see `-w` option in linkgit:git-help[1]) or a1026 working repository in gitweb (see linkgit:git-instaweb[1]).10271028clean.requireForce::1029 A boolean to make git-clean do nothing unless given -f,1030 -i or -n. Defaults to true.10311032color.branch::1033 A boolean to enable/disable color in the output of1034 linkgit:git-branch[1]. May be set to `always`,1035 `false` (or `never`) or `auto` (or `true`), in which case colors are used1036 only when the output is to a terminal. If unset, then the1037 value of `color.ui` is used (`auto` by default).10381039color.branch.<slot>::1040 Use customized color for branch coloration. `<slot>` is one of1041 `current` (the current branch), `local` (a local branch),1042 `remote` (a remote-tracking branch in refs/remotes/),1043 `upstream` (upstream tracking branch), `plain` (other1044 refs).10451046color.diff::1047 Whether to use ANSI escape sequences to add color to patches.1048 If this is set to `always`, linkgit:git-diff[1],1049 linkgit:git-log[1], and linkgit:git-show[1] will use color1050 for all patches. If it is set to `true` or `auto`, those1051 commands will only use color when output is to the terminal.1052 If unset, then the value of `color.ui` is used (`auto` by1053 default).1054+1055This does not affect linkgit:git-format-patch[1] or the1056'git-diff-{asterisk}' plumbing commands. Can be overridden on the1057command line with the `--color[=<when>]` option.10581059color.diff.<slot>::1060 Use customized color for diff colorization. `<slot>` specifies1061 which part of the patch to use the specified color, and is one1062 of `context` (context text - `plain` is a historical synonym),1063 `meta` (metainformation), `frag`1064 (hunk header), 'func' (function in hunk header), `old` (removed lines),1065 `new` (added lines), `commit` (commit headers), or `whitespace`1066 (highlighting whitespace errors).10671068color.decorate.<slot>::1069 Use customized color for 'git log --decorate' output. `<slot>` is one1070 of `branch`, `remoteBranch`, `tag`, `stash` or `HEAD` for local1071 branches, remote-tracking branches, tags, stash and HEAD, respectively.10721073color.grep::1074 When set to `always`, always highlight matches. When `false` (or1075 `never`), never. When set to `true` or `auto`, use color only1076 when the output is written to the terminal. If unset, then the1077 value of `color.ui` is used (`auto` by default).10781079color.grep.<slot>::1080 Use customized color for grep colorization. `<slot>` specifies which1081 part of the line to use the specified color, and is one of1082+1083--1084`context`;;1085 non-matching text in context lines (when using `-A`, `-B`, or `-C`)1086`filename`;;1087 filename prefix (when not using `-h`)1088`function`;;1089 function name lines (when using `-p`)1090`linenumber`;;1091 line number prefix (when using `-n`)1092`match`;;1093 matching text (same as setting `matchContext` and `matchSelected`)1094`matchContext`;;1095 matching text in context lines1096`matchSelected`;;1097 matching text in selected lines1098`selected`;;1099 non-matching text in selected lines1100`separator`;;1101 separators between fields on a line (`:`, `-`, and `=`)1102 and between hunks (`--`)1103--11041105color.interactive::1106 When set to `always`, always use colors for interactive prompts1107 and displays (such as those used by "git-add --interactive" and1108 "git-clean --interactive"). When false (or `never`), never.1109 When set to `true` or `auto`, use colors only when the output is1110 to the terminal. If unset, then the value of `color.ui` is1111 used (`auto` by default).11121113color.interactive.<slot>::1114 Use customized color for 'git add --interactive' and 'git clean1115 --interactive' output. `<slot>` may be `prompt`, `header`, `help`1116 or `error`, for four distinct types of normal output from1117 interactive commands.11181119color.pager::1120 A boolean to enable/disable colored output when the pager is in1121 use (default is true).11221123color.showBranch::1124 A boolean to enable/disable color in the output of1125 linkgit:git-show-branch[1]. May be set to `always`,1126 `false` (or `never`) or `auto` (or `true`), in which case colors are used1127 only when the output is to a terminal. If unset, then the1128 value of `color.ui` is used (`auto` by default).11291130color.status::1131 A boolean to enable/disable color in the output of1132 linkgit:git-status[1]. May be set to `always`,1133 `false` (or `never`) or `auto` (or `true`), in which case colors are used1134 only when the output is to a terminal. If unset, then the1135 value of `color.ui` is used (`auto` by default).11361137color.status.<slot>::1138 Use customized color for status colorization. `<slot>` is1139 one of `header` (the header text of the status message),1140 `added` or `updated` (files which are added but not committed),1141 `changed` (files which are changed but not added in the index),1142 `untracked` (files which are not tracked by Git),1143 `branch` (the current branch),1144 `nobranch` (the color the 'no branch' warning is shown in, defaulting1145 to red), or1146 `unmerged` (files which have unmerged changes).11471148color.ui::1149 This variable determines the default value for variables such1150 as `color.diff` and `color.grep` that control the use of color1151 per command family. Its scope will expand as more commands learn1152 configuration to set a default for the `--color` option. Set it1153 to `false` or `never` if you prefer Git commands not to use1154 color unless enabled explicitly with some other configuration1155 or the `--color` option. Set it to `always` if you want all1156 output not intended for machine consumption to use color, to1157 `true` or `auto` (this is the default since Git 1.8.4) if you1158 want such output to use color when written to the terminal.11591160column.ui::1161 Specify whether supported commands should output in columns.1162 This variable consists of a list of tokens separated by spaces1163 or commas:1164+1165These options control when the feature should be enabled1166(defaults to 'never'):1167+1168--1169`always`;;1170 always show in columns1171`never`;;1172 never show in columns1173`auto`;;1174 show in columns if the output is to the terminal1175--1176+1177These options control layout (defaults to 'column'). Setting any1178of these implies 'always' if none of 'always', 'never', or 'auto' are1179specified.1180+1181--1182`column`;;1183 fill columns before rows1184`row`;;1185 fill rows before columns1186`plain`;;1187 show in one column1188--1189+1190Finally, these options can be combined with a layout option (defaults1191to 'nodense'):1192+1193--1194`dense`;;1195 make unequal size columns to utilize more space1196`nodense`;;1197 make equal size columns1198--11991200column.branch::1201 Specify whether to output branch listing in `git branch` in columns.1202 See `column.ui` for details.12031204column.clean::1205 Specify the layout when list items in `git clean -i`, which always1206 shows files and directories in columns. See `column.ui` for details.12071208column.status::1209 Specify whether to output untracked files in `git status` in columns.1210 See `column.ui` for details.12111212column.tag::1213 Specify whether to output tag listing in `git tag` in columns.1214 See `column.ui` for details.12151216commit.cleanup::1217 This setting overrides the default of the `--cleanup` option in1218 `git commit`. See linkgit:git-commit[1] for details. Changing the1219 default can be useful when you always want to keep lines that begin1220 with comment character `#` in your log message, in which case you1221 would do `git config commit.cleanup whitespace` (note that you will1222 have to remove the help lines that begin with `#` in the commit log1223 template yourself, if you do this).12241225commit.gpgSign::12261227 A boolean to specify whether all commits should be GPG signed.1228 Use of this option when doing operations such as rebase can1229 result in a large number of commits being signed. It may be1230 convenient to use an agent to avoid typing your GPG passphrase1231 several times.12321233commit.status::1234 A boolean to enable/disable inclusion of status information in the1235 commit message template when using an editor to prepare the commit1236 message. Defaults to true.12371238commit.template::1239 Specify the pathname of a file to use as the template for1240 new commit messages.12411242commit.verbose::1243 A boolean or int to specify the level of verbose with `git commit`.1244 See linkgit:git-commit[1].12451246credential.helper::1247 Specify an external helper to be called when a username or1248 password credential is needed; the helper may consult external1249 storage to avoid prompting the user for the credentials. Note1250 that multiple helpers may be defined. See linkgit:gitcredentials[7]1251 for details.12521253credential.useHttpPath::1254 When acquiring credentials, consider the "path" component of an http1255 or https URL to be important. Defaults to false. See1256 linkgit:gitcredentials[7] for more information.12571258credential.username::1259 If no username is set for a network authentication, use this username1260 by default. See credential.<context>.* below, and1261 linkgit:gitcredentials[7].12621263credential.<url>.*::1264 Any of the credential.* options above can be applied selectively to1265 some credentials. For example "credential.https://example.com.username"1266 would set the default username only for https connections to1267 example.com. See linkgit:gitcredentials[7] for details on how URLs are1268 matched.12691270credentialCache.ignoreSIGHUP::1271 Tell git-credential-cache--daemon to ignore SIGHUP, instead of quitting.12721273include::diff-config.txt[]12741275difftool.<tool>.path::1276 Override the path for the given tool. This is useful in case1277 your tool is not in the PATH.12781279difftool.<tool>.cmd::1280 Specify the command to invoke the specified diff tool.1281 The specified command is evaluated in shell with the following1282 variables available: 'LOCAL' is set to the name of the temporary1283 file containing the contents of the diff pre-image and 'REMOTE'1284 is set to the name of the temporary file containing the contents1285 of the diff post-image.12861287difftool.prompt::1288 Prompt before each invocation of the diff tool.12891290fastimport.unpackLimit::1291 If the number of objects imported by linkgit:git-fast-import[1]1292 is below this limit, then the objects will be unpacked into1293 loose object files. However if the number of imported objects1294 equals or exceeds this limit then the pack will be stored as a1295 pack. Storing the pack from a fast-import can make the import1296 operation complete faster, especially on slow filesystems. If1297 not set, the value of `transfer.unpackLimit` is used instead.12981299fetch.recurseSubmodules::1300 This option can be either set to a boolean value or to 'on-demand'.1301 Setting it to a boolean changes the behavior of fetch and pull to1302 unconditionally recurse into submodules when set to true or to not1303 recurse at all when set to false. When set to 'on-demand' (the default1304 value), fetch and pull will only recurse into a populated submodule1305 when its superproject retrieves a commit that updates the submodule's1306 reference.13071308fetch.fsckObjects::1309 If it is set to true, git-fetch-pack will check all fetched1310 objects. It will abort in the case of a malformed object or a1311 broken link. The result of an abort are only dangling objects.1312 Defaults to false. If not set, the value of `transfer.fsckObjects`1313 is used instead.13141315fetch.unpackLimit::1316 If the number of objects fetched over the Git native1317 transfer is below this1318 limit, then the objects will be unpacked into loose object1319 files. However if the number of received objects equals or1320 exceeds this limit then the received pack will be stored as1321 a pack, after adding any missing delta bases. Storing the1322 pack from a push can make the push operation complete faster,1323 especially on slow filesystems. If not set, the value of1324 `transfer.unpackLimit` is used instead.13251326fetch.prune::1327 If true, fetch will automatically behave as if the `--prune`1328 option was given on the command line. See also `remote.<name>.prune`.13291330fetch.output::1331 Control how ref update status is printed. Valid values are1332 `full` and `compact`. Default value is `full`. See section1333 OUTPUT in linkgit:git-fetch[1] for detail.13341335format.attach::1336 Enable multipart/mixed attachments as the default for1337 'format-patch'. The value can also be a double quoted string1338 which will enable attachments as the default and set the1339 value as the boundary. See the --attach option in1340 linkgit:git-format-patch[1].13411342format.from::1343 Provides the default value for the `--from` option to format-patch.1344 Accepts a boolean value, or a name and email address. If false,1345 format-patch defaults to `--no-from`, using commit authors directly in1346 the "From:" field of patch mails. If true, format-patch defaults to1347 `--from`, using your committer identity in the "From:" field of patch1348 mails and including a "From:" field in the body of the patch mail if1349 different. If set to a non-boolean value, format-patch uses that1350 value instead of your committer identity. Defaults to false.13511352format.numbered::1353 A boolean which can enable or disable sequence numbers in patch1354 subjects. It defaults to "auto" which enables it only if there1355 is more than one patch. It can be enabled or disabled for all1356 messages by setting it to "true" or "false". See --numbered1357 option in linkgit:git-format-patch[1].13581359format.headers::1360 Additional email headers to include in a patch to be submitted1361 by mail. See linkgit:git-format-patch[1].13621363format.to::1364format.cc::1365 Additional recipients to include in a patch to be submitted1366 by mail. See the --to and --cc options in1367 linkgit:git-format-patch[1].13681369format.subjectPrefix::1370 The default for format-patch is to output files with the '[PATCH]'1371 subject prefix. Use this variable to change that prefix.13721373format.signature::1374 The default for format-patch is to output a signature containing1375 the Git version number. Use this variable to change that default.1376 Set this variable to the empty string ("") to suppress1377 signature generation.13781379format.signatureFile::1380 Works just like format.signature except the contents of the1381 file specified by this variable will be used as the signature.13821383format.suffix::1384 The default for format-patch is to output files with the suffix1385 `.patch`. Use this variable to change that suffix (make sure to1386 include the dot if you want it).13871388format.pretty::1389 The default pretty format for log/show/whatchanged command,1390 See linkgit:git-log[1], linkgit:git-show[1],1391 linkgit:git-whatchanged[1].13921393format.thread::1394 The default threading style for 'git format-patch'. Can be1395 a boolean value, or `shallow` or `deep`. `shallow` threading1396 makes every mail a reply to the head of the series,1397 where the head is chosen from the cover letter, the1398 `--in-reply-to`, and the first patch mail, in this order.1399 `deep` threading makes every mail a reply to the previous one.1400 A true boolean value is the same as `shallow`, and a false1401 value disables threading.14021403format.signOff::1404 A boolean value which lets you enable the `-s/--signoff` option of1405 format-patch by default. *Note:* Adding the Signed-off-by: line to a1406 patch should be a conscious act and means that you certify you have1407 the rights to submit this work under the same open source license.1408 Please see the 'SubmittingPatches' document for further discussion.14091410format.coverLetter::1411 A boolean that controls whether to generate a cover-letter when1412 format-patch is invoked, but in addition can be set to "auto", to1413 generate a cover-letter only when there's more than one patch.14141415format.outputDirectory::1416 Set a custom directory to store the resulting files instead of the1417 current working directory.14181419format.useAutoBase::1420 A boolean value which lets you enable the `--base=auto` option of1421 format-patch by default.14221423filter.<driver>.clean::1424 The command which is used to convert the content of a worktree1425 file to a blob upon checkin. See linkgit:gitattributes[5] for1426 details.14271428filter.<driver>.smudge::1429 The command which is used to convert the content of a blob1430 object to a worktree file upon checkout. See1431 linkgit:gitattributes[5] for details.14321433fsck.<msg-id>::1434 Allows overriding the message type (error, warn or ignore) of a1435 specific message ID such as `missingEmail`.1436+1437For convenience, fsck prefixes the error/warning with the message ID,1438e.g. "missingEmail: invalid author/committer line - missing email" means1439that setting `fsck.missingEmail = ignore` will hide that issue.1440+1441This feature is intended to support working with legacy repositories1442which cannot be repaired without disruptive changes.14431444fsck.skipList::1445 The path to a sorted list of object names (i.e. one SHA-1 per1446 line) that are known to be broken in a non-fatal way and should1447 be ignored. This feature is useful when an established project1448 should be accepted despite early commits containing errors that1449 can be safely ignored such as invalid committer email addresses.1450 Note: corrupt objects cannot be skipped with this setting.14511452gc.aggressiveDepth::1453 The depth parameter used in the delta compression1454 algorithm used by 'git gc --aggressive'. This defaults1455 to 50.14561457gc.aggressiveWindow::1458 The window size parameter used in the delta compression1459 algorithm used by 'git gc --aggressive'. This defaults1460 to 250.14611462gc.auto::1463 When there are approximately more than this many loose1464 objects in the repository, `git gc --auto` will pack them.1465 Some Porcelain commands use this command to perform a1466 light-weight garbage collection from time to time. The1467 default value is 6700. Setting this to 0 disables it.14681469gc.autoPackLimit::1470 When there are more than this many packs that are not1471 marked with `*.keep` file in the repository, `git gc1472 --auto` consolidates them into one larger pack. The1473 default value is 50. Setting this to 0 disables it.14741475gc.autoDetach::1476 Make `git gc --auto` return immediately and run in background1477 if the system supports it. Default is true.14781479gc.logExpiry::1480 If the file gc.log exists, then `git gc --auto` won't run1481 unless that file is more than 'gc.logExpiry' old. Default is1482 "1.day". See `gc.pruneExpire` for more ways to specify its1483 value.14841485gc.packRefs::1486 Running `git pack-refs` in a repository renders it1487 unclonable by Git versions prior to 1.5.1.2 over dumb1488 transports such as HTTP. This variable determines whether1489 'git gc' runs `git pack-refs`. This can be set to `notbare`1490 to enable it within all non-bare repos or it can be set to a1491 boolean value. The default is `true`.14921493gc.pruneExpire::1494 When 'git gc' is run, it will call 'prune --expire 2.weeks.ago'.1495 Override the grace period with this config variable. The value1496 "now" may be used to disable this grace period and always prune1497 unreachable objects immediately, or "never" may be used to1498 suppress pruning. This feature helps prevent corruption when1499 'git gc' runs concurrently with another process writing to the1500 repository; see the "NOTES" section of linkgit:git-gc[1].15011502gc.worktreePruneExpire::1503 When 'git gc' is run, it calls1504 'git worktree prune --expire 3.months.ago'.1505 This config variable can be used to set a different grace1506 period. The value "now" may be used to disable the grace1507 period and prune `$GIT_DIR/worktrees` immediately, or "never"1508 may be used to suppress pruning.15091510gc.reflogExpire::1511gc.<pattern>.reflogExpire::1512 'git reflog expire' removes reflog entries older than1513 this time; defaults to 90 days. The value "now" expires all1514 entries immediately, and "never" suppresses expiration1515 altogether. With "<pattern>" (e.g.1516 "refs/stash") in the middle the setting applies only to1517 the refs that match the <pattern>.15181519gc.reflogExpireUnreachable::1520gc.<pattern>.reflogExpireUnreachable::1521 'git reflog expire' removes reflog entries older than1522 this time and are not reachable from the current tip;1523 defaults to 30 days. The value "now" expires all entries1524 immediately, and "never" suppresses expiration altogether.1525 With "<pattern>" (e.g. "refs/stash")1526 in the middle, the setting applies only to the refs that1527 match the <pattern>.15281529gc.rerereResolved::1530 Records of conflicted merge you resolved earlier are1531 kept for this many days when 'git rerere gc' is run.1532 The default is 60 days. See linkgit:git-rerere[1].15331534gc.rerereUnresolved::1535 Records of conflicted merge you have not resolved are1536 kept for this many days when 'git rerere gc' is run.1537 The default is 15 days. See linkgit:git-rerere[1].15381539gitcvs.commitMsgAnnotation::1540 Append this string to each commit message. Set to empty string1541 to disable this feature. Defaults to "via git-CVS emulator".15421543gitcvs.enabled::1544 Whether the CVS server interface is enabled for this repository.1545 See linkgit:git-cvsserver[1].15461547gitcvs.logFile::1548 Path to a log file where the CVS server interface well... logs1549 various stuff. See linkgit:git-cvsserver[1].15501551gitcvs.usecrlfattr::1552 If true, the server will look up the end-of-line conversion1553 attributes for files to determine the `-k` modes to use. If1554 the attributes force Git to treat a file as text,1555 the `-k` mode will be left blank so CVS clients will1556 treat it as text. If they suppress text conversion, the file1557 will be set with '-kb' mode, which suppresses any newline munging1558 the client might otherwise do. If the attributes do not allow1559 the file type to be determined, then `gitcvs.allBinary` is1560 used. See linkgit:gitattributes[5].15611562gitcvs.allBinary::1563 This is used if `gitcvs.usecrlfattr` does not resolve1564 the correct '-kb' mode to use. If true, all1565 unresolved files are sent to the client in1566 mode '-kb'. This causes the client to treat them1567 as binary files, which suppresses any newline munging it1568 otherwise might do. Alternatively, if it is set to "guess",1569 then the contents of the file are examined to decide if1570 it is binary, similar to `core.autocrlf`.15711572gitcvs.dbName::1573 Database used by git-cvsserver to cache revision information1574 derived from the Git repository. The exact meaning depends on the1575 used database driver, for SQLite (which is the default driver) this1576 is a filename. Supports variable substitution (see1577 linkgit:git-cvsserver[1] for details). May not contain semicolons (`;`).1578 Default: '%Ggitcvs.%m.sqlite'15791580gitcvs.dbDriver::1581 Used Perl DBI driver. You can specify any available driver1582 for this here, but it might not work. git-cvsserver is tested1583 with 'DBD::SQLite', reported to work with 'DBD::Pg', and1584 reported *not* to work with 'DBD::mysql'. Experimental feature.1585 May not contain double colons (`:`). Default: 'SQLite'.1586 See linkgit:git-cvsserver[1].15871588gitcvs.dbUser, gitcvs.dbPass::1589 Database user and password. Only useful if setting `gitcvs.dbDriver`,1590 since SQLite has no concept of database users and/or passwords.1591 'gitcvs.dbUser' supports variable substitution (see1592 linkgit:git-cvsserver[1] for details).15931594gitcvs.dbTableNamePrefix::1595 Database table name prefix. Prepended to the names of any1596 database tables used, allowing a single database to be used1597 for several repositories. Supports variable substitution (see1598 linkgit:git-cvsserver[1] for details). Any non-alphabetic1599 characters will be replaced with underscores.16001601All gitcvs variables except for `gitcvs.usecrlfattr` and1602`gitcvs.allBinary` can also be specified as1603'gitcvs.<access_method>.<varname>' (where 'access_method'1604is one of "ext" and "pserver") to make them apply only for the given1605access method.16061607gitweb.category::1608gitweb.description::1609gitweb.owner::1610gitweb.url::1611 See linkgit:gitweb[1] for description.16121613gitweb.avatar::1614gitweb.blame::1615gitweb.grep::1616gitweb.highlight::1617gitweb.patches::1618gitweb.pickaxe::1619gitweb.remote_heads::1620gitweb.showSizes::1621gitweb.snapshot::1622 See linkgit:gitweb.conf[5] for description.16231624grep.lineNumber::1625 If set to true, enable `-n` option by default.16261627grep.patternType::1628 Set the default matching behavior. Using a value of 'basic', 'extended',1629 'fixed', or 'perl' will enable the `--basic-regexp`, `--extended-regexp`,1630 `--fixed-strings`, or `--perl-regexp` option accordingly, while the1631 value 'default' will return to the default matching behavior.16321633grep.extendedRegexp::1634 If set to true, enable `--extended-regexp` option by default. This1635 option is ignored when the `grep.patternType` option is set to a value1636 other than 'default'.16371638grep.threads::1639 Number of grep worker threads to use.1640 See `grep.threads` in linkgit:git-grep[1] for more information.16411642grep.fallbackToNoIndex::1643 If set to true, fall back to git grep --no-index if git grep1644 is executed outside of a git repository. Defaults to false.16451646gpg.program::1647 Use this custom program instead of "`gpg`" found on `$PATH` when1648 making or verifying a PGP signature. The program must support the1649 same command-line interface as GPG, namely, to verify a detached1650 signature, "`gpg --verify $file - <$signature`" is run, and the1651 program is expected to signal a good signature by exiting with1652 code 0, and to generate an ASCII-armored detached signature, the1653 standard input of "`gpg -bsau $key`" is fed with the contents to be1654 signed, and the program is expected to send the result to its1655 standard output.16561657gui.commitMsgWidth::1658 Defines how wide the commit message window is in the1659 linkgit:git-gui[1]. "75" is the default.16601661gui.diffContext::1662 Specifies how many context lines should be used in calls to diff1663 made by the linkgit:git-gui[1]. The default is "5".16641665gui.displayUntracked::1666 Determines if linkgit:git-gui[1] shows untracked files1667 in the file list. The default is "true".16681669gui.encoding::1670 Specifies the default encoding to use for displaying of1671 file contents in linkgit:git-gui[1] and linkgit:gitk[1].1672 It can be overridden by setting the 'encoding' attribute1673 for relevant files (see linkgit:gitattributes[5]).1674 If this option is not set, the tools default to the1675 locale encoding.16761677gui.matchTrackingBranch::1678 Determines if new branches created with linkgit:git-gui[1] should1679 default to tracking remote branches with matching names or1680 not. Default: "false".16811682gui.newBranchTemplate::1683 Is used as suggested name when creating new branches using the1684 linkgit:git-gui[1].16851686gui.pruneDuringFetch::1687 "true" if linkgit:git-gui[1] should prune remote-tracking branches when1688 performing a fetch. The default value is "false".16891690gui.trustmtime::1691 Determines if linkgit:git-gui[1] should trust the file modification1692 timestamp or not. By default the timestamps are not trusted.16931694gui.spellingDictionary::1695 Specifies the dictionary used for spell checking commit messages in1696 the linkgit:git-gui[1]. When set to "none" spell checking is turned1697 off.16981699gui.fastCopyBlame::1700 If true, 'git gui blame' uses `-C` instead of `-C -C` for original1701 location detection. It makes blame significantly faster on huge1702 repositories at the expense of less thorough copy detection.17031704gui.copyBlameThreshold::1705 Specifies the threshold to use in 'git gui blame' original location1706 detection, measured in alphanumeric characters. See the1707 linkgit:git-blame[1] manual for more information on copy detection.17081709gui.blamehistoryctx::1710 Specifies the radius of history context in days to show in1711 linkgit:gitk[1] for the selected commit, when the `Show History1712 Context` menu item is invoked from 'git gui blame'. If this1713 variable is set to zero, the whole history is shown.17141715guitool.<name>.cmd::1716 Specifies the shell command line to execute when the corresponding item1717 of the linkgit:git-gui[1] `Tools` menu is invoked. This option is1718 mandatory for every tool. The command is executed from the root of1719 the working directory, and in the environment it receives the name of1720 the tool as `GIT_GUITOOL`, the name of the currently selected file as1721 'FILENAME', and the name of the current branch as 'CUR_BRANCH' (if1722 the head is detached, 'CUR_BRANCH' is empty).17231724guitool.<name>.needsFile::1725 Run the tool only if a diff is selected in the GUI. It guarantees1726 that 'FILENAME' is not empty.17271728guitool.<name>.noConsole::1729 Run the command silently, without creating a window to display its1730 output.17311732guitool.<name>.noRescan::1733 Don't rescan the working directory for changes after the tool1734 finishes execution.17351736guitool.<name>.confirm::1737 Show a confirmation dialog before actually running the tool.17381739guitool.<name>.argPrompt::1740 Request a string argument from the user, and pass it to the tool1741 through the `ARGS` environment variable. Since requesting an1742 argument implies confirmation, the 'confirm' option has no effect1743 if this is enabled. If the option is set to 'true', 'yes', or '1',1744 the dialog uses a built-in generic prompt; otherwise the exact1745 value of the variable is used.17461747guitool.<name>.revPrompt::1748 Request a single valid revision from the user, and set the1749 `REVISION` environment variable. In other aspects this option1750 is similar to 'argPrompt', and can be used together with it.17511752guitool.<name>.revUnmerged::1753 Show only unmerged branches in the 'revPrompt' subdialog.1754 This is useful for tools similar to merge or rebase, but not1755 for things like checkout or reset.17561757guitool.<name>.title::1758 Specifies the title to use for the prompt dialog. The default1759 is the tool name.17601761guitool.<name>.prompt::1762 Specifies the general prompt string to display at the top of1763 the dialog, before subsections for 'argPrompt' and 'revPrompt'.1764 The default value includes the actual command.17651766help.browser::1767 Specify the browser that will be used to display help in the1768 'web' format. See linkgit:git-help[1].17691770help.format::1771 Override the default help format used by linkgit:git-help[1].1772 Values 'man', 'info', 'web' and 'html' are supported. 'man' is1773 the default. 'web' and 'html' are the same.17741775help.autoCorrect::1776 Automatically correct and execute mistyped commands after1777 waiting for the given number of deciseconds (0.1 sec). If more1778 than one command can be deduced from the entered text, nothing1779 will be executed. If the value of this option is negative,1780 the corrected command will be executed immediately. If the1781 value is 0 - the command will be just shown but not executed.1782 This is the default.17831784help.htmlPath::1785 Specify the path where the HTML documentation resides. File system paths1786 and URLs are supported. HTML pages will be prefixed with this path when1787 help is displayed in the 'web' format. This defaults to the documentation1788 path of your Git installation.17891790http.proxy::1791 Override the HTTP proxy, normally configured using the 'http_proxy',1792 'https_proxy', and 'all_proxy' environment variables (see `curl(1)`). In1793 addition to the syntax understood by curl, it is possible to specify a1794 proxy string with a user name but no password, in which case git will1795 attempt to acquire one in the same way it does for other credentials. See1796 linkgit:gitcredentials[7] for more information. The syntax thus is1797 '[protocol://][user[:password]@]proxyhost[:port]'. This can be overridden1798 on a per-remote basis; see remote.<name>.proxy17991800http.proxyAuthMethod::1801 Set the method with which to authenticate against the HTTP proxy. This1802 only takes effect if the configured proxy string contains a user name part1803 (i.e. is of the form 'user@host' or 'user@host:port'). This can be1804 overridden on a per-remote basis; see `remote.<name>.proxyAuthMethod`.1805 Both can be overridden by the `GIT_HTTP_PROXY_AUTHMETHOD` environment1806 variable. Possible values are:1807+1808--1809* `anyauth` - Automatically pick a suitable authentication method. It is1810 assumed that the proxy answers an unauthenticated request with a 4071811 status code and one or more Proxy-authenticate headers with supported1812 authentication methods. This is the default.1813* `basic` - HTTP Basic authentication1814* `digest` - HTTP Digest authentication; this prevents the password from being1815 transmitted to the proxy in clear text1816* `negotiate` - GSS-Negotiate authentication (compare the --negotiate option1817 of `curl(1)`)1818* `ntlm` - NTLM authentication (compare the --ntlm option of `curl(1)`)1819--18201821http.emptyAuth::1822 Attempt authentication without seeking a username or password. This1823 can be used to attempt GSS-Negotiate authentication without specifying1824 a username in the URL, as libcurl normally requires a username for1825 authentication.18261827http.delegation::1828 Control GSSAPI credential delegation. The delegation is disabled1829 by default in libcurl since version 7.21.7. Set parameter to tell1830 the server what it is allowed to delegate when it comes to user1831 credentials. Used with GSS/kerberos. Possible values are:1832+1833--1834* `none` - Don't allow any delegation.1835* `policy` - Delegates if and only if the OK-AS-DELEGATE flag is set in the1836 Kerberos service ticket, which is a matter of realm policy.1837* `always` - Unconditionally allow the server to delegate.1838--183918401841http.extraHeader::1842 Pass an additional HTTP header when communicating with a server. If1843 more than one such entry exists, all of them are added as extra1844 headers. To allow overriding the settings inherited from the system1845 config, an empty value will reset the extra headers to the empty list.18461847http.cookieFile::1848 The pathname of a file containing previously stored cookie lines,1849 which should be used1850 in the Git http session, if they match the server. The file format1851 of the file to read cookies from should be plain HTTP headers or1852 the Netscape/Mozilla cookie file format (see `curl(1)`).1853 NOTE that the file specified with http.cookieFile is used only as1854 input unless http.saveCookies is set.18551856http.saveCookies::1857 If set, store cookies received during requests to the file specified by1858 http.cookieFile. Has no effect if http.cookieFile is unset.18591860http.sslVersion::1861 The SSL version to use when negotiating an SSL connection, if you1862 want to force the default. The available and default version1863 depend on whether libcurl was built against NSS or OpenSSL and the1864 particular configuration of the crypto library in use. Internally1865 this sets the 'CURLOPT_SSL_VERSION' option; see the libcurl1866 documentation for more details on the format of this option and1867 for the ssl version supported. Actually the possible values of1868 this option are:18691870 - sslv21871 - sslv31872 - tlsv11873 - tlsv1.01874 - tlsv1.11875 - tlsv1.218761877+1878Can be overridden by the `GIT_SSL_VERSION` environment variable.1879To force git to use libcurl's default ssl version and ignore any1880explicit http.sslversion option, set `GIT_SSL_VERSION` to the1881empty string.18821883http.sslCipherList::1884 A list of SSL ciphers to use when negotiating an SSL connection.1885 The available ciphers depend on whether libcurl was built against1886 NSS or OpenSSL and the particular configuration of the crypto1887 library in use. Internally this sets the 'CURLOPT_SSL_CIPHER_LIST'1888 option; see the libcurl documentation for more details on the format1889 of this list.1890+1891Can be overridden by the `GIT_SSL_CIPHER_LIST` environment variable.1892To force git to use libcurl's default cipher list and ignore any1893explicit http.sslCipherList option, set `GIT_SSL_CIPHER_LIST` to the1894empty string.18951896http.sslVerify::1897 Whether to verify the SSL certificate when fetching or pushing1898 over HTTPS. Can be overridden by the `GIT_SSL_NO_VERIFY` environment1899 variable.19001901http.sslCert::1902 File containing the SSL certificate when fetching or pushing1903 over HTTPS. Can be overridden by the `GIT_SSL_CERT` environment1904 variable.19051906http.sslKey::1907 File containing the SSL private key when fetching or pushing1908 over HTTPS. Can be overridden by the `GIT_SSL_KEY` environment1909 variable.19101911http.sslCertPasswordProtected::1912 Enable Git's password prompt for the SSL certificate. Otherwise1913 OpenSSL will prompt the user, possibly many times, if the1914 certificate or private key is encrypted. Can be overridden by the1915 `GIT_SSL_CERT_PASSWORD_PROTECTED` environment variable.19161917http.sslCAInfo::1918 File containing the certificates to verify the peer with when1919 fetching or pushing over HTTPS. Can be overridden by the1920 `GIT_SSL_CAINFO` environment variable.19211922http.sslCAPath::1923 Path containing files with the CA certificates to verify the peer1924 with when fetching or pushing over HTTPS. Can be overridden1925 by the `GIT_SSL_CAPATH` environment variable.19261927http.pinnedpubkey::1928 Public key of the https service. It may either be the filename of1929 a PEM or DER encoded public key file or a string starting with1930 'sha256//' followed by the base64 encoded sha256 hash of the1931 public key. See also libcurl 'CURLOPT_PINNEDPUBLICKEY'. git will1932 exit with an error if this option is set but not supported by1933 cURL.19341935http.sslTry::1936 Attempt to use AUTH SSL/TLS and encrypted data transfers1937 when connecting via regular FTP protocol. This might be needed1938 if the FTP server requires it for security reasons or you wish1939 to connect securely whenever remote FTP server supports it.1940 Default is false since it might trigger certificate verification1941 errors on misconfigured servers.19421943http.maxRequests::1944 How many HTTP requests to launch in parallel. Can be overridden1945 by the `GIT_HTTP_MAX_REQUESTS` environment variable. Default is 5.19461947http.minSessions::1948 The number of curl sessions (counted across slots) to be kept across1949 requests. They will not be ended with curl_easy_cleanup() until1950 http_cleanup() is invoked. If USE_CURL_MULTI is not defined, this1951 value will be capped at 1. Defaults to 1.19521953http.postBuffer::1954 Maximum size in bytes of the buffer used by smart HTTP1955 transports when POSTing data to the remote system.1956 For requests larger than this buffer size, HTTP/1.1 and1957 Transfer-Encoding: chunked is used to avoid creating a1958 massive pack file locally. Default is 1 MiB, which is1959 sufficient for most requests.19601961http.lowSpeedLimit, http.lowSpeedTime::1962 If the HTTP transfer speed is less than 'http.lowSpeedLimit'1963 for longer than 'http.lowSpeedTime' seconds, the transfer is aborted.1964 Can be overridden by the `GIT_HTTP_LOW_SPEED_LIMIT` and1965 `GIT_HTTP_LOW_SPEED_TIME` environment variables.19661967http.noEPSV::1968 A boolean which disables using of EPSV ftp command by curl.1969 This can helpful with some "poor" ftp servers which don't1970 support EPSV mode. Can be overridden by the `GIT_CURL_FTP_NO_EPSV`1971 environment variable. Default is false (curl will use EPSV).19721973http.userAgent::1974 The HTTP USER_AGENT string presented to an HTTP server. The default1975 value represents the version of the client Git such as git/1.7.1.1976 This option allows you to override this value to a more common value1977 such as Mozilla/4.0. This may be necessary, for instance, if1978 connecting through a firewall that restricts HTTP connections to a set1979 of common USER_AGENT strings (but not including those like git/1.7.1).1980 Can be overridden by the `GIT_HTTP_USER_AGENT` environment variable.19811982http.followRedirects::1983 Whether git should follow HTTP redirects. If set to `true`, git1984 will transparently follow any redirect issued by a server it1985 encounters. If set to `false`, git will treat all redirects as1986 errors. If set to `initial`, git will follow redirects only for1987 the initial request to a remote, but not for subsequent1988 follow-up HTTP requests. Since git uses the redirected URL as1989 the base for the follow-up requests, this is generally1990 sufficient. The default is `initial`.19911992http.<url>.*::1993 Any of the http.* options above can be applied selectively to some URLs.1994 For a config key to match a URL, each element of the config key is1995 compared to that of the URL, in the following order:1996+1997--1998. Scheme (e.g., `https` in `https://example.com/`). This field1999 must match exactly between the config key and the URL.20002001. Host/domain name (e.g., `example.com` in `https://example.com/`).2002 This field must match between the config key and the URL. It is2003 possible to specify a `*` as part of the host name to match all subdomains2004 at this level. `https://*.example.com/` for example would match2005 `https://foo.example.com/`, but not `https://foo.bar.example.com/`.20062007. Port number (e.g., `8080` in `http://example.com:8080/`).2008 This field must match exactly between the config key and the URL.2009 Omitted port numbers are automatically converted to the correct2010 default for the scheme before matching.20112012. Path (e.g., `repo.git` in `https://example.com/repo.git`). The2013 path field of the config key must match the path field of the URL2014 either exactly or as a prefix of slash-delimited path elements. This means2015 a config key with path `foo/` matches URL path `foo/bar`. A prefix can only2016 match on a slash (`/`) boundary. Longer matches take precedence (so a config2017 key with path `foo/bar` is a better match to URL path `foo/bar` than a config2018 key with just path `foo/`).20192020. User name (e.g., `user` in `https://user@example.com/repo.git`). If2021 the config key has a user name it must match the user name in the2022 URL exactly. If the config key does not have a user name, that2023 config key will match a URL with any user name (including none),2024 but at a lower precedence than a config key with a user name.2025--2026+2027The list above is ordered by decreasing precedence; a URL that matches2028a config key's path is preferred to one that matches its user name. For example,2029if the URL is `https://user@example.com/foo/bar` a config key match of2030`https://example.com/foo` will be preferred over a config key match of2031`https://user@example.com`.2032+2033All URLs are normalized before attempting any matching (the password part,2034if embedded in the URL, is always ignored for matching purposes) so that2035equivalent URLs that are simply spelled differently will match properly.2036Environment variable settings always override any matches. The URLs that are2037matched against are those given directly to Git commands. This means any URLs2038visited as a result of a redirection do not participate in matching.20392040ssh.variant::2041 Depending on the value of the environment variables `GIT_SSH` or2042 `GIT_SSH_COMMAND`, or the config setting `core.sshCommand`, Git2043 auto-detects whether to adjust its command-line parameters for use2044 with plink or tortoiseplink, as opposed to the default (OpenSSH).2045+2046The config variable `ssh.variant` can be set to override this auto-detection;2047valid values are `ssh`, `plink`, `putty` or `tortoiseplink`. Any other value2048will be treated as normal ssh. This setting can be overridden via the2049environment variable `GIT_SSH_VARIANT`.20502051i18n.commitEncoding::2052 Character encoding the commit messages are stored in; Git itself2053 does not care per se, but this information is necessary e.g. when2054 importing commits from emails or in the gitk graphical history2055 browser (and possibly at other places in the future or in other2056 porcelains). See e.g. linkgit:git-mailinfo[1]. Defaults to 'utf-8'.20572058i18n.logOutputEncoding::2059 Character encoding the commit messages are converted to when2060 running 'git log' and friends.20612062imap::2063 The configuration variables in the 'imap' section are described2064 in linkgit:git-imap-send[1].20652066index.version::2067 Specify the version with which new index files should be2068 initialized. This does not affect existing repositories.20692070init.templateDir::2071 Specify the directory from which templates will be copied.2072 (See the "TEMPLATE DIRECTORY" section of linkgit:git-init[1].)20732074instaweb.browser::2075 Specify the program that will be used to browse your working2076 repository in gitweb. See linkgit:git-instaweb[1].20772078instaweb.httpd::2079 The HTTP daemon command-line to start gitweb on your working2080 repository. See linkgit:git-instaweb[1].20812082instaweb.local::2083 If true the web server started by linkgit:git-instaweb[1] will2084 be bound to the local IP (127.0.0.1).20852086instaweb.modulePath::2087 The default module path for linkgit:git-instaweb[1] to use2088 instead of /usr/lib/apache2/modules. Only used if httpd2089 is Apache.20902091instaweb.port::2092 The port number to bind the gitweb httpd to. See2093 linkgit:git-instaweb[1].20942095interactive.singleKey::2096 In interactive commands, allow the user to provide one-letter2097 input with a single key (i.e., without hitting enter).2098 Currently this is used by the `--patch` mode of2099 linkgit:git-add[1], linkgit:git-checkout[1], linkgit:git-commit[1],2100 linkgit:git-reset[1], and linkgit:git-stash[1]. Note that this2101 setting is silently ignored if portable keystroke input2102 is not available; requires the Perl module Term::ReadKey.21032104interactive.diffFilter::2105 When an interactive command (such as `git add --patch`) shows2106 a colorized diff, git will pipe the diff through the shell2107 command defined by this configuration variable. The command may2108 mark up the diff further for human consumption, provided that it2109 retains a one-to-one correspondence with the lines in the2110 original diff. Defaults to disabled (no filtering).21112112log.abbrevCommit::2113 If true, makes linkgit:git-log[1], linkgit:git-show[1], and2114 linkgit:git-whatchanged[1] assume `--abbrev-commit`. You may2115 override this option with `--no-abbrev-commit`.21162117log.date::2118 Set the default date-time mode for the 'log' command.2119 Setting a value for log.date is similar to using 'git log''s2120 `--date` option. See linkgit:git-log[1] for details.21212122log.decorate::2123 Print out the ref names of any commits that are shown by the log2124 command. If 'short' is specified, the ref name prefixes 'refs/heads/',2125 'refs/tags/' and 'refs/remotes/' will not be printed. If 'full' is2126 specified, the full ref name (including prefix) will be printed.2127 If 'auto' is specified, then if the output is going to a terminal,2128 the ref names are shown as if 'short' were given, otherwise no ref2129 names are shown. This is the same as the `--decorate` option2130 of the `git log`.21312132log.follow::2133 If `true`, `git log` will act as if the `--follow` option was used when2134 a single <path> is given. This has the same limitations as `--follow`,2135 i.e. it cannot be used to follow multiple files and does not work well2136 on non-linear history.21372138log.graphColors::2139 A list of colors, separated by commas, that can be used to draw2140 history lines in `git log --graph`.21412142log.showRoot::2143 If true, the initial commit will be shown as a big creation event.2144 This is equivalent to a diff against an empty tree.2145 Tools like linkgit:git-log[1] or linkgit:git-whatchanged[1], which2146 normally hide the root commit will now show it. True by default.21472148log.mailmap::2149 If true, makes linkgit:git-log[1], linkgit:git-show[1], and2150 linkgit:git-whatchanged[1] assume `--use-mailmap`.21512152mailinfo.scissors::2153 If true, makes linkgit:git-mailinfo[1] (and therefore2154 linkgit:git-am[1]) act by default as if the --scissors option2155 was provided on the command-line. When active, this features2156 removes everything from the message body before a scissors2157 line (i.e. consisting mainly of ">8", "8<" and "-").21582159mailmap.file::2160 The location of an augmenting mailmap file. The default2161 mailmap, located in the root of the repository, is loaded2162 first, then the mailmap file pointed to by this variable.2163 The location of the mailmap file may be in a repository2164 subdirectory, or somewhere outside of the repository itself.2165 See linkgit:git-shortlog[1] and linkgit:git-blame[1].21662167mailmap.blob::2168 Like `mailmap.file`, but consider the value as a reference to a2169 blob in the repository. If both `mailmap.file` and2170 `mailmap.blob` are given, both are parsed, with entries from2171 `mailmap.file` taking precedence. In a bare repository, this2172 defaults to `HEAD:.mailmap`. In a non-bare repository, it2173 defaults to empty.21742175man.viewer::2176 Specify the programs that may be used to display help in the2177 'man' format. See linkgit:git-help[1].21782179man.<tool>.cmd::2180 Specify the command to invoke the specified man viewer. The2181 specified command is evaluated in shell with the man page2182 passed as argument. (See linkgit:git-help[1].)21832184man.<tool>.path::2185 Override the path for the given tool that may be used to2186 display help in the 'man' format. See linkgit:git-help[1].21872188include::merge-config.txt[]21892190mergetool.<tool>.path::2191 Override the path for the given tool. This is useful in case2192 your tool is not in the PATH.21932194mergetool.<tool>.cmd::2195 Specify the command to invoke the specified merge tool. The2196 specified command is evaluated in shell with the following2197 variables available: 'BASE' is the name of a temporary file2198 containing the common base of the files to be merged, if available;2199 'LOCAL' is the name of a temporary file containing the contents of2200 the file on the current branch; 'REMOTE' is the name of a temporary2201 file containing the contents of the file from the branch being2202 merged; 'MERGED' contains the name of the file to which the merge2203 tool should write the results of a successful merge.22042205mergetool.<tool>.trustExitCode::2206 For a custom merge command, specify whether the exit code of2207 the merge command can be used to determine whether the merge was2208 successful. If this is not set to true then the merge target file2209 timestamp is checked and the merge assumed to have been successful2210 if the file has been updated, otherwise the user is prompted to2211 indicate the success of the merge.22122213mergetool.meld.hasOutput::2214 Older versions of `meld` do not support the `--output` option.2215 Git will attempt to detect whether `meld` supports `--output`2216 by inspecting the output of `meld --help`. Configuring2217 `mergetool.meld.hasOutput` will make Git skip these checks and2218 use the configured value instead. Setting `mergetool.meld.hasOutput`2219 to `true` tells Git to unconditionally use the `--output` option,2220 and `false` avoids using `--output`.22212222mergetool.keepBackup::2223 After performing a merge, the original file with conflict markers2224 can be saved as a file with a `.orig` extension. If this variable2225 is set to `false` then this file is not preserved. Defaults to2226 `true` (i.e. keep the backup files).22272228mergetool.keepTemporaries::2229 When invoking a custom merge tool, Git uses a set of temporary2230 files to pass to the tool. If the tool returns an error and this2231 variable is set to `true`, then these temporary files will be2232 preserved, otherwise they will be removed after the tool has2233 exited. Defaults to `false`.22342235mergetool.writeToTemp::2236 Git writes temporary 'BASE', 'LOCAL', and 'REMOTE' versions of2237 conflicting files in the worktree by default. Git will attempt2238 to use a temporary directory for these files when set `true`.2239 Defaults to `false`.22402241mergetool.prompt::2242 Prompt before each invocation of the merge resolution program.22432244notes.mergeStrategy::2245 Which merge strategy to choose by default when resolving notes2246 conflicts. Must be one of `manual`, `ours`, `theirs`, `union`, or2247 `cat_sort_uniq`. Defaults to `manual`. See "NOTES MERGE STRATEGIES"2248 section of linkgit:git-notes[1] for more information on each strategy.22492250notes.<name>.mergeStrategy::2251 Which merge strategy to choose when doing a notes merge into2252 refs/notes/<name>. This overrides the more general2253 "notes.mergeStrategy". See the "NOTES MERGE STRATEGIES" section in2254 linkgit:git-notes[1] for more information on the available strategies.22552256notes.displayRef::2257 The (fully qualified) refname from which to show notes when2258 showing commit messages. The value of this variable can be set2259 to a glob, in which case notes from all matching refs will be2260 shown. You may also specify this configuration variable2261 several times. A warning will be issued for refs that do not2262 exist, but a glob that does not match any refs is silently2263 ignored.2264+2265This setting can be overridden with the `GIT_NOTES_DISPLAY_REF`2266environment variable, which must be a colon separated list of refs or2267globs.2268+2269The effective value of "core.notesRef" (possibly overridden by2270GIT_NOTES_REF) is also implicitly added to the list of refs to be2271displayed.22722273notes.rewrite.<command>::2274 When rewriting commits with <command> (currently `amend` or2275 `rebase`) and this variable is set to `true`, Git2276 automatically copies your notes from the original to the2277 rewritten commit. Defaults to `true`, but see2278 "notes.rewriteRef" below.22792280notes.rewriteMode::2281 When copying notes during a rewrite (see the2282 "notes.rewrite.<command>" option), determines what to do if2283 the target commit already has a note. Must be one of2284 `overwrite`, `concatenate`, `cat_sort_uniq`, or `ignore`.2285 Defaults to `concatenate`.2286+2287This setting can be overridden with the `GIT_NOTES_REWRITE_MODE`2288environment variable.22892290notes.rewriteRef::2291 When copying notes during a rewrite, specifies the (fully2292 qualified) ref whose notes should be copied. The ref may be a2293 glob, in which case notes in all matching refs will be copied.2294 You may also specify this configuration several times.2295+2296Does not have a default value; you must configure this variable to2297enable note rewriting. Set it to `refs/notes/commits` to enable2298rewriting for the default commit notes.2299+2300This setting can be overridden with the `GIT_NOTES_REWRITE_REF`2301environment variable, which must be a colon separated list of refs or2302globs.23032304pack.window::2305 The size of the window used by linkgit:git-pack-objects[1] when no2306 window size is given on the command line. Defaults to 10.23072308pack.depth::2309 The maximum delta depth used by linkgit:git-pack-objects[1] when no2310 maximum depth is given on the command line. Defaults to 50.23112312pack.windowMemory::2313 The maximum size of memory that is consumed by each thread2314 in linkgit:git-pack-objects[1] for pack window memory when2315 no limit is given on the command line. The value can be2316 suffixed with "k", "m", or "g". When left unconfigured (or2317 set explicitly to 0), there will be no limit.23182319pack.compression::2320 An integer -1..9, indicating the compression level for objects2321 in a pack file. -1 is the zlib default. 0 means no2322 compression, and 1..9 are various speed/size tradeoffs, 9 being2323 slowest. If not set, defaults to core.compression. If that is2324 not set, defaults to -1, the zlib default, which is "a default2325 compromise between speed and compression (currently equivalent2326 to level 6)."2327+2328Note that changing the compression level will not automatically recompress2329all existing objects. You can force recompression by passing the -F option2330to linkgit:git-repack[1].23312332pack.deltaCacheSize::2333 The maximum memory in bytes used for caching deltas in2334 linkgit:git-pack-objects[1] before writing them out to a pack.2335 This cache is used to speed up the writing object phase by not2336 having to recompute the final delta result once the best match2337 for all objects is found. Repacking large repositories on machines2338 which are tight with memory might be badly impacted by this though,2339 especially if this cache pushes the system into swapping.2340 A value of 0 means no limit. The smallest size of 1 byte may be2341 used to virtually disable this cache. Defaults to 256 MiB.23422343pack.deltaCacheLimit::2344 The maximum size of a delta, that is cached in2345 linkgit:git-pack-objects[1]. This cache is used to speed up the2346 writing object phase by not having to recompute the final delta2347 result once the best match for all objects is found. Defaults to 1000.23482349pack.threads::2350 Specifies the number of threads to spawn when searching for best2351 delta matches. This requires that linkgit:git-pack-objects[1]2352 be compiled with pthreads otherwise this option is ignored with a2353 warning. This is meant to reduce packing time on multiprocessor2354 machines. The required amount of memory for the delta search window2355 is however multiplied by the number of threads.2356 Specifying 0 will cause Git to auto-detect the number of CPU's2357 and set the number of threads accordingly.23582359pack.indexVersion::2360 Specify the default pack index version. Valid values are 1 for2361 legacy pack index used by Git versions prior to 1.5.2, and 2 for2362 the new pack index with capabilities for packs larger than 4 GB2363 as well as proper protection against the repacking of corrupted2364 packs. Version 2 is the default. Note that version 2 is enforced2365 and this config option ignored whenever the corresponding pack is2366 larger than 2 GB.2367+2368If you have an old Git that does not understand the version 2 `*.idx` file,2369cloning or fetching over a non native protocol (e.g. "http")2370that will copy both `*.pack` file and corresponding `*.idx` file from the2371other side may give you a repository that cannot be accessed with your2372older version of Git. If the `*.pack` file is smaller than 2 GB, however,2373you can use linkgit:git-index-pack[1] on the *.pack file to regenerate2374the `*.idx` file.23752376pack.packSizeLimit::2377 The maximum size of a pack. This setting only affects2378 packing to a file when repacking, i.e. the git:// protocol2379 is unaffected. It can be overridden by the `--max-pack-size`2380 option of linkgit:git-repack[1]. Reaching this limit results2381 in the creation of multiple packfiles; which in turn prevents2382 bitmaps from being created.2383 The minimum size allowed is limited to 1 MiB.2384 The default is unlimited.2385 Common unit suffixes of 'k', 'm', or 'g' are2386 supported.23872388pack.useBitmaps::2389 When true, git will use pack bitmaps (if available) when packing2390 to stdout (e.g., during the server side of a fetch). Defaults to2391 true. You should not generally need to turn this off unless2392 you are debugging pack bitmaps.23932394pack.writeBitmaps (deprecated)::2395 This is a deprecated synonym for `repack.writeBitmaps`.23962397pack.writeBitmapHashCache::2398 When true, git will include a "hash cache" section in the bitmap2399 index (if one is written). This cache can be used to feed git's2400 delta heuristics, potentially leading to better deltas between2401 bitmapped and non-bitmapped objects (e.g., when serving a fetch2402 between an older, bitmapped pack and objects that have been2403 pushed since the last gc). The downside is that it consumes 42404 bytes per object of disk space, and that JGit's bitmap2405 implementation does not understand it, causing it to complain if2406 Git and JGit are used on the same repository. Defaults to false.24072408pager.<cmd>::2409 If the value is boolean, turns on or off pagination of the2410 output of a particular Git subcommand when writing to a tty.2411 Otherwise, turns on pagination for the subcommand using the2412 pager specified by the value of `pager.<cmd>`. If `--paginate`2413 or `--no-pager` is specified on the command line, it takes2414 precedence over this option. To disable pagination for all2415 commands, set `core.pager` or `GIT_PAGER` to `cat`.24162417pretty.<name>::2418 Alias for a --pretty= format string, as specified in2419 linkgit:git-log[1]. Any aliases defined here can be used just2420 as the built-in pretty formats could. For example,2421 running `git config pretty.changelog "format:* %H %s"`2422 would cause the invocation `git log --pretty=changelog`2423 to be equivalent to running `git log "--pretty=format:* %H %s"`.2424 Note that an alias with the same name as a built-in format2425 will be silently ignored.24262427protocol.allow::2428 If set, provide a user defined default policy for all protocols which2429 don't explicitly have a policy (`protocol.<name>.allow`). By default,2430 if unset, known-safe protocols (http, https, git, ssh, file) have a2431 default policy of `always`, known-dangerous protocols (ext) have a2432 default policy of `never`, and all other protocols have a default2433 policy of `user`. Supported policies:2434+2435--24362437* `always` - protocol is always able to be used.24382439* `never` - protocol is never able to be used.24402441* `user` - protocol is only able to be used when `GIT_PROTOCOL_FROM_USER` is2442 either unset or has a value of 1. This policy should be used when you want a2443 protocol to be directly usable by the user but don't want it used by commands which2444 execute clone/fetch/push commands without user input, e.g. recursive2445 submodule initialization.24462447--24482449protocol.<name>.allow::2450 Set a policy to be used by protocol `<name>` with clone/fetch/push2451 commands. See `protocol.allow` above for the available policies.2452+2453The protocol names currently used by git are:2454+2455--2456 - `file`: any local file-based path (including `file://` URLs,2457 or local paths)24582459 - `git`: the anonymous git protocol over a direct TCP2460 connection (or proxy, if configured)24612462 - `ssh`: git over ssh (including `host:path` syntax,2463 `ssh://`, etc).24642465 - `http`: git over http, both "smart http" and "dumb http".2466 Note that this does _not_ include `https`; if you want to configure2467 both, you must do so individually.24682469 - any external helpers are named by their protocol (e.g., use2470 `hg` to allow the `git-remote-hg` helper)2471--24722473pull.ff::2474 By default, Git does not create an extra merge commit when merging2475 a commit that is a descendant of the current commit. Instead, the2476 tip of the current branch is fast-forwarded. When set to `false`,2477 this variable tells Git to create an extra merge commit in such2478 a case (equivalent to giving the `--no-ff` option from the command2479 line). When set to `only`, only such fast-forward merges are2480 allowed (equivalent to giving the `--ff-only` option from the2481 command line). This setting overrides `merge.ff` when pulling.24822483pull.rebase::2484 When true, rebase branches on top of the fetched branch, instead2485 of merging the default branch from the default remote when "git2486 pull" is run. See "branch.<name>.rebase" for setting this on a2487 per-branch basis.2488+2489When preserve, also pass `--preserve-merges` along to 'git rebase'2490so that locally committed merge commits will not be flattened2491by running 'git pull'.2492+2493When the value is `interactive`, the rebase is run in interactive mode.2494+2495*NOTE*: this is a possibly dangerous operation; do *not* use2496it unless you understand the implications (see linkgit:git-rebase[1]2497for details).24982499pull.octopus::2500 The default merge strategy to use when pulling multiple branches2501 at once.25022503pull.twohead::2504 The default merge strategy to use when pulling a single branch.25052506push.default::2507 Defines the action `git push` should take if no refspec is2508 explicitly given. Different values are well-suited for2509 specific workflows; for instance, in a purely central workflow2510 (i.e. the fetch source is equal to the push destination),2511 `upstream` is probably what you want. Possible values are:2512+2513--25142515* `nothing` - do not push anything (error out) unless a refspec is2516 explicitly given. This is primarily meant for people who want to2517 avoid mistakes by always being explicit.25182519* `current` - push the current branch to update a branch with the same2520 name on the receiving end. Works in both central and non-central2521 workflows.25222523* `upstream` - push the current branch back to the branch whose2524 changes are usually integrated into the current branch (which is2525 called `@{upstream}`). This mode only makes sense if you are2526 pushing to the same repository you would normally pull from2527 (i.e. central workflow).25282529* `tracking` - This is a deprecated synonym for `upstream`.25302531* `simple` - in centralized workflow, work like `upstream` with an2532 added safety to refuse to push if the upstream branch's name is2533 different from the local one.2534+2535When pushing to a remote that is different from the remote you normally2536pull from, work as `current`. This is the safest option and is suited2537for beginners.2538+2539This mode has become the default in Git 2.0.25402541* `matching` - push all branches having the same name on both ends.2542 This makes the repository you are pushing to remember the set of2543 branches that will be pushed out (e.g. if you always push 'maint'2544 and 'master' there and no other branches, the repository you push2545 to will have these two branches, and your local 'maint' and2546 'master' will be pushed there).2547+2548To use this mode effectively, you have to make sure _all_ the2549branches you would push out are ready to be pushed out before2550running 'git push', as the whole point of this mode is to allow you2551to push all of the branches in one go. If you usually finish work2552on only one branch and push out the result, while other branches are2553unfinished, this mode is not for you. Also this mode is not2554suitable for pushing into a shared central repository, as other2555people may add new branches there, or update the tip of existing2556branches outside your control.2557+2558This used to be the default, but not since Git 2.0 (`simple` is the2559new default).25602561--25622563push.followTags::2564 If set to true enable `--follow-tags` option by default. You2565 may override this configuration at time of push by specifying2566 `--no-follow-tags`.25672568push.gpgSign::2569 May be set to a boolean value, or the string 'if-asked'. A true2570 value causes all pushes to be GPG signed, as if `--signed` is2571 passed to linkgit:git-push[1]. The string 'if-asked' causes2572 pushes to be signed if the server supports it, as if2573 `--signed=if-asked` is passed to 'git push'. A false value may2574 override a value from a lower-priority config file. An explicit2575 command-line flag always overrides this config option.25762577push.recurseSubmodules::2578 Make sure all submodule commits used by the revisions to be pushed2579 are available on a remote-tracking branch. If the value is 'check'2580 then Git will verify that all submodule commits that changed in the2581 revisions to be pushed are available on at least one remote of the2582 submodule. If any commits are missing, the push will be aborted and2583 exit with non-zero status. If the value is 'on-demand' then all2584 submodules that changed in the revisions to be pushed will be2585 pushed. If on-demand was not able to push all necessary revisions2586 it will also be aborted and exit with non-zero status. If the value2587 is 'no' then default behavior of ignoring submodules when pushing2588 is retained. You may override this configuration at time of push by2589 specifying '--recurse-submodules=check|on-demand|no'.25902591rebase.stat::2592 Whether to show a diffstat of what changed upstream since the last2593 rebase. False by default.25942595rebase.autoSquash::2596 If set to true enable `--autosquash` option by default.25972598rebase.autoStash::2599 When set to true, automatically create a temporary stash2600 before the operation begins, and apply it after the operation2601 ends. This means that you can run rebase on a dirty worktree.2602 However, use with care: the final stash application after a2603 successful rebase might result in non-trivial conflicts.2604 Defaults to false.26052606rebase.missingCommitsCheck::2607 If set to "warn", git rebase -i will print a warning if some2608 commits are removed (e.g. a line was deleted), however the2609 rebase will still proceed. If set to "error", it will print2610 the previous warning and stop the rebase, 'git rebase2611 --edit-todo' can then be used to correct the error. If set to2612 "ignore", no checking is done.2613 To drop a commit without warning or error, use the `drop`2614 command in the todo-list.2615 Defaults to "ignore".26162617rebase.instructionFormat::2618 A format string, as specified in linkgit:git-log[1], to be used for2619 the instruction list during an interactive rebase. The format will automatically2620 have the long commit hash prepended to the format.26212622receive.advertiseAtomic::2623 By default, git-receive-pack will advertise the atomic push2624 capability to its clients. If you don't want to advertise this2625 capability, set this variable to false.26262627receive.advertisePushOptions::2628 By default, git-receive-pack will advertise the push options2629 capability to its clients. If you don't want to advertise this2630 capability, set this variable to false.26312632receive.autogc::2633 By default, git-receive-pack will run "git-gc --auto" after2634 receiving data from git-push and updating refs. You can stop2635 it by setting this variable to false.26362637receive.certNonceSeed::2638 By setting this variable to a string, `git receive-pack`2639 will accept a `git push --signed` and verifies it by using2640 a "nonce" protected by HMAC using this string as a secret2641 key.26422643receive.certNonceSlop::2644 When a `git push --signed` sent a push certificate with a2645 "nonce" that was issued by a receive-pack serving the same2646 repository within this many seconds, export the "nonce"2647 found in the certificate to `GIT_PUSH_CERT_NONCE` to the2648 hooks (instead of what the receive-pack asked the sending2649 side to include). This may allow writing checks in2650 `pre-receive` and `post-receive` a bit easier. Instead of2651 checking `GIT_PUSH_CERT_NONCE_SLOP` environment variable2652 that records by how many seconds the nonce is stale to2653 decide if they want to accept the certificate, they only2654 can check `GIT_PUSH_CERT_NONCE_STATUS` is `OK`.26552656receive.fsckObjects::2657 If it is set to true, git-receive-pack will check all received2658 objects. It will abort in the case of a malformed object or a2659 broken link. The result of an abort are only dangling objects.2660 Defaults to false. If not set, the value of `transfer.fsckObjects`2661 is used instead.26622663receive.fsck.<msg-id>::2664 When `receive.fsckObjects` is set to true, errors can be switched2665 to warnings and vice versa by configuring the `receive.fsck.<msg-id>`2666 setting where the `<msg-id>` is the fsck message ID and the value2667 is one of `error`, `warn` or `ignore`. For convenience, fsck prefixes2668 the error/warning with the message ID, e.g. "missingEmail: invalid2669 author/committer line - missing email" means that setting2670 `receive.fsck.missingEmail = ignore` will hide that issue.2671+2672This feature is intended to support working with legacy repositories2673which would not pass pushing when `receive.fsckObjects = true`, allowing2674the host to accept repositories with certain known issues but still catch2675other issues.26762677receive.fsck.skipList::2678 The path to a sorted list of object names (i.e. one SHA-1 per2679 line) that are known to be broken in a non-fatal way and should2680 be ignored. This feature is useful when an established project2681 should be accepted despite early commits containing errors that2682 can be safely ignored such as invalid committer email addresses.2683 Note: corrupt objects cannot be skipped with this setting.26842685receive.keepAlive::2686 After receiving the pack from the client, `receive-pack` may2687 produce no output (if `--quiet` was specified) while processing2688 the pack, causing some networks to drop the TCP connection.2689 With this option set, if `receive-pack` does not transmit2690 any data in this phase for `receive.keepAlive` seconds, it will2691 send a short keepalive packet. The default is 5 seconds; set2692 to 0 to disable keepalives entirely.26932694receive.unpackLimit::2695 If the number of objects received in a push is below this2696 limit then the objects will be unpacked into loose object2697 files. However if the number of received objects equals or2698 exceeds this limit then the received pack will be stored as2699 a pack, after adding any missing delta bases. Storing the2700 pack from a push can make the push operation complete faster,2701 especially on slow filesystems. If not set, the value of2702 `transfer.unpackLimit` is used instead.27032704receive.maxInputSize::2705 If the size of the incoming pack stream is larger than this2706 limit, then git-receive-pack will error out, instead of2707 accepting the pack file. If not set or set to 0, then the size2708 is unlimited.27092710receive.denyDeletes::2711 If set to true, git-receive-pack will deny a ref update that deletes2712 the ref. Use this to prevent such a ref deletion via a push.27132714receive.denyDeleteCurrent::2715 If set to true, git-receive-pack will deny a ref update that2716 deletes the currently checked out branch of a non-bare repository.27172718receive.denyCurrentBranch::2719 If set to true or "refuse", git-receive-pack will deny a ref update2720 to the currently checked out branch of a non-bare repository.2721 Such a push is potentially dangerous because it brings the HEAD2722 out of sync with the index and working tree. If set to "warn",2723 print a warning of such a push to stderr, but allow the push to2724 proceed. If set to false or "ignore", allow such pushes with no2725 message. Defaults to "refuse".2726+2727Another option is "updateInstead" which will update the working2728tree if pushing into the current branch. This option is2729intended for synchronizing working directories when one side is not easily2730accessible via interactive ssh (e.g. a live web site, hence the requirement2731that the working directory be clean). This mode also comes in handy when2732developing inside a VM to test and fix code on different Operating Systems.2733+2734By default, "updateInstead" will refuse the push if the working tree or2735the index have any difference from the HEAD, but the `push-to-checkout`2736hook can be used to customize this. See linkgit:githooks[5].27372738receive.denyNonFastForwards::2739 If set to true, git-receive-pack will deny a ref update which is2740 not a fast-forward. Use this to prevent such an update via a push,2741 even if that push is forced. This configuration variable is2742 set when initializing a shared repository.27432744receive.hideRefs::2745 This variable is the same as `transfer.hideRefs`, but applies2746 only to `receive-pack` (and so affects pushes, but not fetches).2747 An attempt to update or delete a hidden ref by `git push` is2748 rejected.27492750receive.updateServerInfo::2751 If set to true, git-receive-pack will run git-update-server-info2752 after receiving data from git-push and updating refs.27532754receive.shallowUpdate::2755 If set to true, .git/shallow can be updated when new refs2756 require new shallow roots. Otherwise those refs are rejected.27572758remote.pushDefault::2759 The remote to push to by default. Overrides2760 `branch.<name>.remote` for all branches, and is overridden by2761 `branch.<name>.pushRemote` for specific branches.27622763remote.<name>.url::2764 The URL of a remote repository. See linkgit:git-fetch[1] or2765 linkgit:git-push[1].27662767remote.<name>.pushurl::2768 The push URL of a remote repository. See linkgit:git-push[1].27692770remote.<name>.proxy::2771 For remotes that require curl (http, https and ftp), the URL to2772 the proxy to use for that remote. Set to the empty string to2773 disable proxying for that remote.27742775remote.<name>.proxyAuthMethod::2776 For remotes that require curl (http, https and ftp), the method to use for2777 authenticating against the proxy in use (probably set in2778 `remote.<name>.proxy`). See `http.proxyAuthMethod`.27792780remote.<name>.fetch::2781 The default set of "refspec" for linkgit:git-fetch[1]. See2782 linkgit:git-fetch[1].27832784remote.<name>.push::2785 The default set of "refspec" for linkgit:git-push[1]. See2786 linkgit:git-push[1].27872788remote.<name>.mirror::2789 If true, pushing to this remote will automatically behave2790 as if the `--mirror` option was given on the command line.27912792remote.<name>.skipDefaultUpdate::2793 If true, this remote will be skipped by default when updating2794 using linkgit:git-fetch[1] or the `update` subcommand of2795 linkgit:git-remote[1].27962797remote.<name>.skipFetchAll::2798 If true, this remote will be skipped by default when updating2799 using linkgit:git-fetch[1] or the `update` subcommand of2800 linkgit:git-remote[1].28012802remote.<name>.receivepack::2803 The default program to execute on the remote side when pushing. See2804 option --receive-pack of linkgit:git-push[1].28052806remote.<name>.uploadpack::2807 The default program to execute on the remote side when fetching. See2808 option --upload-pack of linkgit:git-fetch-pack[1].28092810remote.<name>.tagOpt::2811 Setting this value to --no-tags disables automatic tag following when2812 fetching from remote <name>. Setting it to --tags will fetch every2813 tag from remote <name>, even if they are not reachable from remote2814 branch heads. Passing these flags directly to linkgit:git-fetch[1] can2815 override this setting. See options --tags and --no-tags of2816 linkgit:git-fetch[1].28172818remote.<name>.vcs::2819 Setting this to a value <vcs> will cause Git to interact with2820 the remote with the git-remote-<vcs> helper.28212822remote.<name>.prune::2823 When set to true, fetching from this remote by default will also2824 remove any remote-tracking references that no longer exist on the2825 remote (as if the `--prune` option was given on the command line).2826 Overrides `fetch.prune` settings, if any.28272828remotes.<group>::2829 The list of remotes which are fetched by "git remote update2830 <group>". See linkgit:git-remote[1].28312832repack.useDeltaBaseOffset::2833 By default, linkgit:git-repack[1] creates packs that use2834 delta-base offset. If you need to share your repository with2835 Git older than version 1.4.4, either directly or via a dumb2836 protocol such as http, then you need to set this option to2837 "false" and repack. Access from old Git versions over the2838 native protocol are unaffected by this option.28392840repack.packKeptObjects::2841 If set to true, makes `git repack` act as if2842 `--pack-kept-objects` was passed. See linkgit:git-repack[1] for2843 details. Defaults to `false` normally, but `true` if a bitmap2844 index is being written (either via `--write-bitmap-index` or2845 `repack.writeBitmaps`).28462847repack.writeBitmaps::2848 When true, git will write a bitmap index when packing all2849 objects to disk (e.g., when `git repack -a` is run). This2850 index can speed up the "counting objects" phase of subsequent2851 packs created for clones and fetches, at the cost of some disk2852 space and extra time spent on the initial repack. This has2853 no effect if multiple packfiles are created.2854 Defaults to false.28552856rerere.autoUpdate::2857 When set to true, `git-rerere` updates the index with the2858 resulting contents after it cleanly resolves conflicts using2859 previously recorded resolution. Defaults to false.28602861rerere.enabled::2862 Activate recording of resolved conflicts, so that identical2863 conflict hunks can be resolved automatically, should they be2864 encountered again. By default, linkgit:git-rerere[1] is2865 enabled if there is an `rr-cache` directory under the2866 `$GIT_DIR`, e.g. if "rerere" was previously used in the2867 repository.28682869sendemail.identity::2870 A configuration identity. When given, causes values in the2871 'sendemail.<identity>' subsection to take precedence over2872 values in the 'sendemail' section. The default identity is2873 the value of `sendemail.identity`.28742875sendemail.smtpEncryption::2876 See linkgit:git-send-email[1] for description. Note that this2877 setting is not subject to the 'identity' mechanism.28782879sendemail.smtpssl (deprecated)::2880 Deprecated alias for 'sendemail.smtpEncryption = ssl'.28812882sendemail.smtpsslcertpath::2883 Path to ca-certificates (either a directory or a single file).2884 Set it to an empty string to disable certificate verification.28852886sendemail.<identity>.*::2887 Identity-specific versions of the 'sendemail.*' parameters2888 found below, taking precedence over those when the this2889 identity is selected, through command-line or2890 `sendemail.identity`.28912892sendemail.aliasesFile::2893sendemail.aliasFileType::2894sendemail.annotate::2895sendemail.bcc::2896sendemail.cc::2897sendemail.ccCmd::2898sendemail.chainReplyTo::2899sendemail.confirm::2900sendemail.envelopeSender::2901sendemail.from::2902sendemail.multiEdit::2903sendemail.signedoffbycc::2904sendemail.smtpPass::2905sendemail.suppresscc::2906sendemail.suppressFrom::2907sendemail.to::2908sendemail.smtpDomain::2909sendemail.smtpServer::2910sendemail.smtpServerPort::2911sendemail.smtpServerOption::2912sendemail.smtpUser::2913sendemail.thread::2914sendemail.transferEncoding::2915sendemail.validate::2916sendemail.xmailer::2917 See linkgit:git-send-email[1] for description.29182919sendemail.signedoffcc (deprecated)::2920 Deprecated alias for `sendemail.signedoffbycc`.29212922showbranch.default::2923 The default set of branches for linkgit:git-show-branch[1].2924 See linkgit:git-show-branch[1].29252926splitIndex.maxPercentChange::2927 When the split index feature is used, this specifies the2928 percent of entries the split index can contain compared to the2929 total number of entries in both the split index and the shared2930 index before a new shared index is written.2931 The value should be between 0 and 100. If the value is 0 then2932 a new shared index is always written, if it is 100 a new2933 shared index is never written.2934 By default the value is 20, so a new shared index is written2935 if the number of entries in the split index would be greater2936 than 20 percent of the total number of entries.2937 See linkgit:git-update-index[1].29382939splitIndex.sharedIndexExpire::2940 When the split index feature is used, shared index files that2941 were not modified since the time this variable specifies will2942 be removed when a new shared index file is created. The value2943 "now" expires all entries immediately, and "never" suppresses2944 expiration altogether.2945 The default value is "2.weeks.ago".2946 Note that a shared index file is considered modified (for the2947 purpose of expiration) each time a new split-index file is2948 either created based on it or read from it.2949 See linkgit:git-update-index[1].29502951status.relativePaths::2952 By default, linkgit:git-status[1] shows paths relative to the2953 current directory. Setting this variable to `false` shows paths2954 relative to the repository root (this was the default for Git2955 prior to v1.5.4).29562957status.short::2958 Set to true to enable --short by default in linkgit:git-status[1].2959 The option --no-short takes precedence over this variable.29602961status.branch::2962 Set to true to enable --branch by default in linkgit:git-status[1].2963 The option --no-branch takes precedence over this variable.29642965status.displayCommentPrefix::2966 If set to true, linkgit:git-status[1] will insert a comment2967 prefix before each output line (starting with2968 `core.commentChar`, i.e. `#` by default). This was the2969 behavior of linkgit:git-status[1] in Git 1.8.4 and previous.2970 Defaults to false.29712972status.showUntrackedFiles::2973 By default, linkgit:git-status[1] and linkgit:git-commit[1] show2974 files which are not currently tracked by Git. Directories which2975 contain only untracked files, are shown with the directory name2976 only. Showing untracked files means that Git needs to lstat() all2977 the files in the whole repository, which might be slow on some2978 systems. So, this variable controls how the commands displays2979 the untracked files. Possible values are:2980+2981--2982* `no` - Show no untracked files.2983* `normal` - Show untracked files and directories.2984* `all` - Show also individual files in untracked directories.2985--2986+2987If this variable is not specified, it defaults to 'normal'.2988This variable can be overridden with the -u|--untracked-files option2989of linkgit:git-status[1] and linkgit:git-commit[1].29902991status.submoduleSummary::2992 Defaults to false.2993 If this is set to a non zero number or true (identical to -1 or an2994 unlimited number), the submodule summary will be enabled and a2995 summary of commits for modified submodules will be shown (see2996 --summary-limit option of linkgit:git-submodule[1]). Please note2997 that the summary output command will be suppressed for all2998 submodules when `diff.ignoreSubmodules` is set to 'all' or only2999 for those submodules where `submodule.<name>.ignore=all`. The only3000 exception to that rule is that status and commit will show staged3001 submodule changes. To3002 also view the summary for ignored submodules you can either use3003 the --ignore-submodules=dirty command-line option or the 'git3004 submodule summary' command, which shows a similar output but does3005 not honor these settings.30063007stash.showPatch::3008 If this is set to true, the `git stash show` command without an3009 option will show the stash in patch form. Defaults to false.3010 See description of 'show' command in linkgit:git-stash[1].30113012stash.showStat::3013 If this is set to true, the `git stash show` command without an3014 option will show diffstat of the stash. Defaults to true.3015 See description of 'show' command in linkgit:git-stash[1].30163017submodule.<name>.url::3018 The URL for a submodule. This variable is copied from the .gitmodules3019 file to the git config via 'git submodule init'. The user can change3020 the configured URL before obtaining the submodule via 'git submodule3021 update'. If neither submodule.<name>.active or submodule.active are3022 set, the presence of this variable is used as a fallback to indicate3023 whether the submodule is of interest to git commands.3024 See linkgit:git-submodule[1] and linkgit:gitmodules[5] for details.30253026submodule.<name>.update::3027 The default update procedure for a submodule. This variable3028 is populated by `git submodule init` from the3029 linkgit:gitmodules[5] file. See description of 'update'3030 command in linkgit:git-submodule[1].30313032submodule.<name>.branch::3033 The remote branch name for a submodule, used by `git submodule3034 update --remote`. Set this option to override the value found in3035 the `.gitmodules` file. See linkgit:git-submodule[1] and3036 linkgit:gitmodules[5] for details.30373038submodule.<name>.fetchRecurseSubmodules::3039 This option can be used to control recursive fetching of this3040 submodule. It can be overridden by using the --[no-]recurse-submodules3041 command-line option to "git fetch" and "git pull".3042 This setting will override that from in the linkgit:gitmodules[5]3043 file.30443045submodule.<name>.ignore::3046 Defines under what circumstances "git status" and the diff family show3047 a submodule as modified. When set to "all", it will never be considered3048 modified (but it will nonetheless show up in the output of status and3049 commit when it has been staged), "dirty" will ignore all changes3050 to the submodules work tree and3051 takes only differences between the HEAD of the submodule and the commit3052 recorded in the superproject into account. "untracked" will additionally3053 let submodules with modified tracked files in their work tree show up.3054 Using "none" (the default when this option is not set) also shows3055 submodules that have untracked files in their work tree as changed.3056 This setting overrides any setting made in .gitmodules for this submodule,3057 both settings can be overridden on the command line by using the3058 "--ignore-submodules" option. The 'git submodule' commands are not3059 affected by this setting.30603061submodule.<name>.active::3062 Boolean value indicating if the submodule is of interest to git3063 commands. This config option takes precedence over the3064 submodule.active config option.30653066submodule.active::3067 A repeated field which contains a pathspec used to match against a3068 submodule's path to determine if the submodule is of interest to git3069 commands.30703071submodule.fetchJobs::3072 Specifies how many submodules are fetched/cloned at the same time.3073 A positive integer allows up to that number of submodules fetched3074 in parallel. A value of 0 will give some reasonable default.3075 If unset, it defaults to 1.30763077submodule.alternateLocation::3078 Specifies how the submodules obtain alternates when submodules are3079 cloned. Possible values are `no`, `superproject`.3080 By default `no` is assumed, which doesn't add references. When the3081 value is set to `superproject` the submodule to be cloned computes3082 its alternates location relative to the superprojects alternate.30833084submodule.alternateErrorStrategy::3085 Specifies how to treat errors with the alternates for a submodule3086 as computed via `submodule.alternateLocation`. Possible values are3087 `ignore`, `info`, `die`. Default is `die`.30883089tag.forceSignAnnotated::3090 A boolean to specify whether annotated tags created should be GPG signed.3091 If `--annotate` is specified on the command line, it takes3092 precedence over this option.30933094tag.sort::3095 This variable controls the sort ordering of tags when displayed by3096 linkgit:git-tag[1]. Without the "--sort=<value>" option provided, the3097 value of this variable will be used as the default.30983099tar.umask::3100 This variable can be used to restrict the permission bits of3101 tar archive entries. The default is 0002, which turns off the3102 world write bit. The special value "user" indicates that the3103 archiving user's umask will be used instead. See umask(2) and3104 linkgit:git-archive[1].31053106transfer.fsckObjects::3107 When `fetch.fsckObjects` or `receive.fsckObjects` are3108 not set, the value of this variable is used instead.3109 Defaults to false.31103111transfer.hideRefs::3112 String(s) `receive-pack` and `upload-pack` use to decide which3113 refs to omit from their initial advertisements. Use more than3114 one definition to specify multiple prefix strings. A ref that is3115 under the hierarchies listed in the value of this variable is3116 excluded, and is hidden when responding to `git push` or `git3117 fetch`. See `receive.hideRefs` and `uploadpack.hideRefs` for3118 program-specific versions of this config.3119+3120You may also include a `!` in front of the ref name to negate the entry,3121explicitly exposing it, even if an earlier entry marked it as hidden.3122If you have multiple hideRefs values, later entries override earlier ones3123(and entries in more-specific config files override less-specific ones).3124+3125If a namespace is in use, the namespace prefix is stripped from each3126reference before it is matched against `transfer.hiderefs` patterns.3127For example, if `refs/heads/master` is specified in `transfer.hideRefs` and3128the current namespace is `foo`, then `refs/namespaces/foo/refs/heads/master`3129is omitted from the advertisements but `refs/heads/master` and3130`refs/namespaces/bar/refs/heads/master` are still advertised as so-called3131"have" lines. In order to match refs before stripping, add a `^` in front of3132the ref name. If you combine `!` and `^`, `!` must be specified first.3133+3134Even if you hide refs, a client may still be able to steal the target3135objects via the techniques described in the "SECURITY" section of the3136linkgit:gitnamespaces[7] man page; it's best to keep private data in a3137separate repository.31383139transfer.unpackLimit::3140 When `fetch.unpackLimit` or `receive.unpackLimit` are3141 not set, the value of this variable is used instead.3142 The default value is 100.31433144uploadarchive.allowUnreachable::3145 If true, allow clients to use `git archive --remote` to request3146 any tree, whether reachable from the ref tips or not. See the3147 discussion in the "SECURITY" section of3148 linkgit:git-upload-archive[1] for more details. Defaults to3149 `false`.31503151uploadpack.hideRefs::3152 This variable is the same as `transfer.hideRefs`, but applies3153 only to `upload-pack` (and so affects only fetches, not pushes).3154 An attempt to fetch a hidden ref by `git fetch` will fail. See3155 also `uploadpack.allowTipSHA1InWant`.31563157uploadpack.allowTipSHA1InWant::3158 When `uploadpack.hideRefs` is in effect, allow `upload-pack`3159 to accept a fetch request that asks for an object at the tip3160 of a hidden ref (by default, such a request is rejected).3161 See also `uploadpack.hideRefs`. Even if this is false, a client3162 may be able to steal objects via the techniques described in the3163 "SECURITY" section of the linkgit:gitnamespaces[7] man page; it's3164 best to keep private data in a separate repository.31653166uploadpack.allowReachableSHA1InWant::3167 Allow `upload-pack` to accept a fetch request that asks for an3168 object that is reachable from any ref tip. However, note that3169 calculating object reachability is computationally expensive.3170 Defaults to `false`. Even if this is false, a client may be able3171 to steal objects via the techniques described in the "SECURITY"3172 section of the linkgit:gitnamespaces[7] man page; it's best to3173 keep private data in a separate repository.31743175uploadpack.allowAnySHA1InWant::3176 Allow `upload-pack` to accept a fetch request that asks for any3177 object at all.3178 Defaults to `false`.31793180uploadpack.keepAlive::3181 When `upload-pack` has started `pack-objects`, there may be a3182 quiet period while `pack-objects` prepares the pack. Normally3183 it would output progress information, but if `--quiet` was used3184 for the fetch, `pack-objects` will output nothing at all until3185 the pack data begins. Some clients and networks may consider3186 the server to be hung and give up. Setting this option instructs3187 `upload-pack` to send an empty keepalive packet every3188 `uploadpack.keepAlive` seconds. Setting this option to 03189 disables keepalive packets entirely. The default is 5 seconds.31903191uploadpack.packObjectsHook::3192 If this option is set, when `upload-pack` would run3193 `git pack-objects` to create a packfile for a client, it will3194 run this shell command instead. The `pack-objects` command and3195 arguments it _would_ have run (including the `git pack-objects`3196 at the beginning) are appended to the shell command. The stdin3197 and stdout of the hook are treated as if `pack-objects` itself3198 was run. I.e., `upload-pack` will feed input intended for3199 `pack-objects` to the hook, and expects a completed packfile on3200 stdout.3201+3202Note that this configuration variable is ignored if it is seen in the3203repository-level config (this is a safety measure against fetching from3204untrusted repositories).32053206url.<base>.insteadOf::3207 Any URL that starts with this value will be rewritten to3208 start, instead, with <base>. In cases where some site serves a3209 large number of repositories, and serves them with multiple3210 access methods, and some users need to use different access3211 methods, this feature allows people to specify any of the3212 equivalent URLs and have Git automatically rewrite the URL to3213 the best alternative for the particular user, even for a3214 never-before-seen repository on the site. When more than one3215 insteadOf strings match a given URL, the longest match is used.32163217url.<base>.pushInsteadOf::3218 Any URL that starts with this value will not be pushed to;3219 instead, it will be rewritten to start with <base>, and the3220 resulting URL will be pushed to. In cases where some site serves3221 a large number of repositories, and serves them with multiple3222 access methods, some of which do not allow push, this feature3223 allows people to specify a pull-only URL and have Git3224 automatically use an appropriate URL to push, even for a3225 never-before-seen repository on the site. When more than one3226 pushInsteadOf strings match a given URL, the longest match is3227 used. If a remote has an explicit pushurl, Git will ignore this3228 setting for that remote.32293230user.email::3231 Your email address to be recorded in any newly created commits.3232 Can be overridden by the `GIT_AUTHOR_EMAIL`, `GIT_COMMITTER_EMAIL`, and3233 `EMAIL` environment variables. See linkgit:git-commit-tree[1].32343235user.name::3236 Your full name to be recorded in any newly created commits.3237 Can be overridden by the `GIT_AUTHOR_NAME` and `GIT_COMMITTER_NAME`3238 environment variables. See linkgit:git-commit-tree[1].32393240user.useConfigOnly::3241 Instruct Git to avoid trying to guess defaults for `user.email`3242 and `user.name`, and instead retrieve the values only from the3243 configuration. For example, if you have multiple email addresses3244 and would like to use a different one for each repository, then3245 with this configuration option set to `true` in the global config3246 along with a name, Git will prompt you to set up an email before3247 making new commits in a newly cloned repository.3248 Defaults to `false`.32493250user.signingKey::3251 If linkgit:git-tag[1] or linkgit:git-commit[1] is not selecting the3252 key you want it to automatically when creating a signed tag or3253 commit, you can override the default selection with this variable.3254 This option is passed unchanged to gpg's --local-user parameter,3255 so you may specify a key using any method that gpg supports.32563257versionsort.prereleaseSuffix (deprecated)::3258 Deprecated alias for `versionsort.suffix`. Ignored if3259 `versionsort.suffix` is set.32603261versionsort.suffix::3262 Even when version sort is used in linkgit:git-tag[1], tagnames3263 with the same base version but different suffixes are still sorted3264 lexicographically, resulting e.g. in prerelease tags appearing3265 after the main release (e.g. "1.0-rc1" after "1.0"). This3266 variable can be specified to determine the sorting order of tags3267 with different suffixes.3268+3269By specifying a single suffix in this variable, any tagname containing3270that suffix will appear before the corresponding main release. E.g. if3271the variable is set to "-rc", then all "1.0-rcX" tags will appear before3272"1.0". If specified multiple times, once per suffix, then the order of3273suffixes in the configuration will determine the sorting order of tagnames3274with those suffixes. E.g. if "-pre" appears before "-rc" in the3275configuration, then all "1.0-preX" tags will be listed before any3276"1.0-rcX" tags. The placement of the main release tag relative to tags3277with various suffixes can be determined by specifying the empty suffix3278among those other suffixes. E.g. if the suffixes "-rc", "", "-ck" and3279"-bfs" appear in the configuration in this order, then all "v4.8-rcX" tags3280are listed first, followed by "v4.8", then "v4.8-ckX" and finally3281"v4.8-bfsX".3282+3283If more than one suffixes match the same tagname, then that tagname will3284be sorted according to the suffix which starts at the earliest position in3285the tagname. If more than one different matching suffixes start at3286that earliest position, then that tagname will be sorted according to the3287longest of those suffixes.3288The sorting order between different suffixes is undefined if they are3289in multiple config files.32903291web.browser::3292 Specify a web browser that may be used by some commands.3293 Currently only linkgit:git-instaweb[1] and linkgit:git-help[1]3294 may use it.