Documentation / config.txton commit Documentation: declare "core.ignoreCase" as internal variable (48294b5)
   1CONFIGURATION FILE
   2------------------
   3
   4The Git configuration file contains a number of variables that affect
   5the Git commands' behavior. The `.git/config` file in each repository
   6is used to store the configuration for that repository, and
   7`$HOME/.gitconfig` is used to store a per-user configuration as
   8fallback values for the `.git/config` file. The file `/etc/gitconfig`
   9can be used to store a system-wide default configuration.
  10
  11The configuration variables are used by both the Git plumbing
  12and the porcelains. The variables are divided into sections, wherein
  13the fully qualified variable name of the variable itself is the last
  14dot-separated segment and the section name is everything before the last
  15dot. The variable names are case-insensitive, allow only alphanumeric
  16characters and `-`, and must start with an alphabetic character.  Some
  17variables may appear multiple times; we say then that the variable is
  18multivalued.
  19
  20Syntax
  21~~~~~~
  22
  23The syntax is fairly flexible and permissive; whitespaces are mostly
  24ignored.  The '#' and ';' characters begin comments to the end of line,
  25blank lines are ignored.
  26
  27The file consists of sections and variables.  A section begins with
  28the name of the section in square brackets and continues until the next
  29section begins.  Section names are case-insensitive.  Only alphanumeric
  30characters, `-` and `.` are allowed in section names.  Each variable
  31must belong to some section, which means that there must be a section
  32header before the first setting of a variable.
  33
  34Sections can be further divided into subsections.  To begin a subsection
  35put its name in double quotes, separated by space from the section name,
  36in the section header, like in the example below:
  37
  38--------
  39        [section "subsection"]
  40
  41--------
  42
  43Subsection names are case sensitive and can contain any characters except
  44newline and the null byte. Doublequote `"` and backslash can be included
  45by escaping them as `\"` and `\\`, respectively. Backslashes preceding
  46other characters are dropped when reading; for example, `\t` is read as
  47`t` and `\0` is read as `0` Section headers cannot span multiple lines.
  48Variables may belong directly to a section or to a given subsection. You
  49can have `[section]` if you have `[section "subsection"]`, but you don't
  50need to.
  51
  52There is also a deprecated `[section.subsection]` syntax. With this
  53syntax, the subsection name is converted to lower-case and is also
  54compared case sensitively. These subsection names follow the same
  55restrictions as section names.
  56
  57All the other lines (and the remainder of the line after the section
  58header) are recognized as setting variables, in the form
  59'name = value' (or just 'name', which is a short-hand to say that
  60the variable is the boolean "true").
  61The variable names are case-insensitive, allow only alphanumeric characters
  62and `-`, and must start with an alphabetic character.
  63
  64A line that defines a value can be continued to the next line by
  65ending it with a `\`; the backquote and the end-of-line are
  66stripped.  Leading whitespaces after 'name =', the remainder of the
  67line after the first comment character '#' or ';', and trailing
  68whitespaces of the line are discarded unless they are enclosed in
  69double quotes.  Internal whitespaces within the value are retained
  70verbatim.
  71
  72Inside double quotes, double quote `"` and backslash `\` characters
  73must be escaped: use `\"` for `"` and `\\` for `\`.
  74
  75The following escape sequences (beside `\"` and `\\`) are recognized:
  76`\n` for newline character (NL), `\t` for horizontal tabulation (HT, TAB)
  77and `\b` for backspace (BS).  Other char escape sequences (including octal
  78escape sequences) are invalid.
  79
  80
  81Includes
  82~~~~~~~~
  83
  84The `include` and `includeIf` sections allow you to include config
  85directives from another source. These sections behave identically to
  86each other with the exception that `includeIf` sections may be ignored
  87if their condition does not evaluate to true; see "Conditional includes"
  88below.
  89
  90You can include a config file from another by setting the special
  91`include.path` (or `includeIf.*.path`) variable to the name of the file
  92to be included. The variable takes a pathname as its value, and is
  93subject to tilde expansion. These variables can be given multiple times.
  94
  95The contents of the included file are inserted immediately, as if they
  96had been found at the location of the include directive. If the value of the
  97variable is a relative path, the path is considered to
  98be relative to the configuration file in which the include directive
  99was found.  See below for examples.
 100
 101Conditional includes
 102~~~~~~~~~~~~~~~~~~~~
 103
 104You can include a config file from another conditionally by setting a
 105`includeIf.<condition>.path` variable to the name of the file to be
 106included.
 107
 108The condition starts with a keyword followed by a colon and some data
 109whose format and meaning depends on the keyword. Supported keywords
 110are:
 111
 112`gitdir`::
 113
 114        The data that follows the keyword `gitdir:` is used as a glob
 115        pattern. If the location of the .git directory matches the
 116        pattern, the include condition is met.
 117+
 118The .git location may be auto-discovered, or come from `$GIT_DIR`
 119environment variable. If the repository is auto discovered via a .git
 120file (e.g. from submodules, or a linked worktree), the .git location
 121would be the final location where the .git directory is, not where the
 122.git file is.
 123+
 124The pattern can contain standard globbing wildcards and two additional
 125ones, `**/` and `/**`, that can match multiple path components. Please
 126refer to linkgit:gitignore[5] for details. For convenience:
 127
 128 * If the pattern starts with `~/`, `~` will be substituted with the
 129   content of the environment variable `HOME`.
 130
 131 * If the pattern starts with `./`, it is replaced with the directory
 132   containing the current config file.
 133
 134 * If the pattern does not start with either `~/`, `./` or `/`, `**/`
 135   will be automatically prepended. For example, the pattern `foo/bar`
 136   becomes `**/foo/bar` and would match `/any/path/to/foo/bar`.
 137
 138 * If the pattern ends with `/`, `**` will be automatically added. For
 139   example, the pattern `foo/` becomes `foo/**`. In other words, it
 140   matches "foo" and everything inside, recursively.
 141
 142`gitdir/i`::
 143        This is the same as `gitdir` except that matching is done
 144        case-insensitively (e.g. on case-insensitive file sytems)
 145
 146A few more notes on matching via `gitdir` and `gitdir/i`:
 147
 148 * Symlinks in `$GIT_DIR` are not resolved before matching.
 149
 150 * Both the symlink & realpath versions of paths will be matched
 151   outside of `$GIT_DIR`. E.g. if ~/git is a symlink to
 152   /mnt/storage/git, both `gitdir:~/git` and `gitdir:/mnt/storage/git`
 153   will match.
 154+
 155This was not the case in the initial release of this feature in
 156v2.13.0, which only matched the realpath version. Configuration that
 157wants to be compatible with the initial release of this feature needs
 158to either specify only the realpath version, or both versions.
 159
 160 * Note that "../" is not special and will match literally, which is
 161   unlikely what you want.
 162
 163Example
 164~~~~~~~
 165
 166        # Core variables
 167        [core]
 168                ; Don't trust file modes
 169                filemode = false
 170
 171        # Our diff algorithm
 172        [diff]
 173                external = /usr/local/bin/diff-wrapper
 174                renames = true
 175
 176        [branch "devel"]
 177                remote = origin
 178                merge = refs/heads/devel
 179
 180        # Proxy settings
 181        [core]
 182                gitProxy="ssh" for "kernel.org"
 183                gitProxy=default-proxy ; for the rest
 184
 185        [include]
 186                path = /path/to/foo.inc ; include by absolute path
 187                path = foo.inc ; find "foo.inc" relative to the current file
 188                path = ~/foo.inc ; find "foo.inc" in your `$HOME` directory
 189
 190        ; include if $GIT_DIR is /path/to/foo/.git
 191        [includeIf "gitdir:/path/to/foo/.git"]
 192                path = /path/to/foo.inc
 193
 194        ; include for all repositories inside /path/to/group
 195        [includeIf "gitdir:/path/to/group/"]
 196                path = /path/to/foo.inc
 197
 198        ; include for all repositories inside $HOME/to/group
 199        [includeIf "gitdir:~/to/group/"]
 200                path = /path/to/foo.inc
 201
 202        ; relative paths are always relative to the including
 203        ; file (if the condition is true); their location is not
 204        ; affected by the condition
 205        [includeIf "gitdir:/path/to/group/"]
 206                path = foo.inc
 207
 208Values
 209~~~~~~
 210
 211Values of many variables are treated as a simple string, but there
 212are variables that take values of specific types and there are rules
 213as to how to spell them.
 214
 215boolean::
 216
 217       When a variable is said to take a boolean value, many
 218       synonyms are accepted for 'true' and 'false'; these are all
 219       case-insensitive.
 220
 221        true;; Boolean true literals are `yes`, `on`, `true`,
 222                and `1`.  Also, a variable defined without `= <value>`
 223                is taken as true.
 224
 225        false;; Boolean false literals are `no`, `off`, `false`,
 226                `0` and the empty string.
 227+
 228When converting value to the canonical form using `--bool` type
 229specifier, 'git config' will ensure that the output is "true" or
 230"false" (spelled in lowercase).
 231
 232integer::
 233       The value for many variables that specify various sizes can
 234       be suffixed with `k`, `M`,... to mean "scale the number by
 235       1024", "by 1024x1024", etc.
 236
 237color::
 238       The value for a variable that takes a color is a list of
 239       colors (at most two, one for foreground and one for background)
 240       and attributes (as many as you want), separated by spaces.
 241+
 242The basic colors accepted are `normal`, `black`, `red`, `green`, `yellow`,
 243`blue`, `magenta`, `cyan` and `white`.  The first color given is the
 244foreground; the second is the background.
 245+
 246Colors may also be given as numbers between 0 and 255; these use ANSI
 247256-color mode (but note that not all terminals may support this).  If
 248your terminal supports it, you may also specify 24-bit RGB values as
 249hex, like `#ff0ab3`.
 250+
 251The accepted attributes are `bold`, `dim`, `ul`, `blink`, `reverse`,
 252`italic`, and `strike` (for crossed-out or "strikethrough" letters).
 253The position of any attributes with respect to the colors
 254(before, after, or in between), doesn't matter. Specific attributes may
 255be turned off by prefixing them with `no` or `no-` (e.g., `noreverse`,
 256`no-ul`, etc).
 257+
 258An empty color string produces no color effect at all. This can be used
 259to avoid coloring specific elements without disabling color entirely.
 260+
 261For git's pre-defined color slots, the attributes are meant to be reset
 262at the beginning of each item in the colored output. So setting
 263`color.decorate.branch` to `black` will paint that branch name in a
 264plain `black`, even if the previous thing on the same output line (e.g.
 265opening parenthesis before the list of branch names in `log --decorate`
 266output) is set to be painted with `bold` or some other attribute.
 267However, custom log formats may do more complicated and layered
 268coloring, and the negated forms may be useful there.
 269
 270pathname::
 271        A variable that takes a pathname value can be given a
 272        string that begins with "`~/`" or "`~user/`", and the usual
 273        tilde expansion happens to such a string: `~/`
 274        is expanded to the value of `$HOME`, and `~user/` to the
 275        specified user's home directory.
 276
 277
 278Variables
 279~~~~~~~~~
 280
 281Note that this list is non-comprehensive and not necessarily complete.
 282For command-specific variables, you will find a more detailed description
 283in the appropriate manual page.
 284
 285Other git-related tools may and do use their own variables.  When
 286inventing new variables for use in your own tool, make sure their
 287names do not conflict with those that are used by Git itself and
 288other popular tools, and describe them in your documentation.
 289
 290
 291advice.*::
 292        These variables control various optional help messages designed to
 293        aid new users. All 'advice.*' variables default to 'true', and you
 294        can tell Git that you do not need help by setting these to 'false':
 295+
 296--
 297        pushUpdateRejected::
 298                Set this variable to 'false' if you want to disable
 299                'pushNonFFCurrent',
 300                'pushNonFFMatching', 'pushAlreadyExists',
 301                'pushFetchFirst', and 'pushNeedsForce'
 302                simultaneously.
 303        pushNonFFCurrent::
 304                Advice shown when linkgit:git-push[1] fails due to a
 305                non-fast-forward update to the current branch.
 306        pushNonFFMatching::
 307                Advice shown when you ran linkgit:git-push[1] and pushed
 308                'matching refs' explicitly (i.e. you used ':', or
 309                specified a refspec that isn't your current branch) and
 310                it resulted in a non-fast-forward error.
 311        pushAlreadyExists::
 312                Shown when linkgit:git-push[1] rejects an update that
 313                does not qualify for fast-forwarding (e.g., a tag.)
 314        pushFetchFirst::
 315                Shown when linkgit:git-push[1] rejects an update that
 316                tries to overwrite a remote ref that points at an
 317                object we do not have.
 318        pushNeedsForce::
 319                Shown when linkgit:git-push[1] rejects an update that
 320                tries to overwrite a remote ref that points at an
 321                object that is not a commit-ish, or make the remote
 322                ref point at an object that is not a commit-ish.
 323        statusHints::
 324                Show directions on how to proceed from the current
 325                state in the output of linkgit:git-status[1], in
 326                the template shown when writing commit messages in
 327                linkgit:git-commit[1], and in the help message shown
 328                by linkgit:git-checkout[1] when switching branch.
 329        statusUoption::
 330                Advise to consider using the `-u` option to linkgit:git-status[1]
 331                when the command takes more than 2 seconds to enumerate untracked
 332                files.
 333        commitBeforeMerge::
 334                Advice shown when linkgit:git-merge[1] refuses to
 335                merge to avoid overwriting local changes.
 336        resolveConflict::
 337                Advice shown by various commands when conflicts
 338                prevent the operation from being performed.
 339        implicitIdentity::
 340                Advice on how to set your identity configuration when
 341                your information is guessed from the system username and
 342                domain name.
 343        detachedHead::
 344                Advice shown when you used linkgit:git-checkout[1] to
 345                move to the detach HEAD state, to instruct how to create
 346                a local branch after the fact.
 347        amWorkDir::
 348                Advice that shows the location of the patch file when
 349                linkgit:git-am[1] fails to apply it.
 350        rmHints::
 351                In case of failure in the output of linkgit:git-rm[1],
 352                show directions on how to proceed from the current state.
 353        addEmbeddedRepo::
 354                Advice on what to do when you've accidentally added one
 355                git repo inside of another.
 356        ignoredHook::
 357                Advice shown if an hook is ignored because the hook is not
 358                set as executable.
 359        waitingForEditor::
 360                Print a message to the terminal whenever Git is waiting for
 361                editor input from the user.
 362--
 363
 364core.fileMode::
 365        Tells Git if the executable bit of files in the working tree
 366        is to be honored.
 367+
 368Some filesystems lose the executable bit when a file that is
 369marked as executable is checked out, or checks out a
 370non-executable file with executable bit on.
 371linkgit:git-clone[1] or linkgit:git-init[1] probe the filesystem
 372to see if it handles the executable bit correctly
 373and this variable is automatically set as necessary.
 374+
 375A repository, however, may be on a filesystem that handles
 376the filemode correctly, and this variable is set to 'true'
 377when created, but later may be made accessible from another
 378environment that loses the filemode (e.g. exporting ext4 via
 379CIFS mount, visiting a Cygwin created repository with
 380Git for Windows or Eclipse).
 381In such a case it may be necessary to set this variable to 'false'.
 382See linkgit:git-update-index[1].
 383+
 384The default is true (when core.filemode is not specified in the config file).
 385
 386core.hideDotFiles::
 387        (Windows-only) If true, mark newly-created directories and files whose
 388        name starts with a dot as hidden.  If 'dotGitOnly', only the `.git/`
 389        directory is hidden, but no other files starting with a dot.  The
 390        default mode is 'dotGitOnly'.
 391
 392core.ignoreCase::
 393        Internal variable which enables various workarounds to enable
 394        Git to work better on filesystems that are not case sensitive,
 395        like APFS, HFS+, FAT, NTFS, etc. For example, if a directory listing
 396        finds "makefile" when Git expects "Makefile", Git will assume
 397        it is really the same file, and continue to remember it as
 398        "Makefile".
 399+
 400The default is false, except linkgit:git-clone[1] or linkgit:git-init[1]
 401will probe and set core.ignoreCase true if appropriate when the repository
 402is created.
 403+
 404Git relies on the proper configuration of this variable for your operating
 405and file system. Modifying this value may result in unexpected behavior.
 406
 407core.precomposeUnicode::
 408        This option is only used by Mac OS implementation of Git.
 409        When core.precomposeUnicode=true, Git reverts the unicode decomposition
 410        of filenames done by Mac OS. This is useful when sharing a repository
 411        between Mac OS and Linux or Windows.
 412        (Git for Windows 1.7.10 or higher is needed, or Git under cygwin 1.7).
 413        When false, file names are handled fully transparent by Git,
 414        which is backward compatible with older versions of Git.
 415
 416core.protectHFS::
 417        If set to true, do not allow checkout of paths that would
 418        be considered equivalent to `.git` on an HFS+ filesystem.
 419        Defaults to `true` on Mac OS, and `false` elsewhere.
 420
 421core.protectNTFS::
 422        If set to true, do not allow checkout of paths that would
 423        cause problems with the NTFS filesystem, e.g. conflict with
 424        8.3 "short" names.
 425        Defaults to `true` on Windows, and `false` elsewhere.
 426
 427core.fsmonitor::
 428        If set, the value of this variable is used as a command which
 429        will identify all files that may have changed since the
 430        requested date/time. This information is used to speed up git by
 431        avoiding unnecessary processing of files that have not changed.
 432        See the "fsmonitor-watchman" section of linkgit:githooks[5].
 433
 434core.trustctime::
 435        If false, the ctime differences between the index and the
 436        working tree are ignored; useful when the inode change time
 437        is regularly modified by something outside Git (file system
 438        crawlers and some backup systems).
 439        See linkgit:git-update-index[1]. True by default.
 440
 441core.splitIndex::
 442        If true, the split-index feature of the index will be used.
 443        See linkgit:git-update-index[1]. False by default.
 444
 445core.untrackedCache::
 446        Determines what to do about the untracked cache feature of the
 447        index. It will be kept, if this variable is unset or set to
 448        `keep`. It will automatically be added if set to `true`. And
 449        it will automatically be removed, if set to `false`. Before
 450        setting it to `true`, you should check that mtime is working
 451        properly on your system.
 452        See linkgit:git-update-index[1]. `keep` by default.
 453
 454core.checkStat::
 455        Determines which stat fields to match between the index
 456        and work tree. The user can set this to 'default' or
 457        'minimal'. Default (or explicitly 'default'), is to check
 458        all fields, including the sub-second part of mtime and ctime.
 459
 460core.quotePath::
 461        Commands that output paths (e.g. 'ls-files', 'diff'), will
 462        quote "unusual" characters in the pathname by enclosing the
 463        pathname in double-quotes and escaping those characters with
 464        backslashes in the same way C escapes control characters (e.g.
 465        `\t` for TAB, `\n` for LF, `\\` for backslash) or bytes with
 466        values larger than 0x80 (e.g. octal `\302\265` for "micro" in
 467        UTF-8).  If this variable is set to false, bytes higher than
 468        0x80 are not considered "unusual" any more. Double-quotes,
 469        backslash and control characters are always escaped regardless
 470        of the setting of this variable.  A simple space character is
 471        not considered "unusual".  Many commands can output pathnames
 472        completely verbatim using the `-z` option. The default value
 473        is true.
 474
 475core.eol::
 476        Sets the line ending type to use in the working directory for
 477        files that have the `text` property set when core.autocrlf is false.
 478        Alternatives are 'lf', 'crlf' and 'native', which uses the platform's
 479        native line ending.  The default value is `native`.  See
 480        linkgit:gitattributes[5] for more information on end-of-line
 481        conversion.
 482
 483core.safecrlf::
 484        If true, makes Git check if converting `CRLF` is reversible when
 485        end-of-line conversion is active.  Git will verify if a command
 486        modifies a file in the work tree either directly or indirectly.
 487        For example, committing a file followed by checking out the
 488        same file should yield the original file in the work tree.  If
 489        this is not the case for the current setting of
 490        `core.autocrlf`, Git will reject the file.  The variable can
 491        be set to "warn", in which case Git will only warn about an
 492        irreversible conversion but continue the operation.
 493+
 494CRLF conversion bears a slight chance of corrupting data.
 495When it is enabled, Git will convert CRLF to LF during commit and LF to
 496CRLF during checkout.  A file that contains a mixture of LF and
 497CRLF before the commit cannot be recreated by Git.  For text
 498files this is the right thing to do: it corrects line endings
 499such that we have only LF line endings in the repository.
 500But for binary files that are accidentally classified as text the
 501conversion can corrupt data.
 502+
 503If you recognize such corruption early you can easily fix it by
 504setting the conversion type explicitly in .gitattributes.  Right
 505after committing you still have the original file in your work
 506tree and this file is not yet corrupted.  You can explicitly tell
 507Git that this file is binary and Git will handle the file
 508appropriately.
 509+
 510Unfortunately, the desired effect of cleaning up text files with
 511mixed line endings and the undesired effect of corrupting binary
 512files cannot be distinguished.  In both cases CRLFs are removed
 513in an irreversible way.  For text files this is the right thing
 514to do because CRLFs are line endings, while for binary files
 515converting CRLFs corrupts data.
 516+
 517Note, this safety check does not mean that a checkout will generate a
 518file identical to the original file for a different setting of
 519`core.eol` and `core.autocrlf`, but only for the current one.  For
 520example, a text file with `LF` would be accepted with `core.eol=lf`
 521and could later be checked out with `core.eol=crlf`, in which case the
 522resulting file would contain `CRLF`, although the original file
 523contained `LF`.  However, in both work trees the line endings would be
 524consistent, that is either all `LF` or all `CRLF`, but never mixed.  A
 525file with mixed line endings would be reported by the `core.safecrlf`
 526mechanism.
 527
 528core.autocrlf::
 529        Setting this variable to "true" is the same as setting
 530        the `text` attribute to "auto" on all files and core.eol to "crlf".
 531        Set to true if you want to have `CRLF` line endings in your
 532        working directory and the repository has LF line endings.
 533        This variable can be set to 'input',
 534        in which case no output conversion is performed.
 535
 536core.symlinks::
 537        If false, symbolic links are checked out as small plain files that
 538        contain the link text. linkgit:git-update-index[1] and
 539        linkgit:git-add[1] will not change the recorded type to regular
 540        file. Useful on filesystems like FAT that do not support
 541        symbolic links.
 542+
 543The default is true, except linkgit:git-clone[1] or linkgit:git-init[1]
 544will probe and set core.symlinks false if appropriate when the repository
 545is created.
 546
 547core.gitProxy::
 548        A "proxy command" to execute (as 'command host port') instead
 549        of establishing direct connection to the remote server when
 550        using the Git protocol for fetching. If the variable value is
 551        in the "COMMAND for DOMAIN" format, the command is applied only
 552        on hostnames ending with the specified domain string. This variable
 553        may be set multiple times and is matched in the given order;
 554        the first match wins.
 555+
 556Can be overridden by the `GIT_PROXY_COMMAND` environment variable
 557(which always applies universally, without the special "for"
 558handling).
 559+
 560The special string `none` can be used as the proxy command to
 561specify that no proxy be used for a given domain pattern.
 562This is useful for excluding servers inside a firewall from
 563proxy use, while defaulting to a common proxy for external domains.
 564
 565core.sshCommand::
 566        If this variable is set, `git fetch` and `git push` will
 567        use the specified command instead of `ssh` when they need to
 568        connect to a remote system. The command is in the same form as
 569        the `GIT_SSH_COMMAND` environment variable and is overridden
 570        when the environment variable is set.
 571
 572core.ignoreStat::
 573        If true, Git will avoid using lstat() calls to detect if files have
 574        changed by setting the "assume-unchanged" bit for those tracked files
 575        which it has updated identically in both the index and working tree.
 576+
 577When files are modified outside of Git, the user will need to stage
 578the modified files explicitly (e.g. see 'Examples' section in
 579linkgit:git-update-index[1]).
 580Git will not normally detect changes to those files.
 581+
 582This is useful on systems where lstat() calls are very slow, such as
 583CIFS/Microsoft Windows.
 584+
 585False by default.
 586
 587core.preferSymlinkRefs::
 588        Instead of the default "symref" format for HEAD
 589        and other symbolic reference files, use symbolic links.
 590        This is sometimes needed to work with old scripts that
 591        expect HEAD to be a symbolic link.
 592
 593core.bare::
 594        If true this repository is assumed to be 'bare' and has no
 595        working directory associated with it.  If this is the case a
 596        number of commands that require a working directory will be
 597        disabled, such as linkgit:git-add[1] or linkgit:git-merge[1].
 598+
 599This setting is automatically guessed by linkgit:git-clone[1] or
 600linkgit:git-init[1] when the repository was created.  By default a
 601repository that ends in "/.git" is assumed to be not bare (bare =
 602false), while all other repositories are assumed to be bare (bare
 603= true).
 604
 605core.worktree::
 606        Set the path to the root of the working tree.
 607        If `GIT_COMMON_DIR` environment variable is set, core.worktree
 608        is ignored and not used for determining the root of working tree.
 609        This can be overridden by the `GIT_WORK_TREE` environment
 610        variable and the `--work-tree` command-line option.
 611        The value can be an absolute path or relative to the path to
 612        the .git directory, which is either specified by --git-dir
 613        or GIT_DIR, or automatically discovered.
 614        If --git-dir or GIT_DIR is specified but none of
 615        --work-tree, GIT_WORK_TREE and core.worktree is specified,
 616        the current working directory is regarded as the top level
 617        of your working tree.
 618+
 619Note that this variable is honored even when set in a configuration
 620file in a ".git" subdirectory of a directory and its value differs
 621from the latter directory (e.g. "/path/to/.git/config" has
 622core.worktree set to "/different/path"), which is most likely a
 623misconfiguration.  Running Git commands in the "/path/to" directory will
 624still use "/different/path" as the root of the work tree and can cause
 625confusion unless you know what you are doing (e.g. you are creating a
 626read-only snapshot of the same index to a location different from the
 627repository's usual working tree).
 628
 629core.logAllRefUpdates::
 630        Enable the reflog. Updates to a ref <ref> is logged to the file
 631        "`$GIT_DIR/logs/<ref>`", by appending the new and old
 632        SHA-1, the date/time and the reason of the update, but
 633        only when the file exists.  If this configuration
 634        variable is set to `true`, missing "`$GIT_DIR/logs/<ref>`"
 635        file is automatically created for branch heads (i.e. under
 636        `refs/heads/`), remote refs (i.e. under `refs/remotes/`),
 637        note refs (i.e. under `refs/notes/`), and the symbolic ref `HEAD`.
 638        If it is set to `always`, then a missing reflog is automatically
 639        created for any ref under `refs/`.
 640+
 641This information can be used to determine what commit
 642was the tip of a branch "2 days ago".
 643+
 644This value is true by default in a repository that has
 645a working directory associated with it, and false by
 646default in a bare repository.
 647
 648core.repositoryFormatVersion::
 649        Internal variable identifying the repository format and layout
 650        version.
 651
 652core.sharedRepository::
 653        When 'group' (or 'true'), the repository is made shareable between
 654        several users in a group (making sure all the files and objects are
 655        group-writable). When 'all' (or 'world' or 'everybody'), the
 656        repository will be readable by all users, additionally to being
 657        group-shareable. When 'umask' (or 'false'), Git will use permissions
 658        reported by umask(2). When '0xxx', where '0xxx' is an octal number,
 659        files in the repository will have this mode value. '0xxx' will override
 660        user's umask value (whereas the other options will only override
 661        requested parts of the user's umask value). Examples: '0660' will make
 662        the repo read/write-able for the owner and group, but inaccessible to
 663        others (equivalent to 'group' unless umask is e.g. '0022'). '0640' is a
 664        repository that is group-readable but not group-writable.
 665        See linkgit:git-init[1]. False by default.
 666
 667core.warnAmbiguousRefs::
 668        If true, Git will warn you if the ref name you passed it is ambiguous
 669        and might match multiple refs in the repository. True by default.
 670
 671core.compression::
 672        An integer -1..9, indicating a default compression level.
 673        -1 is the zlib default. 0 means no compression,
 674        and 1..9 are various speed/size tradeoffs, 9 being slowest.
 675        If set, this provides a default to other compression variables,
 676        such as `core.looseCompression` and `pack.compression`.
 677
 678core.looseCompression::
 679        An integer -1..9, indicating the compression level for objects that
 680        are not in a pack file. -1 is the zlib default. 0 means no
 681        compression, and 1..9 are various speed/size tradeoffs, 9 being
 682        slowest.  If not set,  defaults to core.compression.  If that is
 683        not set,  defaults to 1 (best speed).
 684
 685core.packedGitWindowSize::
 686        Number of bytes of a pack file to map into memory in a
 687        single mapping operation.  Larger window sizes may allow
 688        your system to process a smaller number of large pack files
 689        more quickly.  Smaller window sizes will negatively affect
 690        performance due to increased calls to the operating system's
 691        memory manager, but may improve performance when accessing
 692        a large number of large pack files.
 693+
 694Default is 1 MiB if NO_MMAP was set at compile time, otherwise 32
 695MiB on 32 bit platforms and 1 GiB on 64 bit platforms.  This should
 696be reasonable for all users/operating systems.  You probably do
 697not need to adjust this value.
 698+
 699Common unit suffixes of 'k', 'm', or 'g' are supported.
 700
 701core.packedGitLimit::
 702        Maximum number of bytes to map simultaneously into memory
 703        from pack files.  If Git needs to access more than this many
 704        bytes at once to complete an operation it will unmap existing
 705        regions to reclaim virtual address space within the process.
 706+
 707Default is 256 MiB on 32 bit platforms and 32 TiB (effectively
 708unlimited) on 64 bit platforms.
 709This should be reasonable for all users/operating systems, except on
 710the largest projects.  You probably do not need to adjust this value.
 711+
 712Common unit suffixes of 'k', 'm', or 'g' are supported.
 713
 714core.deltaBaseCacheLimit::
 715        Maximum number of bytes to reserve for caching base objects
 716        that may be referenced by multiple deltified objects.  By storing the
 717        entire decompressed base objects in a cache Git is able
 718        to avoid unpacking and decompressing frequently used base
 719        objects multiple times.
 720+
 721Default is 96 MiB on all platforms.  This should be reasonable
 722for all users/operating systems, except on the largest projects.
 723You probably do not need to adjust this value.
 724+
 725Common unit suffixes of 'k', 'm', or 'g' are supported.
 726
 727core.bigFileThreshold::
 728        Files larger than this size are stored deflated, without
 729        attempting delta compression.  Storing large files without
 730        delta compression avoids excessive memory usage, at the
 731        slight expense of increased disk usage. Additionally files
 732        larger than this size are always treated as binary.
 733+
 734Default is 512 MiB on all platforms.  This should be reasonable
 735for most projects as source code and other text files can still
 736be delta compressed, but larger binary media files won't be.
 737+
 738Common unit suffixes of 'k', 'm', or 'g' are supported.
 739
 740core.excludesFile::
 741        Specifies the pathname to the file that contains patterns to
 742        describe paths that are not meant to be tracked, in addition
 743        to '.gitignore' (per-directory) and '.git/info/exclude'.
 744        Defaults to `$XDG_CONFIG_HOME/git/ignore`.
 745        If `$XDG_CONFIG_HOME` is either not set or empty, `$HOME/.config/git/ignore`
 746        is used instead. See linkgit:gitignore[5].
 747
 748core.askPass::
 749        Some commands (e.g. svn and http interfaces) that interactively
 750        ask for a password can be told to use an external program given
 751        via the value of this variable. Can be overridden by the `GIT_ASKPASS`
 752        environment variable. If not set, fall back to the value of the
 753        `SSH_ASKPASS` environment variable or, failing that, a simple password
 754        prompt. The external program shall be given a suitable prompt as
 755        command-line argument and write the password on its STDOUT.
 756
 757core.attributesFile::
 758        In addition to '.gitattributes' (per-directory) and
 759        '.git/info/attributes', Git looks into this file for attributes
 760        (see linkgit:gitattributes[5]). Path expansions are made the same
 761        way as for `core.excludesFile`. Its default value is
 762        `$XDG_CONFIG_HOME/git/attributes`. If `$XDG_CONFIG_HOME` is either not
 763        set or empty, `$HOME/.config/git/attributes` is used instead.
 764
 765core.hooksPath::
 766        By default Git will look for your hooks in the
 767        '$GIT_DIR/hooks' directory. Set this to different path,
 768        e.g. '/etc/git/hooks', and Git will try to find your hooks in
 769        that directory, e.g. '/etc/git/hooks/pre-receive' instead of
 770        in '$GIT_DIR/hooks/pre-receive'.
 771+
 772The path can be either absolute or relative. A relative path is
 773taken as relative to the directory where the hooks are run (see
 774the "DESCRIPTION" section of linkgit:githooks[5]).
 775+
 776This configuration variable is useful in cases where you'd like to
 777centrally configure your Git hooks instead of configuring them on a
 778per-repository basis, or as a more flexible and centralized
 779alternative to having an `init.templateDir` where you've changed
 780default hooks.
 781
 782core.editor::
 783        Commands such as `commit` and `tag` that let you edit
 784        messages by launching an editor use the value of this
 785        variable when it is set, and the environment variable
 786        `GIT_EDITOR` is not set.  See linkgit:git-var[1].
 787
 788core.commentChar::
 789        Commands such as `commit` and `tag` that let you edit
 790        messages consider a line that begins with this character
 791        commented, and removes them after the editor returns
 792        (default '#').
 793+
 794If set to "auto", `git-commit` would select a character that is not
 795the beginning character of any line in existing commit messages.
 796
 797core.filesRefLockTimeout::
 798        The length of time, in milliseconds, to retry when trying to
 799        lock an individual reference. Value 0 means not to retry at
 800        all; -1 means to try indefinitely. Default is 100 (i.e.,
 801        retry for 100ms).
 802
 803core.packedRefsTimeout::
 804        The length of time, in milliseconds, to retry when trying to
 805        lock the `packed-refs` file. Value 0 means not to retry at
 806        all; -1 means to try indefinitely. Default is 1000 (i.e.,
 807        retry for 1 second).
 808
 809sequence.editor::
 810        Text editor used by `git rebase -i` for editing the rebase instruction file.
 811        The value is meant to be interpreted by the shell when it is used.
 812        It can be overridden by the `GIT_SEQUENCE_EDITOR` environment variable.
 813        When not configured the default commit message editor is used instead.
 814
 815core.pager::
 816        Text viewer for use by Git commands (e.g., 'less').  The value
 817        is meant to be interpreted by the shell.  The order of preference
 818        is the `$GIT_PAGER` environment variable, then `core.pager`
 819        configuration, then `$PAGER`, and then the default chosen at
 820        compile time (usually 'less').
 821+
 822When the `LESS` environment variable is unset, Git sets it to `FRX`
 823(if `LESS` environment variable is set, Git does not change it at
 824all).  If you want to selectively override Git's default setting
 825for `LESS`, you can set `core.pager` to e.g. `less -S`.  This will
 826be passed to the shell by Git, which will translate the final
 827command to `LESS=FRX less -S`. The environment does not set the
 828`S` option but the command line does, instructing less to truncate
 829long lines. Similarly, setting `core.pager` to `less -+F` will
 830deactivate the `F` option specified by the environment from the
 831command-line, deactivating the "quit if one screen" behavior of
 832`less`.  One can specifically activate some flags for particular
 833commands: for example, setting `pager.blame` to `less -S` enables
 834line truncation only for `git blame`.
 835+
 836Likewise, when the `LV` environment variable is unset, Git sets it
 837to `-c`.  You can override this setting by exporting `LV` with
 838another value or setting `core.pager` to `lv +c`.
 839
 840core.whitespace::
 841        A comma separated list of common whitespace problems to
 842        notice.  'git diff' will use `color.diff.whitespace` to
 843        highlight them, and 'git apply --whitespace=error' will
 844        consider them as errors.  You can prefix `-` to disable
 845        any of them (e.g. `-trailing-space`):
 846+
 847* `blank-at-eol` treats trailing whitespaces at the end of the line
 848  as an error (enabled by default).
 849* `space-before-tab` treats a space character that appears immediately
 850  before a tab character in the initial indent part of the line as an
 851  error (enabled by default).
 852* `indent-with-non-tab` treats a line that is indented with space
 853  characters instead of the equivalent tabs as an error (not enabled by
 854  default).
 855* `tab-in-indent` treats a tab character in the initial indent part of
 856  the line as an error (not enabled by default).
 857* `blank-at-eof` treats blank lines added at the end of file as an error
 858  (enabled by default).
 859* `trailing-space` is a short-hand to cover both `blank-at-eol` and
 860  `blank-at-eof`.
 861* `cr-at-eol` treats a carriage-return at the end of line as
 862  part of the line terminator, i.e. with it, `trailing-space`
 863  does not trigger if the character before such a carriage-return
 864  is not a whitespace (not enabled by default).
 865* `tabwidth=<n>` tells how many character positions a tab occupies; this
 866  is relevant for `indent-with-non-tab` and when Git fixes `tab-in-indent`
 867  errors. The default tab width is 8. Allowed values are 1 to 63.
 868
 869core.fsyncObjectFiles::
 870        This boolean will enable 'fsync()' when writing object files.
 871+
 872This is a total waste of time and effort on a filesystem that orders
 873data writes properly, but can be useful for filesystems that do not use
 874journalling (traditional UNIX filesystems) or that only journal metadata
 875and not file contents (OS X's HFS+, or Linux ext3 with "data=writeback").
 876
 877core.preloadIndex::
 878        Enable parallel index preload for operations like 'git diff'
 879+
 880This can speed up operations like 'git diff' and 'git status' especially
 881on filesystems like NFS that have weak caching semantics and thus
 882relatively high IO latencies.  When enabled, Git will do the
 883index comparison to the filesystem data in parallel, allowing
 884overlapping IO's.  Defaults to true.
 885
 886core.createObject::
 887        You can set this to 'link', in which case a hardlink followed by
 888        a delete of the source are used to make sure that object creation
 889        will not overwrite existing objects.
 890+
 891On some file system/operating system combinations, this is unreliable.
 892Set this config setting to 'rename' there; However, This will remove the
 893check that makes sure that existing object files will not get overwritten.
 894
 895core.notesRef::
 896        When showing commit messages, also show notes which are stored in
 897        the given ref.  The ref must be fully qualified.  If the given
 898        ref does not exist, it is not an error but means that no
 899        notes should be printed.
 900+
 901This setting defaults to "refs/notes/commits", and it can be overridden by
 902the `GIT_NOTES_REF` environment variable.  See linkgit:git-notes[1].
 903
 904core.sparseCheckout::
 905        Enable "sparse checkout" feature. See section "Sparse checkout" in
 906        linkgit:git-read-tree[1] for more information.
 907
 908core.abbrev::
 909        Set the length object names are abbreviated to.  If
 910        unspecified or set to "auto", an appropriate value is
 911        computed based on the approximate number of packed objects
 912        in your repository, which hopefully is enough for
 913        abbreviated object names to stay unique for some time.
 914        The minimum length is 4.
 915
 916add.ignoreErrors::
 917add.ignore-errors (deprecated)::
 918        Tells 'git add' to continue adding files when some files cannot be
 919        added due to indexing errors. Equivalent to the `--ignore-errors`
 920        option of linkgit:git-add[1].  `add.ignore-errors` is deprecated,
 921        as it does not follow the usual naming convention for configuration
 922        variables.
 923
 924alias.*::
 925        Command aliases for the linkgit:git[1] command wrapper - e.g.
 926        after defining "alias.last = cat-file commit HEAD", the invocation
 927        "git last" is equivalent to "git cat-file commit HEAD". To avoid
 928        confusion and troubles with script usage, aliases that
 929        hide existing Git commands are ignored. Arguments are split by
 930        spaces, the usual shell quoting and escaping is supported.
 931        A quote pair or a backslash can be used to quote them.
 932+
 933If the alias expansion is prefixed with an exclamation point,
 934it will be treated as a shell command.  For example, defining
 935"alias.new = !gitk --all --not ORIG_HEAD", the invocation
 936"git new" is equivalent to running the shell command
 937"gitk --all --not ORIG_HEAD".  Note that shell commands will be
 938executed from the top-level directory of a repository, which may
 939not necessarily be the current directory.
 940`GIT_PREFIX` is set as returned by running 'git rev-parse --show-prefix'
 941from the original current directory. See linkgit:git-rev-parse[1].
 942
 943am.keepcr::
 944        If true, git-am will call git-mailsplit for patches in mbox format
 945        with parameter `--keep-cr`. In this case git-mailsplit will
 946        not remove `\r` from lines ending with `\r\n`. Can be overridden
 947        by giving `--no-keep-cr` from the command line.
 948        See linkgit:git-am[1], linkgit:git-mailsplit[1].
 949
 950am.threeWay::
 951        By default, `git am` will fail if the patch does not apply cleanly. When
 952        set to true, this setting tells `git am` to fall back on 3-way merge if
 953        the patch records the identity of blobs it is supposed to apply to and
 954        we have those blobs available locally (equivalent to giving the `--3way`
 955        option from the command line). Defaults to `false`.
 956        See linkgit:git-am[1].
 957
 958apply.ignoreWhitespace::
 959        When set to 'change', tells 'git apply' to ignore changes in
 960        whitespace, in the same way as the `--ignore-space-change`
 961        option.
 962        When set to one of: no, none, never, false tells 'git apply' to
 963        respect all whitespace differences.
 964        See linkgit:git-apply[1].
 965
 966apply.whitespace::
 967        Tells 'git apply' how to handle whitespaces, in the same way
 968        as the `--whitespace` option. See linkgit:git-apply[1].
 969
 970blame.showRoot::
 971        Do not treat root commits as boundaries in linkgit:git-blame[1].
 972        This option defaults to false.
 973
 974blame.blankBoundary::
 975        Show blank commit object name for boundary commits in
 976        linkgit:git-blame[1]. This option defaults to false.
 977
 978blame.showEmail::
 979        Show the author email instead of author name in linkgit:git-blame[1].
 980        This option defaults to false.
 981
 982blame.date::
 983        Specifies the format used to output dates in linkgit:git-blame[1].
 984        If unset the iso format is used. For supported values,
 985        see the discussion of the `--date` option at linkgit:git-log[1].
 986
 987branch.autoSetupMerge::
 988        Tells 'git branch' and 'git checkout' to set up new branches
 989        so that linkgit:git-pull[1] will appropriately merge from the
 990        starting point branch. Note that even if this option is not set,
 991        this behavior can be chosen per-branch using the `--track`
 992        and `--no-track` options. The valid settings are: `false` -- no
 993        automatic setup is done; `true` -- automatic setup is done when the
 994        starting point is a remote-tracking branch; `always` --
 995        automatic setup is done when the starting point is either a
 996        local branch or remote-tracking
 997        branch. This option defaults to true.
 998
 999branch.autoSetupRebase::
1000        When a new branch is created with 'git branch' or 'git checkout'
1001        that tracks another branch, this variable tells Git to set
1002        up pull to rebase instead of merge (see "branch.<name>.rebase").
1003        When `never`, rebase is never automatically set to true.
1004        When `local`, rebase is set to true for tracked branches of
1005        other local branches.
1006        When `remote`, rebase is set to true for tracked branches of
1007        remote-tracking branches.
1008        When `always`, rebase will be set to true for all tracking
1009        branches.
1010        See "branch.autoSetupMerge" for details on how to set up a
1011        branch to track another branch.
1012        This option defaults to never.
1013
1014branch.<name>.remote::
1015        When on branch <name>, it tells 'git fetch' and 'git push'
1016        which remote to fetch from/push to.  The remote to push to
1017        may be overridden with `remote.pushDefault` (for all branches).
1018        The remote to push to, for the current branch, may be further
1019        overridden by `branch.<name>.pushRemote`.  If no remote is
1020        configured, or if you are not on any branch, it defaults to
1021        `origin` for fetching and `remote.pushDefault` for pushing.
1022        Additionally, `.` (a period) is the current local repository
1023        (a dot-repository), see `branch.<name>.merge`'s final note below.
1024
1025branch.<name>.pushRemote::
1026        When on branch <name>, it overrides `branch.<name>.remote` for
1027        pushing.  It also overrides `remote.pushDefault` for pushing
1028        from branch <name>.  When you pull from one place (e.g. your
1029        upstream) and push to another place (e.g. your own publishing
1030        repository), you would want to set `remote.pushDefault` to
1031        specify the remote to push to for all branches, and use this
1032        option to override it for a specific branch.
1033
1034branch.<name>.merge::
1035        Defines, together with branch.<name>.remote, the upstream branch
1036        for the given branch. It tells 'git fetch'/'git pull'/'git rebase' which
1037        branch to merge and can also affect 'git push' (see push.default).
1038        When in branch <name>, it tells 'git fetch' the default
1039        refspec to be marked for merging in FETCH_HEAD. The value is
1040        handled like the remote part of a refspec, and must match a
1041        ref which is fetched from the remote given by
1042        "branch.<name>.remote".
1043        The merge information is used by 'git pull' (which at first calls
1044        'git fetch') to lookup the default branch for merging. Without
1045        this option, 'git pull' defaults to merge the first refspec fetched.
1046        Specify multiple values to get an octopus merge.
1047        If you wish to setup 'git pull' so that it merges into <name> from
1048        another branch in the local repository, you can point
1049        branch.<name>.merge to the desired branch, and use the relative path
1050        setting `.` (a period) for branch.<name>.remote.
1051
1052branch.<name>.mergeOptions::
1053        Sets default options for merging into branch <name>. The syntax and
1054        supported options are the same as those of linkgit:git-merge[1], but
1055        option values containing whitespace characters are currently not
1056        supported.
1057
1058branch.<name>.rebase::
1059        When true, rebase the branch <name> on top of the fetched branch,
1060        instead of merging the default branch from the default remote when
1061        "git pull" is run. See "pull.rebase" for doing this in a non
1062        branch-specific manner.
1063+
1064When preserve, also pass `--preserve-merges` along to 'git rebase'
1065so that locally committed merge commits will not be flattened
1066by running 'git pull'.
1067+
1068When the value is `interactive`, the rebase is run in interactive mode.
1069+
1070*NOTE*: this is a possibly dangerous operation; do *not* use
1071it unless you understand the implications (see linkgit:git-rebase[1]
1072for details).
1073
1074branch.<name>.description::
1075        Branch description, can be edited with
1076        `git branch --edit-description`. Branch description is
1077        automatically added in the format-patch cover letter or
1078        request-pull summary.
1079
1080browser.<tool>.cmd::
1081        Specify the command to invoke the specified browser. The
1082        specified command is evaluated in shell with the URLs passed
1083        as arguments. (See linkgit:git-web{litdd}browse[1].)
1084
1085browser.<tool>.path::
1086        Override the path for the given tool that may be used to
1087        browse HTML help (see `-w` option in linkgit:git-help[1]) or a
1088        working repository in gitweb (see linkgit:git-instaweb[1]).
1089
1090clean.requireForce::
1091        A boolean to make git-clean do nothing unless given -f,
1092        -i or -n.   Defaults to true.
1093
1094color.branch::
1095        A boolean to enable/disable color in the output of
1096        linkgit:git-branch[1]. May be set to `always`,
1097        `false` (or `never`) or `auto` (or `true`), in which case colors are used
1098        only when the output is to a terminal. If unset, then the
1099        value of `color.ui` is used (`auto` by default).
1100
1101color.branch.<slot>::
1102        Use customized color for branch coloration. `<slot>` is one of
1103        `current` (the current branch), `local` (a local branch),
1104        `remote` (a remote-tracking branch in refs/remotes/),
1105        `upstream` (upstream tracking branch), `plain` (other
1106        refs).
1107
1108color.diff::
1109        Whether to use ANSI escape sequences to add color to patches.
1110        If this is set to `always`, linkgit:git-diff[1],
1111        linkgit:git-log[1], and linkgit:git-show[1] will use color
1112        for all patches.  If it is set to `true` or `auto`, those
1113        commands will only use color when output is to the terminal.
1114        If unset, then the value of `color.ui` is used (`auto` by
1115        default).
1116+
1117This does not affect linkgit:git-format-patch[1] or the
1118'git-diff-{asterisk}' plumbing commands.  Can be overridden on the
1119command line with the `--color[=<when>]` option.
1120
1121diff.colorMoved::
1122        If set to either a valid `<mode>` or a true value, moved lines
1123        in a diff are colored differently, for details of valid modes
1124        see '--color-moved' in linkgit:git-diff[1]. If simply set to
1125        true the default color mode will be used. When set to false,
1126        moved lines are not colored.
1127
1128color.diff.<slot>::
1129        Use customized color for diff colorization.  `<slot>` specifies
1130        which part of the patch to use the specified color, and is one
1131        of `context` (context text - `plain` is a historical synonym),
1132        `meta` (metainformation), `frag`
1133        (hunk header), 'func' (function in hunk header), `old` (removed lines),
1134        `new` (added lines), `commit` (commit headers), `whitespace`
1135        (highlighting whitespace errors), `oldMoved` (deleted lines),
1136        `newMoved` (added lines), `oldMovedDimmed`, `oldMovedAlternative`,
1137        `oldMovedAlternativeDimmed`, `newMovedDimmed`, `newMovedAlternative`
1138        and `newMovedAlternativeDimmed` (See the '<mode>'
1139        setting of '--color-moved' in linkgit:git-diff[1] for details).
1140
1141color.decorate.<slot>::
1142        Use customized color for 'git log --decorate' output.  `<slot>` is one
1143        of `branch`, `remoteBranch`, `tag`, `stash` or `HEAD` for local
1144        branches, remote-tracking branches, tags, stash and HEAD, respectively.
1145
1146color.grep::
1147        When set to `always`, always highlight matches.  When `false` (or
1148        `never`), never.  When set to `true` or `auto`, use color only
1149        when the output is written to the terminal.  If unset, then the
1150        value of `color.ui` is used (`auto` by default).
1151
1152color.grep.<slot>::
1153        Use customized color for grep colorization.  `<slot>` specifies which
1154        part of the line to use the specified color, and is one of
1155+
1156--
1157`context`;;
1158        non-matching text in context lines (when using `-A`, `-B`, or `-C`)
1159`filename`;;
1160        filename prefix (when not using `-h`)
1161`function`;;
1162        function name lines (when using `-p`)
1163`linenumber`;;
1164        line number prefix (when using `-n`)
1165`match`;;
1166        matching text (same as setting `matchContext` and `matchSelected`)
1167`matchContext`;;
1168        matching text in context lines
1169`matchSelected`;;
1170        matching text in selected lines
1171`selected`;;
1172        non-matching text in selected lines
1173`separator`;;
1174        separators between fields on a line (`:`, `-`, and `=`)
1175        and between hunks (`--`)
1176--
1177
1178color.interactive::
1179        When set to `always`, always use colors for interactive prompts
1180        and displays (such as those used by "git-add --interactive" and
1181        "git-clean --interactive"). When false (or `never`), never.
1182        When set to `true` or `auto`, use colors only when the output is
1183        to the terminal. If unset, then the value of `color.ui` is
1184        used (`auto` by default).
1185
1186color.interactive.<slot>::
1187        Use customized color for 'git add --interactive' and 'git clean
1188        --interactive' output. `<slot>` may be `prompt`, `header`, `help`
1189        or `error`, for four distinct types of normal output from
1190        interactive commands.
1191
1192color.pager::
1193        A boolean to enable/disable colored output when the pager is in
1194        use (default is true).
1195
1196color.showBranch::
1197        A boolean to enable/disable color in the output of
1198        linkgit:git-show-branch[1]. May be set to `always`,
1199        `false` (or `never`) or `auto` (or `true`), in which case colors are used
1200        only when the output is to a terminal. If unset, then the
1201        value of `color.ui` is used (`auto` by default).
1202
1203color.status::
1204        A boolean to enable/disable color in the output of
1205        linkgit:git-status[1]. May be set to `always`,
1206        `false` (or `never`) or `auto` (or `true`), in which case colors are used
1207        only when the output is to a terminal. If unset, then the
1208        value of `color.ui` is used (`auto` by default).
1209
1210color.status.<slot>::
1211        Use customized color for status colorization. `<slot>` is
1212        one of `header` (the header text of the status message),
1213        `added` or `updated` (files which are added but not committed),
1214        `changed` (files which are changed but not added in the index),
1215        `untracked` (files which are not tracked by Git),
1216        `branch` (the current branch),
1217        `nobranch` (the color the 'no branch' warning is shown in, defaulting
1218        to red),
1219        `localBranch` or `remoteBranch` (the local and remote branch names,
1220        respectively, when branch and tracking information is displayed in the
1221        status short-format), or
1222        `unmerged` (files which have unmerged changes).
1223
1224color.ui::
1225        This variable determines the default value for variables such
1226        as `color.diff` and `color.grep` that control the use of color
1227        per command family. Its scope will expand as more commands learn
1228        configuration to set a default for the `--color` option.  Set it
1229        to `false` or `never` if you prefer Git commands not to use
1230        color unless enabled explicitly with some other configuration
1231        or the `--color` option. Set it to `always` if you want all
1232        output not intended for machine consumption to use color, to
1233        `true` or `auto` (this is the default since Git 1.8.4) if you
1234        want such output to use color when written to the terminal.
1235
1236column.ui::
1237        Specify whether supported commands should output in columns.
1238        This variable consists of a list of tokens separated by spaces
1239        or commas:
1240+
1241These options control when the feature should be enabled
1242(defaults to 'never'):
1243+
1244--
1245`always`;;
1246        always show in columns
1247`never`;;
1248        never show in columns
1249`auto`;;
1250        show in columns if the output is to the terminal
1251--
1252+
1253These options control layout (defaults to 'column').  Setting any
1254of these implies 'always' if none of 'always', 'never', or 'auto' are
1255specified.
1256+
1257--
1258`column`;;
1259        fill columns before rows
1260`row`;;
1261        fill rows before columns
1262`plain`;;
1263        show in one column
1264--
1265+
1266Finally, these options can be combined with a layout option (defaults
1267to 'nodense'):
1268+
1269--
1270`dense`;;
1271        make unequal size columns to utilize more space
1272`nodense`;;
1273        make equal size columns
1274--
1275
1276column.branch::
1277        Specify whether to output branch listing in `git branch` in columns.
1278        See `column.ui` for details.
1279
1280column.clean::
1281        Specify the layout when list items in `git clean -i`, which always
1282        shows files and directories in columns. See `column.ui` for details.
1283
1284column.status::
1285        Specify whether to output untracked files in `git status` in columns.
1286        See `column.ui` for details.
1287
1288column.tag::
1289        Specify whether to output tag listing in `git tag` in columns.
1290        See `column.ui` for details.
1291
1292commit.cleanup::
1293        This setting overrides the default of the `--cleanup` option in
1294        `git commit`. See linkgit:git-commit[1] for details. Changing the
1295        default can be useful when you always want to keep lines that begin
1296        with comment character `#` in your log message, in which case you
1297        would do `git config commit.cleanup whitespace` (note that you will
1298        have to remove the help lines that begin with `#` in the commit log
1299        template yourself, if you do this).
1300
1301commit.gpgSign::
1302
1303        A boolean to specify whether all commits should be GPG signed.
1304        Use of this option when doing operations such as rebase can
1305        result in a large number of commits being signed. It may be
1306        convenient to use an agent to avoid typing your GPG passphrase
1307        several times.
1308
1309commit.status::
1310        A boolean to enable/disable inclusion of status information in the
1311        commit message template when using an editor to prepare the commit
1312        message.  Defaults to true.
1313
1314commit.template::
1315        Specify the pathname of a file to use as the template for
1316        new commit messages.
1317
1318commit.verbose::
1319        A boolean or int to specify the level of verbose with `git commit`.
1320        See linkgit:git-commit[1].
1321
1322credential.helper::
1323        Specify an external helper to be called when a username or
1324        password credential is needed; the helper may consult external
1325        storage to avoid prompting the user for the credentials. Note
1326        that multiple helpers may be defined. See linkgit:gitcredentials[7]
1327        for details.
1328
1329credential.useHttpPath::
1330        When acquiring credentials, consider the "path" component of an http
1331        or https URL to be important. Defaults to false. See
1332        linkgit:gitcredentials[7] for more information.
1333
1334credential.username::
1335        If no username is set for a network authentication, use this username
1336        by default. See credential.<context>.* below, and
1337        linkgit:gitcredentials[7].
1338
1339credential.<url>.*::
1340        Any of the credential.* options above can be applied selectively to
1341        some credentials. For example "credential.https://example.com.username"
1342        would set the default username only for https connections to
1343        example.com. See linkgit:gitcredentials[7] for details on how URLs are
1344        matched.
1345
1346credentialCache.ignoreSIGHUP::
1347        Tell git-credential-cache--daemon to ignore SIGHUP, instead of quitting.
1348
1349include::diff-config.txt[]
1350
1351difftool.<tool>.path::
1352        Override the path for the given tool.  This is useful in case
1353        your tool is not in the PATH.
1354
1355difftool.<tool>.cmd::
1356        Specify the command to invoke the specified diff tool.
1357        The specified command is evaluated in shell with the following
1358        variables available:  'LOCAL' is set to the name of the temporary
1359        file containing the contents of the diff pre-image and 'REMOTE'
1360        is set to the name of the temporary file containing the contents
1361        of the diff post-image.
1362
1363difftool.prompt::
1364        Prompt before each invocation of the diff tool.
1365
1366fastimport.unpackLimit::
1367        If the number of objects imported by linkgit:git-fast-import[1]
1368        is below this limit, then the objects will be unpacked into
1369        loose object files.  However if the number of imported objects
1370        equals or exceeds this limit then the pack will be stored as a
1371        pack.  Storing the pack from a fast-import can make the import
1372        operation complete faster, especially on slow filesystems.  If
1373        not set, the value of `transfer.unpackLimit` is used instead.
1374
1375fetch.recurseSubmodules::
1376        This option can be either set to a boolean value or to 'on-demand'.
1377        Setting it to a boolean changes the behavior of fetch and pull to
1378        unconditionally recurse into submodules when set to true or to not
1379        recurse at all when set to false. When set to 'on-demand' (the default
1380        value), fetch and pull will only recurse into a populated submodule
1381        when its superproject retrieves a commit that updates the submodule's
1382        reference.
1383
1384fetch.fsckObjects::
1385        If it is set to true, git-fetch-pack will check all fetched
1386        objects. It will abort in the case of a malformed object or a
1387        broken link. The result of an abort are only dangling objects.
1388        Defaults to false. If not set, the value of `transfer.fsckObjects`
1389        is used instead.
1390
1391fetch.unpackLimit::
1392        If the number of objects fetched over the Git native
1393        transfer is below this
1394        limit, then the objects will be unpacked into loose object
1395        files. However if the number of received objects equals or
1396        exceeds this limit then the received pack will be stored as
1397        a pack, after adding any missing delta bases.  Storing the
1398        pack from a push can make the push operation complete faster,
1399        especially on slow filesystems.  If not set, the value of
1400        `transfer.unpackLimit` is used instead.
1401
1402fetch.prune::
1403        If true, fetch will automatically behave as if the `--prune`
1404        option was given on the command line.  See also `remote.<name>.prune`.
1405
1406fetch.output::
1407        Control how ref update status is printed. Valid values are
1408        `full` and `compact`. Default value is `full`. See section
1409        OUTPUT in linkgit:git-fetch[1] for detail.
1410
1411format.attach::
1412        Enable multipart/mixed attachments as the default for
1413        'format-patch'.  The value can also be a double quoted string
1414        which will enable attachments as the default and set the
1415        value as the boundary.  See the --attach option in
1416        linkgit:git-format-patch[1].
1417
1418format.from::
1419        Provides the default value for the `--from` option to format-patch.
1420        Accepts a boolean value, or a name and email address.  If false,
1421        format-patch defaults to `--no-from`, using commit authors directly in
1422        the "From:" field of patch mails.  If true, format-patch defaults to
1423        `--from`, using your committer identity in the "From:" field of patch
1424        mails and including a "From:" field in the body of the patch mail if
1425        different.  If set to a non-boolean value, format-patch uses that
1426        value instead of your committer identity.  Defaults to false.
1427
1428format.numbered::
1429        A boolean which can enable or disable sequence numbers in patch
1430        subjects.  It defaults to "auto" which enables it only if there
1431        is more than one patch.  It can be enabled or disabled for all
1432        messages by setting it to "true" or "false".  See --numbered
1433        option in linkgit:git-format-patch[1].
1434
1435format.headers::
1436        Additional email headers to include in a patch to be submitted
1437        by mail.  See linkgit:git-format-patch[1].
1438
1439format.to::
1440format.cc::
1441        Additional recipients to include in a patch to be submitted
1442        by mail.  See the --to and --cc options in
1443        linkgit:git-format-patch[1].
1444
1445format.subjectPrefix::
1446        The default for format-patch is to output files with the '[PATCH]'
1447        subject prefix. Use this variable to change that prefix.
1448
1449format.signature::
1450        The default for format-patch is to output a signature containing
1451        the Git version number. Use this variable to change that default.
1452        Set this variable to the empty string ("") to suppress
1453        signature generation.
1454
1455format.signatureFile::
1456        Works just like format.signature except the contents of the
1457        file specified by this variable will be used as the signature.
1458
1459format.suffix::
1460        The default for format-patch is to output files with the suffix
1461        `.patch`. Use this variable to change that suffix (make sure to
1462        include the dot if you want it).
1463
1464format.pretty::
1465        The default pretty format for log/show/whatchanged command,
1466        See linkgit:git-log[1], linkgit:git-show[1],
1467        linkgit:git-whatchanged[1].
1468
1469format.thread::
1470        The default threading style for 'git format-patch'.  Can be
1471        a boolean value, or `shallow` or `deep`.  `shallow` threading
1472        makes every mail a reply to the head of the series,
1473        where the head is chosen from the cover letter, the
1474        `--in-reply-to`, and the first patch mail, in this order.
1475        `deep` threading makes every mail a reply to the previous one.
1476        A true boolean value is the same as `shallow`, and a false
1477        value disables threading.
1478
1479format.signOff::
1480        A boolean value which lets you enable the `-s/--signoff` option of
1481        format-patch by default. *Note:* Adding the Signed-off-by: line to a
1482        patch should be a conscious act and means that you certify you have
1483        the rights to submit this work under the same open source license.
1484        Please see the 'SubmittingPatches' document for further discussion.
1485
1486format.coverLetter::
1487        A boolean that controls whether to generate a cover-letter when
1488        format-patch is invoked, but in addition can be set to "auto", to
1489        generate a cover-letter only when there's more than one patch.
1490
1491format.outputDirectory::
1492        Set a custom directory to store the resulting files instead of the
1493        current working directory.
1494
1495format.useAutoBase::
1496        A boolean value which lets you enable the `--base=auto` option of
1497        format-patch by default.
1498
1499filter.<driver>.clean::
1500        The command which is used to convert the content of a worktree
1501        file to a blob upon checkin.  See linkgit:gitattributes[5] for
1502        details.
1503
1504filter.<driver>.smudge::
1505        The command which is used to convert the content of a blob
1506        object to a worktree file upon checkout.  See
1507        linkgit:gitattributes[5] for details.
1508
1509fsck.<msg-id>::
1510        Allows overriding the message type (error, warn or ignore) of a
1511        specific message ID such as `missingEmail`.
1512+
1513For convenience, fsck prefixes the error/warning with the message ID,
1514e.g.  "missingEmail: invalid author/committer line - missing email" means
1515that setting `fsck.missingEmail = ignore` will hide that issue.
1516+
1517This feature is intended to support working with legacy repositories
1518which cannot be repaired without disruptive changes.
1519
1520fsck.skipList::
1521        The path to a sorted list of object names (i.e. one SHA-1 per
1522        line) that are known to be broken in a non-fatal way and should
1523        be ignored. This feature is useful when an established project
1524        should be accepted despite early commits containing errors that
1525        can be safely ignored such as invalid committer email addresses.
1526        Note: corrupt objects cannot be skipped with this setting.
1527
1528gc.aggressiveDepth::
1529        The depth parameter used in the delta compression
1530        algorithm used by 'git gc --aggressive'.  This defaults
1531        to 50.
1532
1533gc.aggressiveWindow::
1534        The window size parameter used in the delta compression
1535        algorithm used by 'git gc --aggressive'.  This defaults
1536        to 250.
1537
1538gc.auto::
1539        When there are approximately more than this many loose
1540        objects in the repository, `git gc --auto` will pack them.
1541        Some Porcelain commands use this command to perform a
1542        light-weight garbage collection from time to time.  The
1543        default value is 6700.  Setting this to 0 disables it.
1544
1545gc.autoPackLimit::
1546        When there are more than this many packs that are not
1547        marked with `*.keep` file in the repository, `git gc
1548        --auto` consolidates them into one larger pack.  The
1549        default value is 50.  Setting this to 0 disables it.
1550
1551gc.autoDetach::
1552        Make `git gc --auto` return immediately and run in background
1553        if the system supports it. Default is true.
1554
1555gc.logExpiry::
1556        If the file gc.log exists, then `git gc --auto` won't run
1557        unless that file is more than 'gc.logExpiry' old.  Default is
1558        "1.day".  See `gc.pruneExpire` for more ways to specify its
1559        value.
1560
1561gc.packRefs::
1562        Running `git pack-refs` in a repository renders it
1563        unclonable by Git versions prior to 1.5.1.2 over dumb
1564        transports such as HTTP.  This variable determines whether
1565        'git gc' runs `git pack-refs`. This can be set to `notbare`
1566        to enable it within all non-bare repos or it can be set to a
1567        boolean value.  The default is `true`.
1568
1569gc.pruneExpire::
1570        When 'git gc' is run, it will call 'prune --expire 2.weeks.ago'.
1571        Override the grace period with this config variable.  The value
1572        "now" may be used to disable this grace period and always prune
1573        unreachable objects immediately, or "never" may be used to
1574        suppress pruning.  This feature helps prevent corruption when
1575        'git gc' runs concurrently with another process writing to the
1576        repository; see the "NOTES" section of linkgit:git-gc[1].
1577
1578gc.worktreePruneExpire::
1579        When 'git gc' is run, it calls
1580        'git worktree prune --expire 3.months.ago'.
1581        This config variable can be used to set a different grace
1582        period. The value "now" may be used to disable the grace
1583        period and prune `$GIT_DIR/worktrees` immediately, or "never"
1584        may be used to suppress pruning.
1585
1586gc.reflogExpire::
1587gc.<pattern>.reflogExpire::
1588        'git reflog expire' removes reflog entries older than
1589        this time; defaults to 90 days. The value "now" expires all
1590        entries immediately, and "never" suppresses expiration
1591        altogether. With "<pattern>" (e.g.
1592        "refs/stash") in the middle the setting applies only to
1593        the refs that match the <pattern>.
1594
1595gc.reflogExpireUnreachable::
1596gc.<pattern>.reflogExpireUnreachable::
1597        'git reflog expire' removes reflog entries older than
1598        this time and are not reachable from the current tip;
1599        defaults to 30 days. The value "now" expires all entries
1600        immediately, and "never" suppresses expiration altogether.
1601        With "<pattern>" (e.g. "refs/stash")
1602        in the middle, the setting applies only to the refs that
1603        match the <pattern>.
1604
1605gc.rerereResolved::
1606        Records of conflicted merge you resolved earlier are
1607        kept for this many days when 'git rerere gc' is run.
1608        You can also use more human-readable "1.month.ago", etc.
1609        The default is 60 days.  See linkgit:git-rerere[1].
1610
1611gc.rerereUnresolved::
1612        Records of conflicted merge you have not resolved are
1613        kept for this many days when 'git rerere gc' is run.
1614        You can also use more human-readable "1.month.ago", etc.
1615        The default is 15 days.  See linkgit:git-rerere[1].
1616
1617gitcvs.commitMsgAnnotation::
1618        Append this string to each commit message. Set to empty string
1619        to disable this feature. Defaults to "via git-CVS emulator".
1620
1621gitcvs.enabled::
1622        Whether the CVS server interface is enabled for this repository.
1623        See linkgit:git-cvsserver[1].
1624
1625gitcvs.logFile::
1626        Path to a log file where the CVS server interface well... logs
1627        various stuff. See linkgit:git-cvsserver[1].
1628
1629gitcvs.usecrlfattr::
1630        If true, the server will look up the end-of-line conversion
1631        attributes for files to determine the `-k` modes to use. If
1632        the attributes force Git to treat a file as text,
1633        the `-k` mode will be left blank so CVS clients will
1634        treat it as text. If they suppress text conversion, the file
1635        will be set with '-kb' mode, which suppresses any newline munging
1636        the client might otherwise do. If the attributes do not allow
1637        the file type to be determined, then `gitcvs.allBinary` is
1638        used. See linkgit:gitattributes[5].
1639
1640gitcvs.allBinary::
1641        This is used if `gitcvs.usecrlfattr` does not resolve
1642        the correct '-kb' mode to use. If true, all
1643        unresolved files are sent to the client in
1644        mode '-kb'. This causes the client to treat them
1645        as binary files, which suppresses any newline munging it
1646        otherwise might do. Alternatively, if it is set to "guess",
1647        then the contents of the file are examined to decide if
1648        it is binary, similar to `core.autocrlf`.
1649
1650gitcvs.dbName::
1651        Database used by git-cvsserver to cache revision information
1652        derived from the Git repository. The exact meaning depends on the
1653        used database driver, for SQLite (which is the default driver) this
1654        is a filename. Supports variable substitution (see
1655        linkgit:git-cvsserver[1] for details). May not contain semicolons (`;`).
1656        Default: '%Ggitcvs.%m.sqlite'
1657
1658gitcvs.dbDriver::
1659        Used Perl DBI driver. You can specify any available driver
1660        for this here, but it might not work. git-cvsserver is tested
1661        with 'DBD::SQLite', reported to work with 'DBD::Pg', and
1662        reported *not* to work with 'DBD::mysql'. Experimental feature.
1663        May not contain double colons (`:`). Default: 'SQLite'.
1664        See linkgit:git-cvsserver[1].
1665
1666gitcvs.dbUser, gitcvs.dbPass::
1667        Database user and password. Only useful if setting `gitcvs.dbDriver`,
1668        since SQLite has no concept of database users and/or passwords.
1669        'gitcvs.dbUser' supports variable substitution (see
1670        linkgit:git-cvsserver[1] for details).
1671
1672gitcvs.dbTableNamePrefix::
1673        Database table name prefix.  Prepended to the names of any
1674        database tables used, allowing a single database to be used
1675        for several repositories.  Supports variable substitution (see
1676        linkgit:git-cvsserver[1] for details).  Any non-alphabetic
1677        characters will be replaced with underscores.
1678
1679All gitcvs variables except for `gitcvs.usecrlfattr` and
1680`gitcvs.allBinary` can also be specified as
1681'gitcvs.<access_method>.<varname>' (where 'access_method'
1682is one of "ext" and "pserver") to make them apply only for the given
1683access method.
1684
1685gitweb.category::
1686gitweb.description::
1687gitweb.owner::
1688gitweb.url::
1689        See linkgit:gitweb[1] for description.
1690
1691gitweb.avatar::
1692gitweb.blame::
1693gitweb.grep::
1694gitweb.highlight::
1695gitweb.patches::
1696gitweb.pickaxe::
1697gitweb.remote_heads::
1698gitweb.showSizes::
1699gitweb.snapshot::
1700        See linkgit:gitweb.conf[5] for description.
1701
1702grep.lineNumber::
1703        If set to true, enable `-n` option by default.
1704
1705grep.patternType::
1706        Set the default matching behavior. Using a value of 'basic', 'extended',
1707        'fixed', or 'perl' will enable the `--basic-regexp`, `--extended-regexp`,
1708        `--fixed-strings`, or `--perl-regexp` option accordingly, while the
1709        value 'default' will return to the default matching behavior.
1710
1711grep.extendedRegexp::
1712        If set to true, enable `--extended-regexp` option by default. This
1713        option is ignored when the `grep.patternType` option is set to a value
1714        other than 'default'.
1715
1716grep.threads::
1717        Number of grep worker threads to use.
1718        See `grep.threads` in linkgit:git-grep[1] for more information.
1719
1720grep.fallbackToNoIndex::
1721        If set to true, fall back to git grep --no-index if git grep
1722        is executed outside of a git repository.  Defaults to false.
1723
1724gpg.program::
1725        Use this custom program instead of "`gpg`" found on `$PATH` when
1726        making or verifying a PGP signature. The program must support the
1727        same command-line interface as GPG, namely, to verify a detached
1728        signature, "`gpg --verify $file - <$signature`" is run, and the
1729        program is expected to signal a good signature by exiting with
1730        code 0, and to generate an ASCII-armored detached signature, the
1731        standard input of "`gpg -bsau $key`" is fed with the contents to be
1732        signed, and the program is expected to send the result to its
1733        standard output.
1734
1735gui.commitMsgWidth::
1736        Defines how wide the commit message window is in the
1737        linkgit:git-gui[1]. "75" is the default.
1738
1739gui.diffContext::
1740        Specifies how many context lines should be used in calls to diff
1741        made by the linkgit:git-gui[1]. The default is "5".
1742
1743gui.displayUntracked::
1744        Determines if linkgit:git-gui[1] shows untracked files
1745        in the file list. The default is "true".
1746
1747gui.encoding::
1748        Specifies the default encoding to use for displaying of
1749        file contents in linkgit:git-gui[1] and linkgit:gitk[1].
1750        It can be overridden by setting the 'encoding' attribute
1751        for relevant files (see linkgit:gitattributes[5]).
1752        If this option is not set, the tools default to the
1753        locale encoding.
1754
1755gui.matchTrackingBranch::
1756        Determines if new branches created with linkgit:git-gui[1] should
1757        default to tracking remote branches with matching names or
1758        not. Default: "false".
1759
1760gui.newBranchTemplate::
1761        Is used as suggested name when creating new branches using the
1762        linkgit:git-gui[1].
1763
1764gui.pruneDuringFetch::
1765        "true" if linkgit:git-gui[1] should prune remote-tracking branches when
1766        performing a fetch. The default value is "false".
1767
1768gui.trustmtime::
1769        Determines if linkgit:git-gui[1] should trust the file modification
1770        timestamp or not. By default the timestamps are not trusted.
1771
1772gui.spellingDictionary::
1773        Specifies the dictionary used for spell checking commit messages in
1774        the linkgit:git-gui[1]. When set to "none" spell checking is turned
1775        off.
1776
1777gui.fastCopyBlame::
1778        If true, 'git gui blame' uses `-C` instead of `-C -C` for original
1779        location detection. It makes blame significantly faster on huge
1780        repositories at the expense of less thorough copy detection.
1781
1782gui.copyBlameThreshold::
1783        Specifies the threshold to use in 'git gui blame' original location
1784        detection, measured in alphanumeric characters. See the
1785        linkgit:git-blame[1] manual for more information on copy detection.
1786
1787gui.blamehistoryctx::
1788        Specifies the radius of history context in days to show in
1789        linkgit:gitk[1] for the selected commit, when the `Show History
1790        Context` menu item is invoked from 'git gui blame'. If this
1791        variable is set to zero, the whole history is shown.
1792
1793guitool.<name>.cmd::
1794        Specifies the shell command line to execute when the corresponding item
1795        of the linkgit:git-gui[1] `Tools` menu is invoked. This option is
1796        mandatory for every tool. The command is executed from the root of
1797        the working directory, and in the environment it receives the name of
1798        the tool as `GIT_GUITOOL`, the name of the currently selected file as
1799        'FILENAME', and the name of the current branch as 'CUR_BRANCH' (if
1800        the head is detached, 'CUR_BRANCH' is empty).
1801
1802guitool.<name>.needsFile::
1803        Run the tool only if a diff is selected in the GUI. It guarantees
1804        that 'FILENAME' is not empty.
1805
1806guitool.<name>.noConsole::
1807        Run the command silently, without creating a window to display its
1808        output.
1809
1810guitool.<name>.noRescan::
1811        Don't rescan the working directory for changes after the tool
1812        finishes execution.
1813
1814guitool.<name>.confirm::
1815        Show a confirmation dialog before actually running the tool.
1816
1817guitool.<name>.argPrompt::
1818        Request a string argument from the user, and pass it to the tool
1819        through the `ARGS` environment variable. Since requesting an
1820        argument implies confirmation, the 'confirm' option has no effect
1821        if this is enabled. If the option is set to 'true', 'yes', or '1',
1822        the dialog uses a built-in generic prompt; otherwise the exact
1823        value of the variable is used.
1824
1825guitool.<name>.revPrompt::
1826        Request a single valid revision from the user, and set the
1827        `REVISION` environment variable. In other aspects this option
1828        is similar to 'argPrompt', and can be used together with it.
1829
1830guitool.<name>.revUnmerged::
1831        Show only unmerged branches in the 'revPrompt' subdialog.
1832        This is useful for tools similar to merge or rebase, but not
1833        for things like checkout or reset.
1834
1835guitool.<name>.title::
1836        Specifies the title to use for the prompt dialog. The default
1837        is the tool name.
1838
1839guitool.<name>.prompt::
1840        Specifies the general prompt string to display at the top of
1841        the dialog, before subsections for 'argPrompt' and 'revPrompt'.
1842        The default value includes the actual command.
1843
1844help.browser::
1845        Specify the browser that will be used to display help in the
1846        'web' format. See linkgit:git-help[1].
1847
1848help.format::
1849        Override the default help format used by linkgit:git-help[1].
1850        Values 'man', 'info', 'web' and 'html' are supported. 'man' is
1851        the default. 'web' and 'html' are the same.
1852
1853help.autoCorrect::
1854        Automatically correct and execute mistyped commands after
1855        waiting for the given number of deciseconds (0.1 sec). If more
1856        than one command can be deduced from the entered text, nothing
1857        will be executed.  If the value of this option is negative,
1858        the corrected command will be executed immediately. If the
1859        value is 0 - the command will be just shown but not executed.
1860        This is the default.
1861
1862help.htmlPath::
1863        Specify the path where the HTML documentation resides. File system paths
1864        and URLs are supported. HTML pages will be prefixed with this path when
1865        help is displayed in the 'web' format. This defaults to the documentation
1866        path of your Git installation.
1867
1868http.proxy::
1869        Override the HTTP proxy, normally configured using the 'http_proxy',
1870        'https_proxy', and 'all_proxy' environment variables (see `curl(1)`). In
1871        addition to the syntax understood by curl, it is possible to specify a
1872        proxy string with a user name but no password, in which case git will
1873        attempt to acquire one in the same way it does for other credentials. See
1874        linkgit:gitcredentials[7] for more information. The syntax thus is
1875        '[protocol://][user[:password]@]proxyhost[:port]'. This can be overridden
1876        on a per-remote basis; see remote.<name>.proxy
1877
1878http.proxyAuthMethod::
1879        Set the method with which to authenticate against the HTTP proxy. This
1880        only takes effect if the configured proxy string contains a user name part
1881        (i.e. is of the form 'user@host' or 'user@host:port'). This can be
1882        overridden on a per-remote basis; see `remote.<name>.proxyAuthMethod`.
1883        Both can be overridden by the `GIT_HTTP_PROXY_AUTHMETHOD` environment
1884        variable.  Possible values are:
1885+
1886--
1887* `anyauth` - Automatically pick a suitable authentication method. It is
1888  assumed that the proxy answers an unauthenticated request with a 407
1889  status code and one or more Proxy-authenticate headers with supported
1890  authentication methods. This is the default.
1891* `basic` - HTTP Basic authentication
1892* `digest` - HTTP Digest authentication; this prevents the password from being
1893  transmitted to the proxy in clear text
1894* `negotiate` - GSS-Negotiate authentication (compare the --negotiate option
1895  of `curl(1)`)
1896* `ntlm` - NTLM authentication (compare the --ntlm option of `curl(1)`)
1897--
1898
1899http.emptyAuth::
1900        Attempt authentication without seeking a username or password.  This
1901        can be used to attempt GSS-Negotiate authentication without specifying
1902        a username in the URL, as libcurl normally requires a username for
1903        authentication.
1904
1905http.delegation::
1906        Control GSSAPI credential delegation. The delegation is disabled
1907        by default in libcurl since version 7.21.7. Set parameter to tell
1908        the server what it is allowed to delegate when it comes to user
1909        credentials. Used with GSS/kerberos. Possible values are:
1910+
1911--
1912* `none` - Don't allow any delegation.
1913* `policy` - Delegates if and only if the OK-AS-DELEGATE flag is set in the
1914  Kerberos service ticket, which is a matter of realm policy.
1915* `always` - Unconditionally allow the server to delegate.
1916--
1917
1918
1919http.extraHeader::
1920        Pass an additional HTTP header when communicating with a server.  If
1921        more than one such entry exists, all of them are added as extra
1922        headers.  To allow overriding the settings inherited from the system
1923        config, an empty value will reset the extra headers to the empty list.
1924
1925http.cookieFile::
1926        The pathname of a file containing previously stored cookie lines,
1927        which should be used
1928        in the Git http session, if they match the server. The file format
1929        of the file to read cookies from should be plain HTTP headers or
1930        the Netscape/Mozilla cookie file format (see `curl(1)`).
1931        NOTE that the file specified with http.cookieFile is used only as
1932        input unless http.saveCookies is set.
1933
1934http.saveCookies::
1935        If set, store cookies received during requests to the file specified by
1936        http.cookieFile. Has no effect if http.cookieFile is unset.
1937
1938http.sslVersion::
1939        The SSL version to use when negotiating an SSL connection, if you
1940        want to force the default.  The available and default version
1941        depend on whether libcurl was built against NSS or OpenSSL and the
1942        particular configuration of the crypto library in use. Internally
1943        this sets the 'CURLOPT_SSL_VERSION' option; see the libcurl
1944        documentation for more details on the format of this option and
1945        for the ssl version supported. Actually the possible values of
1946        this option are:
1947
1948        - sslv2
1949        - sslv3
1950        - tlsv1
1951        - tlsv1.0
1952        - tlsv1.1
1953        - tlsv1.2
1954
1955+
1956Can be overridden by the `GIT_SSL_VERSION` environment variable.
1957To force git to use libcurl's default ssl version and ignore any
1958explicit http.sslversion option, set `GIT_SSL_VERSION` to the
1959empty string.
1960
1961http.sslCipherList::
1962  A list of SSL ciphers to use when negotiating an SSL connection.
1963  The available ciphers depend on whether libcurl was built against
1964  NSS or OpenSSL and the particular configuration of the crypto
1965  library in use.  Internally this sets the 'CURLOPT_SSL_CIPHER_LIST'
1966  option; see the libcurl documentation for more details on the format
1967  of this list.
1968+
1969Can be overridden by the `GIT_SSL_CIPHER_LIST` environment variable.
1970To force git to use libcurl's default cipher list and ignore any
1971explicit http.sslCipherList option, set `GIT_SSL_CIPHER_LIST` to the
1972empty string.
1973
1974http.sslVerify::
1975        Whether to verify the SSL certificate when fetching or pushing
1976        over HTTPS. Defaults to true. Can be overridden by the
1977        `GIT_SSL_NO_VERIFY` environment variable.
1978
1979http.sslCert::
1980        File containing the SSL certificate when fetching or pushing
1981        over HTTPS. Can be overridden by the `GIT_SSL_CERT` environment
1982        variable.
1983
1984http.sslKey::
1985        File containing the SSL private key when fetching or pushing
1986        over HTTPS. Can be overridden by the `GIT_SSL_KEY` environment
1987        variable.
1988
1989http.sslCertPasswordProtected::
1990        Enable Git's password prompt for the SSL certificate.  Otherwise
1991        OpenSSL will prompt the user, possibly many times, if the
1992        certificate or private key is encrypted.  Can be overridden by the
1993        `GIT_SSL_CERT_PASSWORD_PROTECTED` environment variable.
1994
1995http.sslCAInfo::
1996        File containing the certificates to verify the peer with when
1997        fetching or pushing over HTTPS. Can be overridden by the
1998        `GIT_SSL_CAINFO` environment variable.
1999
2000http.sslCAPath::
2001        Path containing files with the CA certificates to verify the peer
2002        with when fetching or pushing over HTTPS. Can be overridden
2003        by the `GIT_SSL_CAPATH` environment variable.
2004
2005http.pinnedpubkey::
2006        Public key of the https service. It may either be the filename of
2007        a PEM or DER encoded public key file or a string starting with
2008        'sha256//' followed by the base64 encoded sha256 hash of the
2009        public key. See also libcurl 'CURLOPT_PINNEDPUBLICKEY'. git will
2010        exit with an error if this option is set but not supported by
2011        cURL.
2012
2013http.sslTry::
2014        Attempt to use AUTH SSL/TLS and encrypted data transfers
2015        when connecting via regular FTP protocol. This might be needed
2016        if the FTP server requires it for security reasons or you wish
2017        to connect securely whenever remote FTP server supports it.
2018        Default is false since it might trigger certificate verification
2019        errors on misconfigured servers.
2020
2021http.maxRequests::
2022        How many HTTP requests to launch in parallel. Can be overridden
2023        by the `GIT_HTTP_MAX_REQUESTS` environment variable. Default is 5.
2024
2025http.minSessions::
2026        The number of curl sessions (counted across slots) to be kept across
2027        requests. They will not be ended with curl_easy_cleanup() until
2028        http_cleanup() is invoked. If USE_CURL_MULTI is not defined, this
2029        value will be capped at 1. Defaults to 1.
2030
2031http.postBuffer::
2032        Maximum size in bytes of the buffer used by smart HTTP
2033        transports when POSTing data to the remote system.
2034        For requests larger than this buffer size, HTTP/1.1 and
2035        Transfer-Encoding: chunked is used to avoid creating a
2036        massive pack file locally.  Default is 1 MiB, which is
2037        sufficient for most requests.
2038
2039http.lowSpeedLimit, http.lowSpeedTime::
2040        If the HTTP transfer speed is less than 'http.lowSpeedLimit'
2041        for longer than 'http.lowSpeedTime' seconds, the transfer is aborted.
2042        Can be overridden by the `GIT_HTTP_LOW_SPEED_LIMIT` and
2043        `GIT_HTTP_LOW_SPEED_TIME` environment variables.
2044
2045http.noEPSV::
2046        A boolean which disables using of EPSV ftp command by curl.
2047        This can helpful with some "poor" ftp servers which don't
2048        support EPSV mode. Can be overridden by the `GIT_CURL_FTP_NO_EPSV`
2049        environment variable. Default is false (curl will use EPSV).
2050
2051http.userAgent::
2052        The HTTP USER_AGENT string presented to an HTTP server.  The default
2053        value represents the version of the client Git such as git/1.7.1.
2054        This option allows you to override this value to a more common value
2055        such as Mozilla/4.0.  This may be necessary, for instance, if
2056        connecting through a firewall that restricts HTTP connections to a set
2057        of common USER_AGENT strings (but not including those like git/1.7.1).
2058        Can be overridden by the `GIT_HTTP_USER_AGENT` environment variable.
2059
2060http.followRedirects::
2061        Whether git should follow HTTP redirects. If set to `true`, git
2062        will transparently follow any redirect issued by a server it
2063        encounters. If set to `false`, git will treat all redirects as
2064        errors. If set to `initial`, git will follow redirects only for
2065        the initial request to a remote, but not for subsequent
2066        follow-up HTTP requests. Since git uses the redirected URL as
2067        the base for the follow-up requests, this is generally
2068        sufficient. The default is `initial`.
2069
2070http.<url>.*::
2071        Any of the http.* options above can be applied selectively to some URLs.
2072        For a config key to match a URL, each element of the config key is
2073        compared to that of the URL, in the following order:
2074+
2075--
2076. Scheme (e.g., `https` in `https://example.com/`). This field
2077  must match exactly between the config key and the URL.
2078
2079. Host/domain name (e.g., `example.com` in `https://example.com/`).
2080  This field must match between the config key and the URL. It is
2081  possible to specify a `*` as part of the host name to match all subdomains
2082  at this level. `https://*.example.com/` for example would match
2083  `https://foo.example.com/`, but not `https://foo.bar.example.com/`.
2084
2085. Port number (e.g., `8080` in `http://example.com:8080/`).
2086  This field must match exactly between the config key and the URL.
2087  Omitted port numbers are automatically converted to the correct
2088  default for the scheme before matching.
2089
2090. Path (e.g., `repo.git` in `https://example.com/repo.git`). The
2091  path field of the config key must match the path field of the URL
2092  either exactly or as a prefix of slash-delimited path elements.  This means
2093  a config key with path `foo/` matches URL path `foo/bar`.  A prefix can only
2094  match on a slash (`/`) boundary.  Longer matches take precedence (so a config
2095  key with path `foo/bar` is a better match to URL path `foo/bar` than a config
2096  key with just path `foo/`).
2097
2098. User name (e.g., `user` in `https://user@example.com/repo.git`). If
2099  the config key has a user name it must match the user name in the
2100  URL exactly. If the config key does not have a user name, that
2101  config key will match a URL with any user name (including none),
2102  but at a lower precedence than a config key with a user name.
2103--
2104+
2105The list above is ordered by decreasing precedence; a URL that matches
2106a config key's path is preferred to one that matches its user name. For example,
2107if the URL is `https://user@example.com/foo/bar` a config key match of
2108`https://example.com/foo` will be preferred over a config key match of
2109`https://user@example.com`.
2110+
2111All URLs are normalized before attempting any matching (the password part,
2112if embedded in the URL, is always ignored for matching purposes) so that
2113equivalent URLs that are simply spelled differently will match properly.
2114Environment variable settings always override any matches.  The URLs that are
2115matched against are those given directly to Git commands.  This means any URLs
2116visited as a result of a redirection do not participate in matching.
2117
2118ssh.variant::
2119        By default, Git determines the command line arguments to use
2120        based on the basename of the configured SSH command (configured
2121        using the environment variable `GIT_SSH` or `GIT_SSH_COMMAND` or
2122        the config setting `core.sshCommand`). If the basename is
2123        unrecognized, Git will attempt to detect support of OpenSSH
2124        options by first invoking the configured SSH command with the
2125        `-G` (print configuration) option and will subsequently use
2126        OpenSSH options (if that is successful) or no options besides
2127        the host and remote command (if it fails).
2128+
2129The config variable `ssh.variant` can be set to override this detection.
2130Valid values are `ssh` (to use OpenSSH options), `plink`, `putty`,
2131`tortoiseplink`, `simple` (no options except the host and remote command).
2132The default auto-detection can be explicitly requested using the value
2133`auto`.  Any other value is treated as `ssh`.  This setting can also be
2134overridden via the environment variable `GIT_SSH_VARIANT`.
2135+
2136The current command-line parameters used for each variant are as
2137follows:
2138+
2139--
2140
2141* `ssh` - [-p port] [-4] [-6] [-o option] [username@]host command
2142
2143* `simple` - [username@]host command
2144
2145* `plink` or `putty` - [-P port] [-4] [-6] [username@]host command
2146
2147* `tortoiseplink` - [-P port] [-4] [-6] -batch [username@]host command
2148
2149--
2150+
2151Except for the `simple` variant, command-line parameters are likely to
2152change as git gains new features.
2153
2154i18n.commitEncoding::
2155        Character encoding the commit messages are stored in; Git itself
2156        does not care per se, but this information is necessary e.g. when
2157        importing commits from emails or in the gitk graphical history
2158        browser (and possibly at other places in the future or in other
2159        porcelains). See e.g. linkgit:git-mailinfo[1]. Defaults to 'utf-8'.
2160
2161i18n.logOutputEncoding::
2162        Character encoding the commit messages are converted to when
2163        running 'git log' and friends.
2164
2165imap::
2166        The configuration variables in the 'imap' section are described
2167        in linkgit:git-imap-send[1].
2168
2169index.version::
2170        Specify the version with which new index files should be
2171        initialized.  This does not affect existing repositories.
2172
2173init.templateDir::
2174        Specify the directory from which templates will be copied.
2175        (See the "TEMPLATE DIRECTORY" section of linkgit:git-init[1].)
2176
2177instaweb.browser::
2178        Specify the program that will be used to browse your working
2179        repository in gitweb. See linkgit:git-instaweb[1].
2180
2181instaweb.httpd::
2182        The HTTP daemon command-line to start gitweb on your working
2183        repository. See linkgit:git-instaweb[1].
2184
2185instaweb.local::
2186        If true the web server started by linkgit:git-instaweb[1] will
2187        be bound to the local IP (127.0.0.1).
2188
2189instaweb.modulePath::
2190        The default module path for linkgit:git-instaweb[1] to use
2191        instead of /usr/lib/apache2/modules.  Only used if httpd
2192        is Apache.
2193
2194instaweb.port::
2195        The port number to bind the gitweb httpd to. See
2196        linkgit:git-instaweb[1].
2197
2198interactive.singleKey::
2199        In interactive commands, allow the user to provide one-letter
2200        input with a single key (i.e., without hitting enter).
2201        Currently this is used by the `--patch` mode of
2202        linkgit:git-add[1], linkgit:git-checkout[1], linkgit:git-commit[1],
2203        linkgit:git-reset[1], and linkgit:git-stash[1]. Note that this
2204        setting is silently ignored if portable keystroke input
2205        is not available; requires the Perl module Term::ReadKey.
2206
2207interactive.diffFilter::
2208        When an interactive command (such as `git add --patch`) shows
2209        a colorized diff, git will pipe the diff through the shell
2210        command defined by this configuration variable. The command may
2211        mark up the diff further for human consumption, provided that it
2212        retains a one-to-one correspondence with the lines in the
2213        original diff. Defaults to disabled (no filtering).
2214
2215log.abbrevCommit::
2216        If true, makes linkgit:git-log[1], linkgit:git-show[1], and
2217        linkgit:git-whatchanged[1] assume `--abbrev-commit`. You may
2218        override this option with `--no-abbrev-commit`.
2219
2220log.date::
2221        Set the default date-time mode for the 'log' command.
2222        Setting a value for log.date is similar to using 'git log''s
2223        `--date` option.  See linkgit:git-log[1] for details.
2224
2225log.decorate::
2226        Print out the ref names of any commits that are shown by the log
2227        command. If 'short' is specified, the ref name prefixes 'refs/heads/',
2228        'refs/tags/' and 'refs/remotes/' will not be printed. If 'full' is
2229        specified, the full ref name (including prefix) will be printed.
2230        If 'auto' is specified, then if the output is going to a terminal,
2231        the ref names are shown as if 'short' were given, otherwise no ref
2232        names are shown. This is the same as the `--decorate` option
2233        of the `git log`.
2234
2235log.follow::
2236        If `true`, `git log` will act as if the `--follow` option was used when
2237        a single <path> is given.  This has the same limitations as `--follow`,
2238        i.e. it cannot be used to follow multiple files and does not work well
2239        on non-linear history.
2240
2241log.graphColors::
2242        A list of colors, separated by commas, that can be used to draw
2243        history lines in `git log --graph`.
2244
2245log.showRoot::
2246        If true, the initial commit will be shown as a big creation event.
2247        This is equivalent to a diff against an empty tree.
2248        Tools like linkgit:git-log[1] or linkgit:git-whatchanged[1], which
2249        normally hide the root commit will now show it. True by default.
2250
2251log.showSignature::
2252        If true, makes linkgit:git-log[1], linkgit:git-show[1], and
2253        linkgit:git-whatchanged[1] assume `--show-signature`.
2254
2255log.mailmap::
2256        If true, makes linkgit:git-log[1], linkgit:git-show[1], and
2257        linkgit:git-whatchanged[1] assume `--use-mailmap`.
2258
2259mailinfo.scissors::
2260        If true, makes linkgit:git-mailinfo[1] (and therefore
2261        linkgit:git-am[1]) act by default as if the --scissors option
2262        was provided on the command-line. When active, this features
2263        removes everything from the message body before a scissors
2264        line (i.e. consisting mainly of ">8", "8<" and "-").
2265
2266mailmap.file::
2267        The location of an augmenting mailmap file. The default
2268        mailmap, located in the root of the repository, is loaded
2269        first, then the mailmap file pointed to by this variable.
2270        The location of the mailmap file may be in a repository
2271        subdirectory, or somewhere outside of the repository itself.
2272        See linkgit:git-shortlog[1] and linkgit:git-blame[1].
2273
2274mailmap.blob::
2275        Like `mailmap.file`, but consider the value as a reference to a
2276        blob in the repository. If both `mailmap.file` and
2277        `mailmap.blob` are given, both are parsed, with entries from
2278        `mailmap.file` taking precedence. In a bare repository, this
2279        defaults to `HEAD:.mailmap`. In a non-bare repository, it
2280        defaults to empty.
2281
2282man.viewer::
2283        Specify the programs that may be used to display help in the
2284        'man' format. See linkgit:git-help[1].
2285
2286man.<tool>.cmd::
2287        Specify the command to invoke the specified man viewer. The
2288        specified command is evaluated in shell with the man page
2289        passed as argument. (See linkgit:git-help[1].)
2290
2291man.<tool>.path::
2292        Override the path for the given tool that may be used to
2293        display help in the 'man' format. See linkgit:git-help[1].
2294
2295include::merge-config.txt[]
2296
2297mergetool.<tool>.path::
2298        Override the path for the given tool.  This is useful in case
2299        your tool is not in the PATH.
2300
2301mergetool.<tool>.cmd::
2302        Specify the command to invoke the specified merge tool.  The
2303        specified command is evaluated in shell with the following
2304        variables available: 'BASE' is the name of a temporary file
2305        containing the common base of the files to be merged, if available;
2306        'LOCAL' is the name of a temporary file containing the contents of
2307        the file on the current branch; 'REMOTE' is the name of a temporary
2308        file containing the contents of the file from the branch being
2309        merged; 'MERGED' contains the name of the file to which the merge
2310        tool should write the results of a successful merge.
2311
2312mergetool.<tool>.trustExitCode::
2313        For a custom merge command, specify whether the exit code of
2314        the merge command can be used to determine whether the merge was
2315        successful.  If this is not set to true then the merge target file
2316        timestamp is checked and the merge assumed to have been successful
2317        if the file has been updated, otherwise the user is prompted to
2318        indicate the success of the merge.
2319
2320mergetool.meld.hasOutput::
2321        Older versions of `meld` do not support the `--output` option.
2322        Git will attempt to detect whether `meld` supports `--output`
2323        by inspecting the output of `meld --help`.  Configuring
2324        `mergetool.meld.hasOutput` will make Git skip these checks and
2325        use the configured value instead.  Setting `mergetool.meld.hasOutput`
2326        to `true` tells Git to unconditionally use the `--output` option,
2327        and `false` avoids using `--output`.
2328
2329mergetool.keepBackup::
2330        After performing a merge, the original file with conflict markers
2331        can be saved as a file with a `.orig` extension.  If this variable
2332        is set to `false` then this file is not preserved.  Defaults to
2333        `true` (i.e. keep the backup files).
2334
2335mergetool.keepTemporaries::
2336        When invoking a custom merge tool, Git uses a set of temporary
2337        files to pass to the tool. If the tool returns an error and this
2338        variable is set to `true`, then these temporary files will be
2339        preserved, otherwise they will be removed after the tool has
2340        exited. Defaults to `false`.
2341
2342mergetool.writeToTemp::
2343        Git writes temporary 'BASE', 'LOCAL', and 'REMOTE' versions of
2344        conflicting files in the worktree by default.  Git will attempt
2345        to use a temporary directory for these files when set `true`.
2346        Defaults to `false`.
2347
2348mergetool.prompt::
2349        Prompt before each invocation of the merge resolution program.
2350
2351notes.mergeStrategy::
2352        Which merge strategy to choose by default when resolving notes
2353        conflicts.  Must be one of `manual`, `ours`, `theirs`, `union`, or
2354        `cat_sort_uniq`.  Defaults to `manual`.  See "NOTES MERGE STRATEGIES"
2355        section of linkgit:git-notes[1] for more information on each strategy.
2356
2357notes.<name>.mergeStrategy::
2358        Which merge strategy to choose when doing a notes merge into
2359        refs/notes/<name>.  This overrides the more general
2360        "notes.mergeStrategy".  See the "NOTES MERGE STRATEGIES" section in
2361        linkgit:git-notes[1] for more information on the available strategies.
2362
2363notes.displayRef::
2364        The (fully qualified) refname from which to show notes when
2365        showing commit messages.  The value of this variable can be set
2366        to a glob, in which case notes from all matching refs will be
2367        shown.  You may also specify this configuration variable
2368        several times.  A warning will be issued for refs that do not
2369        exist, but a glob that does not match any refs is silently
2370        ignored.
2371+
2372This setting can be overridden with the `GIT_NOTES_DISPLAY_REF`
2373environment variable, which must be a colon separated list of refs or
2374globs.
2375+
2376The effective value of "core.notesRef" (possibly overridden by
2377GIT_NOTES_REF) is also implicitly added to the list of refs to be
2378displayed.
2379
2380notes.rewrite.<command>::
2381        When rewriting commits with <command> (currently `amend` or
2382        `rebase`) and this variable is set to `true`, Git
2383        automatically copies your notes from the original to the
2384        rewritten commit.  Defaults to `true`, but see
2385        "notes.rewriteRef" below.
2386
2387notes.rewriteMode::
2388        When copying notes during a rewrite (see the
2389        "notes.rewrite.<command>" option), determines what to do if
2390        the target commit already has a note.  Must be one of
2391        `overwrite`, `concatenate`, `cat_sort_uniq`, or `ignore`.
2392        Defaults to `concatenate`.
2393+
2394This setting can be overridden with the `GIT_NOTES_REWRITE_MODE`
2395environment variable.
2396
2397notes.rewriteRef::
2398        When copying notes during a rewrite, specifies the (fully
2399        qualified) ref whose notes should be copied.  The ref may be a
2400        glob, in which case notes in all matching refs will be copied.
2401        You may also specify this configuration several times.
2402+
2403Does not have a default value; you must configure this variable to
2404enable note rewriting.  Set it to `refs/notes/commits` to enable
2405rewriting for the default commit notes.
2406+
2407This setting can be overridden with the `GIT_NOTES_REWRITE_REF`
2408environment variable, which must be a colon separated list of refs or
2409globs.
2410
2411pack.window::
2412        The size of the window used by linkgit:git-pack-objects[1] when no
2413        window size is given on the command line. Defaults to 10.
2414
2415pack.depth::
2416        The maximum delta depth used by linkgit:git-pack-objects[1] when no
2417        maximum depth is given on the command line. Defaults to 50.
2418
2419pack.windowMemory::
2420        The maximum size of memory that is consumed by each thread
2421        in linkgit:git-pack-objects[1] for pack window memory when
2422        no limit is given on the command line.  The value can be
2423        suffixed with "k", "m", or "g".  When left unconfigured (or
2424        set explicitly to 0), there will be no limit.
2425
2426pack.compression::
2427        An integer -1..9, indicating the compression level for objects
2428        in a pack file. -1 is the zlib default. 0 means no
2429        compression, and 1..9 are various speed/size tradeoffs, 9 being
2430        slowest.  If not set,  defaults to core.compression.  If that is
2431        not set,  defaults to -1, the zlib default, which is "a default
2432        compromise between speed and compression (currently equivalent
2433        to level 6)."
2434+
2435Note that changing the compression level will not automatically recompress
2436all existing objects. You can force recompression by passing the -F option
2437to linkgit:git-repack[1].
2438
2439pack.deltaCacheSize::
2440        The maximum memory in bytes used for caching deltas in
2441        linkgit:git-pack-objects[1] before writing them out to a pack.
2442        This cache is used to speed up the writing object phase by not
2443        having to recompute the final delta result once the best match
2444        for all objects is found.  Repacking large repositories on machines
2445        which are tight with memory might be badly impacted by this though,
2446        especially if this cache pushes the system into swapping.
2447        A value of 0 means no limit. The smallest size of 1 byte may be
2448        used to virtually disable this cache. Defaults to 256 MiB.
2449
2450pack.deltaCacheLimit::
2451        The maximum size of a delta, that is cached in
2452        linkgit:git-pack-objects[1]. This cache is used to speed up the
2453        writing object phase by not having to recompute the final delta
2454        result once the best match for all objects is found. Defaults to 1000.
2455
2456pack.threads::
2457        Specifies the number of threads to spawn when searching for best
2458        delta matches.  This requires that linkgit:git-pack-objects[1]
2459        be compiled with pthreads otherwise this option is ignored with a
2460        warning. This is meant to reduce packing time on multiprocessor
2461        machines. The required amount of memory for the delta search window
2462        is however multiplied by the number of threads.
2463        Specifying 0 will cause Git to auto-detect the number of CPU's
2464        and set the number of threads accordingly.
2465
2466pack.indexVersion::
2467        Specify the default pack index version.  Valid values are 1 for
2468        legacy pack index used by Git versions prior to 1.5.2, and 2 for
2469        the new pack index with capabilities for packs larger than 4 GB
2470        as well as proper protection against the repacking of corrupted
2471        packs.  Version 2 is the default.  Note that version 2 is enforced
2472        and this config option ignored whenever the corresponding pack is
2473        larger than 2 GB.
2474+
2475If you have an old Git that does not understand the version 2 `*.idx` file,
2476cloning or fetching over a non native protocol (e.g. "http")
2477that will copy both `*.pack` file and corresponding `*.idx` file from the
2478other side may give you a repository that cannot be accessed with your
2479older version of Git. If the `*.pack` file is smaller than 2 GB, however,
2480you can use linkgit:git-index-pack[1] on the *.pack file to regenerate
2481the `*.idx` file.
2482
2483pack.packSizeLimit::
2484        The maximum size of a pack.  This setting only affects
2485        packing to a file when repacking, i.e. the git:// protocol
2486        is unaffected.  It can be overridden by the `--max-pack-size`
2487        option of linkgit:git-repack[1].  Reaching this limit results
2488        in the creation of multiple packfiles; which in turn prevents
2489        bitmaps from being created.
2490        The minimum size allowed is limited to 1 MiB.
2491        The default is unlimited.
2492        Common unit suffixes of 'k', 'm', or 'g' are
2493        supported.
2494
2495pack.useBitmaps::
2496        When true, git will use pack bitmaps (if available) when packing
2497        to stdout (e.g., during the server side of a fetch). Defaults to
2498        true. You should not generally need to turn this off unless
2499        you are debugging pack bitmaps.
2500
2501pack.writeBitmaps (deprecated)::
2502        This is a deprecated synonym for `repack.writeBitmaps`.
2503
2504pack.writeBitmapHashCache::
2505        When true, git will include a "hash cache" section in the bitmap
2506        index (if one is written). This cache can be used to feed git's
2507        delta heuristics, potentially leading to better deltas between
2508        bitmapped and non-bitmapped objects (e.g., when serving a fetch
2509        between an older, bitmapped pack and objects that have been
2510        pushed since the last gc). The downside is that it consumes 4
2511        bytes per object of disk space, and that JGit's bitmap
2512        implementation does not understand it, causing it to complain if
2513        Git and JGit are used on the same repository. Defaults to false.
2514
2515pager.<cmd>::
2516        If the value is boolean, turns on or off pagination of the
2517        output of a particular Git subcommand when writing to a tty.
2518        Otherwise, turns on pagination for the subcommand using the
2519        pager specified by the value of `pager.<cmd>`.  If `--paginate`
2520        or `--no-pager` is specified on the command line, it takes
2521        precedence over this option.  To disable pagination for all
2522        commands, set `core.pager` or `GIT_PAGER` to `cat`.
2523
2524pretty.<name>::
2525        Alias for a --pretty= format string, as specified in
2526        linkgit:git-log[1]. Any aliases defined here can be used just
2527        as the built-in pretty formats could. For example,
2528        running `git config pretty.changelog "format:* %H %s"`
2529        would cause the invocation `git log --pretty=changelog`
2530        to be equivalent to running `git log "--pretty=format:* %H %s"`.
2531        Note that an alias with the same name as a built-in format
2532        will be silently ignored.
2533
2534protocol.allow::
2535        If set, provide a user defined default policy for all protocols which
2536        don't explicitly have a policy (`protocol.<name>.allow`).  By default,
2537        if unset, known-safe protocols (http, https, git, ssh, file) have a
2538        default policy of `always`, known-dangerous protocols (ext) have a
2539        default policy of `never`, and all other protocols have a default
2540        policy of `user`.  Supported policies:
2541+
2542--
2543
2544* `always` - protocol is always able to be used.
2545
2546* `never` - protocol is never able to be used.
2547
2548* `user` - protocol is only able to be used when `GIT_PROTOCOL_FROM_USER` is
2549  either unset or has a value of 1.  This policy should be used when you want a
2550  protocol to be directly usable by the user but don't want it used by commands which
2551  execute clone/fetch/push commands without user input, e.g. recursive
2552  submodule initialization.
2553
2554--
2555
2556protocol.<name>.allow::
2557        Set a policy to be used by protocol `<name>` with clone/fetch/push
2558        commands. See `protocol.allow` above for the available policies.
2559+
2560The protocol names currently used by git are:
2561+
2562--
2563  - `file`: any local file-based path (including `file://` URLs,
2564    or local paths)
2565
2566  - `git`: the anonymous git protocol over a direct TCP
2567    connection (or proxy, if configured)
2568
2569  - `ssh`: git over ssh (including `host:path` syntax,
2570    `ssh://`, etc).
2571
2572  - `http`: git over http, both "smart http" and "dumb http".
2573    Note that this does _not_ include `https`; if you want to configure
2574    both, you must do so individually.
2575
2576  - any external helpers are named by their protocol (e.g., use
2577    `hg` to allow the `git-remote-hg` helper)
2578--
2579
2580protocol.version::
2581        Experimental. If set, clients will attempt to communicate with a
2582        server using the specified protocol version.  If unset, no
2583        attempt will be made by the client to communicate using a
2584        particular protocol version, this results in protocol version 0
2585        being used.
2586        Supported versions:
2587+
2588--
2589
2590* `0` - the original wire protocol.
2591
2592* `1` - the original wire protocol with the addition of a version string
2593  in the initial response from the server.
2594
2595--
2596
2597pull.ff::
2598        By default, Git does not create an extra merge commit when merging
2599        a commit that is a descendant of the current commit. Instead, the
2600        tip of the current branch is fast-forwarded. When set to `false`,
2601        this variable tells Git to create an extra merge commit in such
2602        a case (equivalent to giving the `--no-ff` option from the command
2603        line). When set to `only`, only such fast-forward merges are
2604        allowed (equivalent to giving the `--ff-only` option from the
2605        command line). This setting overrides `merge.ff` when pulling.
2606
2607pull.rebase::
2608        When true, rebase branches on top of the fetched branch, instead
2609        of merging the default branch from the default remote when "git
2610        pull" is run. See "branch.<name>.rebase" for setting this on a
2611        per-branch basis.
2612+
2613When preserve, also pass `--preserve-merges` along to 'git rebase'
2614so that locally committed merge commits will not be flattened
2615by running 'git pull'.
2616+
2617When the value is `interactive`, the rebase is run in interactive mode.
2618+
2619*NOTE*: this is a possibly dangerous operation; do *not* use
2620it unless you understand the implications (see linkgit:git-rebase[1]
2621for details).
2622
2623pull.octopus::
2624        The default merge strategy to use when pulling multiple branches
2625        at once.
2626
2627pull.twohead::
2628        The default merge strategy to use when pulling a single branch.
2629
2630push.default::
2631        Defines the action `git push` should take if no refspec is
2632        explicitly given.  Different values are well-suited for
2633        specific workflows; for instance, in a purely central workflow
2634        (i.e. the fetch source is equal to the push destination),
2635        `upstream` is probably what you want.  Possible values are:
2636+
2637--
2638
2639* `nothing` - do not push anything (error out) unless a refspec is
2640  explicitly given. This is primarily meant for people who want to
2641  avoid mistakes by always being explicit.
2642
2643* `current` - push the current branch to update a branch with the same
2644  name on the receiving end.  Works in both central and non-central
2645  workflows.
2646
2647* `upstream` - push the current branch back to the branch whose
2648  changes are usually integrated into the current branch (which is
2649  called `@{upstream}`).  This mode only makes sense if you are
2650  pushing to the same repository you would normally pull from
2651  (i.e. central workflow).
2652
2653* `tracking` - This is a deprecated synonym for `upstream`.
2654
2655* `simple` - in centralized workflow, work like `upstream` with an
2656  added safety to refuse to push if the upstream branch's name is
2657  different from the local one.
2658+
2659When pushing to a remote that is different from the remote you normally
2660pull from, work as `current`.  This is the safest option and is suited
2661for beginners.
2662+
2663This mode has become the default in Git 2.0.
2664
2665* `matching` - push all branches having the same name on both ends.
2666  This makes the repository you are pushing to remember the set of
2667  branches that will be pushed out (e.g. if you always push 'maint'
2668  and 'master' there and no other branches, the repository you push
2669  to will have these two branches, and your local 'maint' and
2670  'master' will be pushed there).
2671+
2672To use this mode effectively, you have to make sure _all_ the
2673branches you would push out are ready to be pushed out before
2674running 'git push', as the whole point of this mode is to allow you
2675to push all of the branches in one go.  If you usually finish work
2676on only one branch and push out the result, while other branches are
2677unfinished, this mode is not for you.  Also this mode is not
2678suitable for pushing into a shared central repository, as other
2679people may add new branches there, or update the tip of existing
2680branches outside your control.
2681+
2682This used to be the default, but not since Git 2.0 (`simple` is the
2683new default).
2684
2685--
2686
2687push.followTags::
2688        If set to true enable `--follow-tags` option by default.  You
2689        may override this configuration at time of push by specifying
2690        `--no-follow-tags`.
2691
2692push.gpgSign::
2693        May be set to a boolean value, or the string 'if-asked'. A true
2694        value causes all pushes to be GPG signed, as if `--signed` is
2695        passed to linkgit:git-push[1]. The string 'if-asked' causes
2696        pushes to be signed if the server supports it, as if
2697        `--signed=if-asked` is passed to 'git push'. A false value may
2698        override a value from a lower-priority config file. An explicit
2699        command-line flag always overrides this config option.
2700
2701push.pushOption::
2702        When no `--push-option=<option>` argument is given from the
2703        command line, `git push` behaves as if each <value> of
2704        this variable is given as `--push-option=<value>`.
2705+
2706This is a multi-valued variable, and an empty value can be used in a
2707higher priority configuration file (e.g. `.git/config` in a
2708repository) to clear the values inherited from a lower priority
2709configuration files (e.g. `$HOME/.gitconfig`).
2710+
2711--
2712
2713Example:
2714
2715/etc/gitconfig
2716  push.pushoption = a
2717  push.pushoption = b
2718
2719~/.gitconfig
2720  push.pushoption = c
2721
2722repo/.git/config
2723  push.pushoption =
2724  push.pushoption = b
2725
2726This will result in only b (a and c are cleared).
2727
2728--
2729
2730push.recurseSubmodules::
2731        Make sure all submodule commits used by the revisions to be pushed
2732        are available on a remote-tracking branch. If the value is 'check'
2733        then Git will verify that all submodule commits that changed in the
2734        revisions to be pushed are available on at least one remote of the
2735        submodule. If any commits are missing, the push will be aborted and
2736        exit with non-zero status. If the value is 'on-demand' then all
2737        submodules that changed in the revisions to be pushed will be
2738        pushed. If on-demand was not able to push all necessary revisions
2739        it will also be aborted and exit with non-zero status. If the value
2740        is 'no' then default behavior of ignoring submodules when pushing
2741        is retained. You may override this configuration at time of push by
2742        specifying '--recurse-submodules=check|on-demand|no'.
2743
2744include::rebase-config.txt[]
2745
2746receive.advertiseAtomic::
2747        By default, git-receive-pack will advertise the atomic push
2748        capability to its clients. If you don't want to advertise this
2749        capability, set this variable to false.
2750
2751receive.advertisePushOptions::
2752        When set to true, git-receive-pack will advertise the push options
2753        capability to its clients. False by default.
2754
2755receive.autogc::
2756        By default, git-receive-pack will run "git-gc --auto" after
2757        receiving data from git-push and updating refs.  You can stop
2758        it by setting this variable to false.
2759
2760receive.certNonceSeed::
2761        By setting this variable to a string, `git receive-pack`
2762        will accept a `git push --signed` and verifies it by using
2763        a "nonce" protected by HMAC using this string as a secret
2764        key.
2765
2766receive.certNonceSlop::
2767        When a `git push --signed` sent a push certificate with a
2768        "nonce" that was issued by a receive-pack serving the same
2769        repository within this many seconds, export the "nonce"
2770        found in the certificate to `GIT_PUSH_CERT_NONCE` to the
2771        hooks (instead of what the receive-pack asked the sending
2772        side to include).  This may allow writing checks in
2773        `pre-receive` and `post-receive` a bit easier.  Instead of
2774        checking `GIT_PUSH_CERT_NONCE_SLOP` environment variable
2775        that records by how many seconds the nonce is stale to
2776        decide if they want to accept the certificate, they only
2777        can check `GIT_PUSH_CERT_NONCE_STATUS` is `OK`.
2778
2779receive.fsckObjects::
2780        If it is set to true, git-receive-pack will check all received
2781        objects. It will abort in the case of a malformed object or a
2782        broken link. The result of an abort are only dangling objects.
2783        Defaults to false. If not set, the value of `transfer.fsckObjects`
2784        is used instead.
2785
2786receive.fsck.<msg-id>::
2787        When `receive.fsckObjects` is set to true, errors can be switched
2788        to warnings and vice versa by configuring the `receive.fsck.<msg-id>`
2789        setting where the `<msg-id>` is the fsck message ID and the value
2790        is one of `error`, `warn` or `ignore`. For convenience, fsck prefixes
2791        the error/warning with the message ID, e.g. "missingEmail: invalid
2792        author/committer line - missing email" means that setting
2793        `receive.fsck.missingEmail = ignore` will hide that issue.
2794+
2795This feature is intended to support working with legacy repositories
2796which would not pass pushing when `receive.fsckObjects = true`, allowing
2797the host to accept repositories with certain known issues but still catch
2798other issues.
2799
2800receive.fsck.skipList::
2801        The path to a sorted list of object names (i.e. one SHA-1 per
2802        line) that are known to be broken in a non-fatal way and should
2803        be ignored. This feature is useful when an established project
2804        should be accepted despite early commits containing errors that
2805        can be safely ignored such as invalid committer email addresses.
2806        Note: corrupt objects cannot be skipped with this setting.
2807
2808receive.keepAlive::
2809        After receiving the pack from the client, `receive-pack` may
2810        produce no output (if `--quiet` was specified) while processing
2811        the pack, causing some networks to drop the TCP connection.
2812        With this option set, if `receive-pack` does not transmit
2813        any data in this phase for `receive.keepAlive` seconds, it will
2814        send a short keepalive packet.  The default is 5 seconds; set
2815        to 0 to disable keepalives entirely.
2816
2817receive.unpackLimit::
2818        If the number of objects received in a push is below this
2819        limit then the objects will be unpacked into loose object
2820        files. However if the number of received objects equals or
2821        exceeds this limit then the received pack will be stored as
2822        a pack, after adding any missing delta bases.  Storing the
2823        pack from a push can make the push operation complete faster,
2824        especially on slow filesystems.  If not set, the value of
2825        `transfer.unpackLimit` is used instead.
2826
2827receive.maxInputSize::
2828        If the size of the incoming pack stream is larger than this
2829        limit, then git-receive-pack will error out, instead of
2830        accepting the pack file. If not set or set to 0, then the size
2831        is unlimited.
2832
2833receive.denyDeletes::
2834        If set to true, git-receive-pack will deny a ref update that deletes
2835        the ref. Use this to prevent such a ref deletion via a push.
2836
2837receive.denyDeleteCurrent::
2838        If set to true, git-receive-pack will deny a ref update that
2839        deletes the currently checked out branch of a non-bare repository.
2840
2841receive.denyCurrentBranch::
2842        If set to true or "refuse", git-receive-pack will deny a ref update
2843        to the currently checked out branch of a non-bare repository.
2844        Such a push is potentially dangerous because it brings the HEAD
2845        out of sync with the index and working tree. If set to "warn",
2846        print a warning of such a push to stderr, but allow the push to
2847        proceed. If set to false or "ignore", allow such pushes with no
2848        message. Defaults to "refuse".
2849+
2850Another option is "updateInstead" which will update the working
2851tree if pushing into the current branch.  This option is
2852intended for synchronizing working directories when one side is not easily
2853accessible via interactive ssh (e.g. a live web site, hence the requirement
2854that the working directory be clean). This mode also comes in handy when
2855developing inside a VM to test and fix code on different Operating Systems.
2856+
2857By default, "updateInstead" will refuse the push if the working tree or
2858the index have any difference from the HEAD, but the `push-to-checkout`
2859hook can be used to customize this.  See linkgit:githooks[5].
2860
2861receive.denyNonFastForwards::
2862        If set to true, git-receive-pack will deny a ref update which is
2863        not a fast-forward. Use this to prevent such an update via a push,
2864        even if that push is forced. This configuration variable is
2865        set when initializing a shared repository.
2866
2867receive.hideRefs::
2868        This variable is the same as `transfer.hideRefs`, but applies
2869        only to `receive-pack` (and so affects pushes, but not fetches).
2870        An attempt to update or delete a hidden ref by `git push` is
2871        rejected.
2872
2873receive.updateServerInfo::
2874        If set to true, git-receive-pack will run git-update-server-info
2875        after receiving data from git-push and updating refs.
2876
2877receive.shallowUpdate::
2878        If set to true, .git/shallow can be updated when new refs
2879        require new shallow roots. Otherwise those refs are rejected.
2880
2881remote.pushDefault::
2882        The remote to push to by default.  Overrides
2883        `branch.<name>.remote` for all branches, and is overridden by
2884        `branch.<name>.pushRemote` for specific branches.
2885
2886remote.<name>.url::
2887        The URL of a remote repository.  See linkgit:git-fetch[1] or
2888        linkgit:git-push[1].
2889
2890remote.<name>.pushurl::
2891        The push URL of a remote repository.  See linkgit:git-push[1].
2892
2893remote.<name>.proxy::
2894        For remotes that require curl (http, https and ftp), the URL to
2895        the proxy to use for that remote.  Set to the empty string to
2896        disable proxying for that remote.
2897
2898remote.<name>.proxyAuthMethod::
2899        For remotes that require curl (http, https and ftp), the method to use for
2900        authenticating against the proxy in use (probably set in
2901        `remote.<name>.proxy`). See `http.proxyAuthMethod`.
2902
2903remote.<name>.fetch::
2904        The default set of "refspec" for linkgit:git-fetch[1]. See
2905        linkgit:git-fetch[1].
2906
2907remote.<name>.push::
2908        The default set of "refspec" for linkgit:git-push[1]. See
2909        linkgit:git-push[1].
2910
2911remote.<name>.mirror::
2912        If true, pushing to this remote will automatically behave
2913        as if the `--mirror` option was given on the command line.
2914
2915remote.<name>.skipDefaultUpdate::
2916        If true, this remote will be skipped by default when updating
2917        using linkgit:git-fetch[1] or the `update` subcommand of
2918        linkgit:git-remote[1].
2919
2920remote.<name>.skipFetchAll::
2921        If true, this remote will be skipped by default when updating
2922        using linkgit:git-fetch[1] or the `update` subcommand of
2923        linkgit:git-remote[1].
2924
2925remote.<name>.receivepack::
2926        The default program to execute on the remote side when pushing.  See
2927        option --receive-pack of linkgit:git-push[1].
2928
2929remote.<name>.uploadpack::
2930        The default program to execute on the remote side when fetching.  See
2931        option --upload-pack of linkgit:git-fetch-pack[1].
2932
2933remote.<name>.tagOpt::
2934        Setting this value to --no-tags disables automatic tag following when
2935        fetching from remote <name>. Setting it to --tags will fetch every
2936        tag from remote <name>, even if they are not reachable from remote
2937        branch heads. Passing these flags directly to linkgit:git-fetch[1] can
2938        override this setting. See options --tags and --no-tags of
2939        linkgit:git-fetch[1].
2940
2941remote.<name>.vcs::
2942        Setting this to a value <vcs> will cause Git to interact with
2943        the remote with the git-remote-<vcs> helper.
2944
2945remote.<name>.prune::
2946        When set to true, fetching from this remote by default will also
2947        remove any remote-tracking references that no longer exist on the
2948        remote (as if the `--prune` option was given on the command line).
2949        Overrides `fetch.prune` settings, if any.
2950
2951remotes.<group>::
2952        The list of remotes which are fetched by "git remote update
2953        <group>".  See linkgit:git-remote[1].
2954
2955repack.useDeltaBaseOffset::
2956        By default, linkgit:git-repack[1] creates packs that use
2957        delta-base offset. If you need to share your repository with
2958        Git older than version 1.4.4, either directly or via a dumb
2959        protocol such as http, then you need to set this option to
2960        "false" and repack. Access from old Git versions over the
2961        native protocol are unaffected by this option.
2962
2963repack.packKeptObjects::
2964        If set to true, makes `git repack` act as if
2965        `--pack-kept-objects` was passed. See linkgit:git-repack[1] for
2966        details. Defaults to `false` normally, but `true` if a bitmap
2967        index is being written (either via `--write-bitmap-index` or
2968        `repack.writeBitmaps`).
2969
2970repack.writeBitmaps::
2971        When true, git will write a bitmap index when packing all
2972        objects to disk (e.g., when `git repack -a` is run).  This
2973        index can speed up the "counting objects" phase of subsequent
2974        packs created for clones and fetches, at the cost of some disk
2975        space and extra time spent on the initial repack.  This has
2976        no effect if multiple packfiles are created.
2977        Defaults to false.
2978
2979rerere.autoUpdate::
2980        When set to true, `git-rerere` updates the index with the
2981        resulting contents after it cleanly resolves conflicts using
2982        previously recorded resolution.  Defaults to false.
2983
2984rerere.enabled::
2985        Activate recording of resolved conflicts, so that identical
2986        conflict hunks can be resolved automatically, should they be
2987        encountered again.  By default, linkgit:git-rerere[1] is
2988        enabled if there is an `rr-cache` directory under the
2989        `$GIT_DIR`, e.g. if "rerere" was previously used in the
2990        repository.
2991
2992sendemail.identity::
2993        A configuration identity. When given, causes values in the
2994        'sendemail.<identity>' subsection to take precedence over
2995        values in the 'sendemail' section. The default identity is
2996        the value of `sendemail.identity`.
2997
2998sendemail.smtpEncryption::
2999        See linkgit:git-send-email[1] for description.  Note that this
3000        setting is not subject to the 'identity' mechanism.
3001
3002sendemail.smtpssl (deprecated)::
3003        Deprecated alias for 'sendemail.smtpEncryption = ssl'.
3004
3005sendemail.smtpsslcertpath::
3006        Path to ca-certificates (either a directory or a single file).
3007        Set it to an empty string to disable certificate verification.
3008
3009sendemail.<identity>.*::
3010        Identity-specific versions of the 'sendemail.*' parameters
3011        found below, taking precedence over those when this
3012        identity is selected, through either the command-line or
3013        `sendemail.identity`.
3014
3015sendemail.aliasesFile::
3016sendemail.aliasFileType::
3017sendemail.annotate::
3018sendemail.bcc::
3019sendemail.cc::
3020sendemail.ccCmd::
3021sendemail.chainReplyTo::
3022sendemail.confirm::
3023sendemail.envelopeSender::
3024sendemail.from::
3025sendemail.multiEdit::
3026sendemail.signedoffbycc::
3027sendemail.smtpPass::
3028sendemail.suppresscc::
3029sendemail.suppressFrom::
3030sendemail.to::
3031sendemail.tocmd::
3032sendemail.smtpDomain::
3033sendemail.smtpServer::
3034sendemail.smtpServerPort::
3035sendemail.smtpServerOption::
3036sendemail.smtpUser::
3037sendemail.thread::
3038sendemail.transferEncoding::
3039sendemail.validate::
3040sendemail.xmailer::
3041        See linkgit:git-send-email[1] for description.
3042
3043sendemail.signedoffcc (deprecated)::
3044        Deprecated alias for `sendemail.signedoffbycc`.
3045
3046sendemail.smtpBatchSize::
3047        Number of messages to be sent per connection, after that a relogin
3048        will happen.  If the value is 0 or undefined, send all messages in
3049        one connection.
3050        See also the `--batch-size` option of linkgit:git-send-email[1].
3051
3052sendemail.smtpReloginDelay::
3053        Seconds wait before reconnecting to smtp server.
3054        See also the `--relogin-delay` option of linkgit:git-send-email[1].
3055
3056showbranch.default::
3057        The default set of branches for linkgit:git-show-branch[1].
3058        See linkgit:git-show-branch[1].
3059
3060splitIndex.maxPercentChange::
3061        When the split index feature is used, this specifies the
3062        percent of entries the split index can contain compared to the
3063        total number of entries in both the split index and the shared
3064        index before a new shared index is written.
3065        The value should be between 0 and 100. If the value is 0 then
3066        a new shared index is always written, if it is 100 a new
3067        shared index is never written.
3068        By default the value is 20, so a new shared index is written
3069        if the number of entries in the split index would be greater
3070        than 20 percent of the total number of entries.
3071        See linkgit:git-update-index[1].
3072
3073splitIndex.sharedIndexExpire::
3074        When the split index feature is used, shared index files that
3075        were not modified since the time this variable specifies will
3076        be removed when a new shared index file is created. The value
3077        "now" expires all entries immediately, and "never" suppresses
3078        expiration altogether.
3079        The default value is "2.weeks.ago".
3080        Note that a shared index file is considered modified (for the
3081        purpose of expiration) each time a new split-index file is
3082        either created based on it or read from it.
3083        See linkgit:git-update-index[1].
3084
3085status.relativePaths::
3086        By default, linkgit:git-status[1] shows paths relative to the
3087        current directory. Setting this variable to `false` shows paths
3088        relative to the repository root (this was the default for Git
3089        prior to v1.5.4).
3090
3091status.short::
3092        Set to true to enable --short by default in linkgit:git-status[1].
3093        The option --no-short takes precedence over this variable.
3094
3095status.branch::
3096        Set to true to enable --branch by default in linkgit:git-status[1].
3097        The option --no-branch takes precedence over this variable.
3098
3099status.displayCommentPrefix::
3100        If set to true, linkgit:git-status[1] will insert a comment
3101        prefix before each output line (starting with
3102        `core.commentChar`, i.e. `#` by default). This was the
3103        behavior of linkgit:git-status[1] in Git 1.8.4 and previous.
3104        Defaults to false.
3105
3106status.showStash::
3107        If set to true, linkgit:git-status[1] will display the number of
3108        entries currently stashed away.
3109        Defaults to false.
3110
3111status.showUntrackedFiles::
3112        By default, linkgit:git-status[1] and linkgit:git-commit[1] show
3113        files which are not currently tracked by Git. Directories which
3114        contain only untracked files, are shown with the directory name
3115        only. Showing untracked files means that Git needs to lstat() all
3116        the files in the whole repository, which might be slow on some
3117        systems. So, this variable controls how the commands displays
3118        the untracked files. Possible values are:
3119+
3120--
3121* `no` - Show no untracked files.
3122* `normal` - Show untracked files and directories.
3123* `all` - Show also individual files in untracked directories.
3124--
3125+
3126If this variable is not specified, it defaults to 'normal'.
3127This variable can be overridden with the -u|--untracked-files option
3128of linkgit:git-status[1] and linkgit:git-commit[1].
3129
3130status.submoduleSummary::
3131        Defaults to false.
3132        If this is set to a non zero number or true (identical to -1 or an
3133        unlimited number), the submodule summary will be enabled and a
3134        summary of commits for modified submodules will be shown (see
3135        --summary-limit option of linkgit:git-submodule[1]). Please note
3136        that the summary output command will be suppressed for all
3137        submodules when `diff.ignoreSubmodules` is set to 'all' or only
3138        for those submodules where `submodule.<name>.ignore=all`. The only
3139        exception to that rule is that status and commit will show staged
3140        submodule changes. To
3141        also view the summary for ignored submodules you can either use
3142        the --ignore-submodules=dirty command-line option or the 'git
3143        submodule summary' command, which shows a similar output but does
3144        not honor these settings.
3145
3146stash.showPatch::
3147        If this is set to true, the `git stash show` command without an
3148        option will show the stash entry in patch form.  Defaults to false.
3149        See description of 'show' command in linkgit:git-stash[1].
3150
3151stash.showStat::
3152        If this is set to true, the `git stash show` command without an
3153        option will show diffstat of the stash entry.  Defaults to true.
3154        See description of 'show' command in linkgit:git-stash[1].
3155
3156submodule.<name>.url::
3157        The URL for a submodule. This variable is copied from the .gitmodules
3158        file to the git config via 'git submodule init'. The user can change
3159        the configured URL before obtaining the submodule via 'git submodule
3160        update'. If neither submodule.<name>.active or submodule.active are
3161        set, the presence of this variable is used as a fallback to indicate
3162        whether the submodule is of interest to git commands.
3163        See linkgit:git-submodule[1] and linkgit:gitmodules[5] for details.
3164
3165submodule.<name>.update::
3166        The method by which a submodule is updated by 'git submodule update',
3167        which is the only affected command, others such as
3168        'git checkout --recurse-submodules' are unaffected. It exists for
3169        historical reasons, when 'git submodule' was the only command to
3170        interact with submodules; settings like `submodule.active`
3171        and `pull.rebase` are more specific. It is populated by
3172        `git submodule init` from the linkgit:gitmodules[5] file.
3173        See description of 'update' command in linkgit:git-submodule[1].
3174
3175submodule.<name>.branch::
3176        The remote branch name for a submodule, used by `git submodule
3177        update --remote`.  Set this option to override the value found in
3178        the `.gitmodules` file.  See linkgit:git-submodule[1] and
3179        linkgit:gitmodules[5] for details.
3180
3181submodule.<name>.fetchRecurseSubmodules::
3182        This option can be used to control recursive fetching of this
3183        submodule. It can be overridden by using the --[no-]recurse-submodules
3184        command-line option to "git fetch" and "git pull".
3185        This setting will override that from in the linkgit:gitmodules[5]
3186        file.
3187
3188submodule.<name>.ignore::
3189        Defines under what circumstances "git status" and the diff family show
3190        a submodule as modified. When set to "all", it will never be considered
3191        modified (but it will nonetheless show up in the output of status and
3192        commit when it has been staged), "dirty" will ignore all changes
3193        to the submodules work tree and
3194        takes only differences between the HEAD of the submodule and the commit
3195        recorded in the superproject into account. "untracked" will additionally
3196        let submodules with modified tracked files in their work tree show up.
3197        Using "none" (the default when this option is not set) also shows
3198        submodules that have untracked files in their work tree as changed.
3199        This setting overrides any setting made in .gitmodules for this submodule,
3200        both settings can be overridden on the command line by using the
3201        "--ignore-submodules" option. The 'git submodule' commands are not
3202        affected by this setting.
3203
3204submodule.<name>.active::
3205        Boolean value indicating if the submodule is of interest to git
3206        commands.  This config option takes precedence over the
3207        submodule.active config option.
3208
3209submodule.active::
3210        A repeated field which contains a pathspec used to match against a
3211        submodule's path to determine if the submodule is of interest to git
3212        commands.
3213
3214submodule.recurse::
3215        Specifies if commands recurse into submodules by default. This
3216        applies to all commands that have a `--recurse-submodules` option.
3217        Defaults to false.
3218
3219submodule.fetchJobs::
3220        Specifies how many submodules are fetched/cloned at the same time.
3221        A positive integer allows up to that number of submodules fetched
3222        in parallel. A value of 0 will give some reasonable default.
3223        If unset, it defaults to 1.
3224
3225submodule.alternateLocation::
3226        Specifies how the submodules obtain alternates when submodules are
3227        cloned. Possible values are `no`, `superproject`.
3228        By default `no` is assumed, which doesn't add references. When the
3229        value is set to `superproject` the submodule to be cloned computes
3230        its alternates location relative to the superprojects alternate.
3231
3232submodule.alternateErrorStrategy::
3233        Specifies how to treat errors with the alternates for a submodule
3234        as computed via `submodule.alternateLocation`. Possible values are
3235        `ignore`, `info`, `die`. Default is `die`.
3236
3237tag.forceSignAnnotated::
3238        A boolean to specify whether annotated tags created should be GPG signed.
3239        If `--annotate` is specified on the command line, it takes
3240        precedence over this option.
3241
3242tag.sort::
3243        This variable controls the sort ordering of tags when displayed by
3244        linkgit:git-tag[1]. Without the "--sort=<value>" option provided, the
3245        value of this variable will be used as the default.
3246
3247tar.umask::
3248        This variable can be used to restrict the permission bits of
3249        tar archive entries.  The default is 0002, which turns off the
3250        world write bit.  The special value "user" indicates that the
3251        archiving user's umask will be used instead.  See umask(2) and
3252        linkgit:git-archive[1].
3253
3254transfer.fsckObjects::
3255        When `fetch.fsckObjects` or `receive.fsckObjects` are
3256        not set, the value of this variable is used instead.
3257        Defaults to false.
3258
3259transfer.hideRefs::
3260        String(s) `receive-pack` and `upload-pack` use to decide which
3261        refs to omit from their initial advertisements.  Use more than
3262        one definition to specify multiple prefix strings. A ref that is
3263        under the hierarchies listed in the value of this variable is
3264        excluded, and is hidden when responding to `git push` or `git
3265        fetch`.  See `receive.hideRefs` and `uploadpack.hideRefs` for
3266        program-specific versions of this config.
3267+
3268You may also include a `!` in front of the ref name to negate the entry,
3269explicitly exposing it, even if an earlier entry marked it as hidden.
3270If you have multiple hideRefs values, later entries override earlier ones
3271(and entries in more-specific config files override less-specific ones).
3272+
3273If a namespace is in use, the namespace prefix is stripped from each
3274reference before it is matched against `transfer.hiderefs` patterns.
3275For example, if `refs/heads/master` is specified in `transfer.hideRefs` and
3276the current namespace is `foo`, then `refs/namespaces/foo/refs/heads/master`
3277is omitted from the advertisements but `refs/heads/master` and
3278`refs/namespaces/bar/refs/heads/master` are still advertised as so-called
3279"have" lines. In order to match refs before stripping, add a `^` in front of
3280the ref name. If you combine `!` and `^`, `!` must be specified first.
3281+
3282Even if you hide refs, a client may still be able to steal the target
3283objects via the techniques described in the "SECURITY" section of the
3284linkgit:gitnamespaces[7] man page; it's best to keep private data in a
3285separate repository.
3286
3287transfer.unpackLimit::
3288        When `fetch.unpackLimit` or `receive.unpackLimit` are
3289        not set, the value of this variable is used instead.
3290        The default value is 100.
3291
3292uploadarchive.allowUnreachable::
3293        If true, allow clients to use `git archive --remote` to request
3294        any tree, whether reachable from the ref tips or not. See the
3295        discussion in the "SECURITY" section of
3296        linkgit:git-upload-archive[1] for more details. Defaults to
3297        `false`.
3298
3299uploadpack.hideRefs::
3300        This variable is the same as `transfer.hideRefs`, but applies
3301        only to `upload-pack` (and so affects only fetches, not pushes).
3302        An attempt to fetch a hidden ref by `git fetch` will fail.  See
3303        also `uploadpack.allowTipSHA1InWant`.
3304
3305uploadpack.allowTipSHA1InWant::
3306        When `uploadpack.hideRefs` is in effect, allow `upload-pack`
3307        to accept a fetch request that asks for an object at the tip
3308        of a hidden ref (by default, such a request is rejected).
3309        See also `uploadpack.hideRefs`.  Even if this is false, a client
3310        may be able to steal objects via the techniques described in the
3311        "SECURITY" section of the linkgit:gitnamespaces[7] man page; it's
3312        best to keep private data in a separate repository.
3313
3314uploadpack.allowReachableSHA1InWant::
3315        Allow `upload-pack` to accept a fetch request that asks for an
3316        object that is reachable from any ref tip. However, note that
3317        calculating object reachability is computationally expensive.
3318        Defaults to `false`.  Even if this is false, a client may be able
3319        to steal objects via the techniques described in the "SECURITY"
3320        section of the linkgit:gitnamespaces[7] man page; it's best to
3321        keep private data in a separate repository.
3322
3323uploadpack.allowAnySHA1InWant::
3324        Allow `upload-pack` to accept a fetch request that asks for any
3325        object at all.
3326        Defaults to `false`.
3327
3328uploadpack.keepAlive::
3329        When `upload-pack` has started `pack-objects`, there may be a
3330        quiet period while `pack-objects` prepares the pack. Normally
3331        it would output progress information, but if `--quiet` was used
3332        for the fetch, `pack-objects` will output nothing at all until
3333        the pack data begins. Some clients and networks may consider
3334        the server to be hung and give up. Setting this option instructs
3335        `upload-pack` to send an empty keepalive packet every
3336        `uploadpack.keepAlive` seconds. Setting this option to 0
3337        disables keepalive packets entirely. The default is 5 seconds.
3338
3339uploadpack.packObjectsHook::
3340        If this option is set, when `upload-pack` would run
3341        `git pack-objects` to create a packfile for a client, it will
3342        run this shell command instead.  The `pack-objects` command and
3343        arguments it _would_ have run (including the `git pack-objects`
3344        at the beginning) are appended to the shell command. The stdin
3345        and stdout of the hook are treated as if `pack-objects` itself
3346        was run. I.e., `upload-pack` will feed input intended for
3347        `pack-objects` to the hook, and expects a completed packfile on
3348        stdout.
3349+
3350Note that this configuration variable is ignored if it is seen in the
3351repository-level config (this is a safety measure against fetching from
3352untrusted repositories).
3353
3354url.<base>.insteadOf::
3355        Any URL that starts with this value will be rewritten to
3356        start, instead, with <base>. In cases where some site serves a
3357        large number of repositories, and serves them with multiple
3358        access methods, and some users need to use different access
3359        methods, this feature allows people to specify any of the
3360        equivalent URLs and have Git automatically rewrite the URL to
3361        the best alternative for the particular user, even for a
3362        never-before-seen repository on the site.  When more than one
3363        insteadOf strings match a given URL, the longest match is used.
3364+
3365Note that any protocol restrictions will be applied to the rewritten
3366URL. If the rewrite changes the URL to use a custom protocol or remote
3367helper, you may need to adjust the `protocol.*.allow` config to permit
3368the request.  In particular, protocols you expect to use for submodules
3369must be set to `always` rather than the default of `user`. See the
3370description of `protocol.allow` above.
3371
3372url.<base>.pushInsteadOf::
3373        Any URL that starts with this value will not be pushed to;
3374        instead, it will be rewritten to start with <base>, and the
3375        resulting URL will be pushed to. In cases where some site serves
3376        a large number of repositories, and serves them with multiple
3377        access methods, some of which do not allow push, this feature
3378        allows people to specify a pull-only URL and have Git
3379        automatically use an appropriate URL to push, even for a
3380        never-before-seen repository on the site.  When more than one
3381        pushInsteadOf strings match a given URL, the longest match is
3382        used.  If a remote has an explicit pushurl, Git will ignore this
3383        setting for that remote.
3384
3385user.email::
3386        Your email address to be recorded in any newly created commits.
3387        Can be overridden by the `GIT_AUTHOR_EMAIL`, `GIT_COMMITTER_EMAIL`, and
3388        `EMAIL` environment variables.  See linkgit:git-commit-tree[1].
3389
3390user.name::
3391        Your full name to be recorded in any newly created commits.
3392        Can be overridden by the `GIT_AUTHOR_NAME` and `GIT_COMMITTER_NAME`
3393        environment variables.  See linkgit:git-commit-tree[1].
3394
3395user.useConfigOnly::
3396        Instruct Git to avoid trying to guess defaults for `user.email`
3397        and `user.name`, and instead retrieve the values only from the
3398        configuration. For example, if you have multiple email addresses
3399        and would like to use a different one for each repository, then
3400        with this configuration option set to `true` in the global config
3401        along with a name, Git will prompt you to set up an email before
3402        making new commits in a newly cloned repository.
3403        Defaults to `false`.
3404
3405user.signingKey::
3406        If linkgit:git-tag[1] or linkgit:git-commit[1] is not selecting the
3407        key you want it to automatically when creating a signed tag or
3408        commit, you can override the default selection with this variable.
3409        This option is passed unchanged to gpg's --local-user parameter,
3410        so you may specify a key using any method that gpg supports.
3411
3412versionsort.prereleaseSuffix (deprecated)::
3413        Deprecated alias for `versionsort.suffix`.  Ignored if
3414        `versionsort.suffix` is set.
3415
3416versionsort.suffix::
3417        Even when version sort is used in linkgit:git-tag[1], tagnames
3418        with the same base version but different suffixes are still sorted
3419        lexicographically, resulting e.g. in prerelease tags appearing
3420        after the main release (e.g. "1.0-rc1" after "1.0").  This
3421        variable can be specified to determine the sorting order of tags
3422        with different suffixes.
3423+
3424By specifying a single suffix in this variable, any tagname containing
3425that suffix will appear before the corresponding main release.  E.g. if
3426the variable is set to "-rc", then all "1.0-rcX" tags will appear before
3427"1.0".  If specified multiple times, once per suffix, then the order of
3428suffixes in the configuration will determine the sorting order of tagnames
3429with those suffixes.  E.g. if "-pre" appears before "-rc" in the
3430configuration, then all "1.0-preX" tags will be listed before any
3431"1.0-rcX" tags.  The placement of the main release tag relative to tags
3432with various suffixes can be determined by specifying the empty suffix
3433among those other suffixes.  E.g. if the suffixes "-rc", "", "-ck" and
3434"-bfs" appear in the configuration in this order, then all "v4.8-rcX" tags
3435are listed first, followed by "v4.8", then "v4.8-ckX" and finally
3436"v4.8-bfsX".
3437+
3438If more than one suffixes match the same tagname, then that tagname will
3439be sorted according to the suffix which starts at the earliest position in
3440the tagname.  If more than one different matching suffixes start at
3441that earliest position, then that tagname will be sorted according to the
3442longest of those suffixes.
3443The sorting order between different suffixes is undefined if they are
3444in multiple config files.
3445
3446web.browser::
3447        Specify a web browser that may be used by some commands.
3448        Currently only linkgit:git-instaweb[1] and linkgit:git-help[1]
3449        may use it.
3450
3451worktree.guessRemote::
3452        With `add`, if no branch argument, and neither of `-b` nor
3453        `-B` nor `--detach` are given, the command defaults to
3454        creating a new branch from HEAD.  If `worktree.guessRemote` is
3455        set to true, `worktree add` tries to find a remote-tracking
3456        branch whose name uniquely matches the new branch name.  If
3457        such a branch exists, it is checked out and set as "upstream"
3458        for the new branch.  If no such match can be found, it falls
3459        back to creating a new branch from the current HEAD.