77e45e5219aab24e59f6eb52a6394ad9de8ab66d
   1CONFIGURATION FILE
   2------------------
   3
   4The Git configuration file contains a number of variables that affect
   5the Git commands' behavior. The `.git/config` file in each repository
   6is used to store the configuration for that repository, and
   7`$HOME/.gitconfig` is used to store a per-user configuration as
   8fallback values for the `.git/config` file. The file `/etc/gitconfig`
   9can be used to store a system-wide default configuration.
  10
  11The configuration variables are used by both the Git plumbing
  12and the porcelains. The variables are divided into sections, wherein
  13the fully qualified variable name of the variable itself is the last
  14dot-separated segment and the section name is everything before the last
  15dot. The variable names are case-insensitive, allow only alphanumeric
  16characters and `-`, and must start with an alphabetic character.  Some
  17variables may appear multiple times; we say then that the variable is
  18multivalued.
  19
  20Syntax
  21~~~~~~
  22
  23The syntax is fairly flexible and permissive; whitespaces are mostly
  24ignored.  The '#' and ';' characters begin comments to the end of line,
  25blank lines are ignored.
  26
  27The file consists of sections and variables.  A section begins with
  28the name of the section in square brackets and continues until the next
  29section begins.  Section names are case-insensitive.  Only alphanumeric
  30characters, `-` and `.` are allowed in section names.  Each variable
  31must belong to some section, which means that there must be a section
  32header before the first setting of a variable.
  33
  34Sections can be further divided into subsections.  To begin a subsection
  35put its name in double quotes, separated by space from the section name,
  36in the section header, like in the example below:
  37
  38--------
  39        [section "subsection"]
  40
  41--------
  42
  43Subsection names are case sensitive and can contain any characters except
  44newline and the null byte. Doublequote `"` and backslash can be included
  45by escaping them as `\"` and `\\`, respectively. Backslashes preceding
  46other characters are dropped when reading; for example, `\t` is read as
  47`t` and `\0` is read as `0` Section headers cannot span multiple lines.
  48Variables may belong directly to a section or to a given subsection. You
  49can have `[section]` if you have `[section "subsection"]`, but you don't
  50need to.
  51
  52There is also a deprecated `[section.subsection]` syntax. With this
  53syntax, the subsection name is converted to lower-case and is also
  54compared case sensitively. These subsection names follow the same
  55restrictions as section names.
  56
  57All the other lines (and the remainder of the line after the section
  58header) are recognized as setting variables, in the form
  59'name = value' (or just 'name', which is a short-hand to say that
  60the variable is the boolean "true").
  61The variable names are case-insensitive, allow only alphanumeric characters
  62and `-`, and must start with an alphabetic character.
  63
  64A line that defines a value can be continued to the next line by
  65ending it with a `\`; the backquote and the end-of-line are
  66stripped.  Leading whitespaces after 'name =', the remainder of the
  67line after the first comment character '#' or ';', and trailing
  68whitespaces of the line are discarded unless they are enclosed in
  69double quotes.  Internal whitespaces within the value are retained
  70verbatim.
  71
  72Inside double quotes, double quote `"` and backslash `\` characters
  73must be escaped: use `\"` for `"` and `\\` for `\`.
  74
  75The following escape sequences (beside `\"` and `\\`) are recognized:
  76`\n` for newline character (NL), `\t` for horizontal tabulation (HT, TAB)
  77and `\b` for backspace (BS).  Other char escape sequences (including octal
  78escape sequences) are invalid.
  79
  80
  81Includes
  82~~~~~~~~
  83
  84The `include` and `includeIf` sections allow you to include config
  85directives from another source. These sections behave identically to
  86each other with the exception that `includeIf` sections may be ignored
  87if their condition does not evaluate to true; see "Conditional includes"
  88below.
  89
  90You can include a config file from another by setting the special
  91`include.path` (or `includeIf.*.path`) variable to the name of the file
  92to be included. The variable takes a pathname as its value, and is
  93subject to tilde expansion. These variables can be given multiple times.
  94
  95The contents of the included file are inserted immediately, as if they
  96had been found at the location of the include directive. If the value of the
  97variable is a relative path, the path is considered to
  98be relative to the configuration file in which the include directive
  99was found.  See below for examples.
 100
 101Conditional includes
 102~~~~~~~~~~~~~~~~~~~~
 103
 104You can include a config file from another conditionally by setting a
 105`includeIf.<condition>.path` variable to the name of the file to be
 106included.
 107
 108The condition starts with a keyword followed by a colon and some data
 109whose format and meaning depends on the keyword. Supported keywords
 110are:
 111
 112`gitdir`::
 113
 114        The data that follows the keyword `gitdir:` is used as a glob
 115        pattern. If the location of the .git directory matches the
 116        pattern, the include condition is met.
 117+
 118The .git location may be auto-discovered, or come from `$GIT_DIR`
 119environment variable. If the repository is auto discovered via a .git
 120file (e.g. from submodules, or a linked worktree), the .git location
 121would be the final location where the .git directory is, not where the
 122.git file is.
 123+
 124The pattern can contain standard globbing wildcards and two additional
 125ones, `**/` and `/**`, that can match multiple path components. Please
 126refer to linkgit:gitignore[5] for details. For convenience:
 127
 128 * If the pattern starts with `~/`, `~` will be substituted with the
 129   content of the environment variable `HOME`.
 130
 131 * If the pattern starts with `./`, it is replaced with the directory
 132   containing the current config file.
 133
 134 * If the pattern does not start with either `~/`, `./` or `/`, `**/`
 135   will be automatically prepended. For example, the pattern `foo/bar`
 136   becomes `**/foo/bar` and would match `/any/path/to/foo/bar`.
 137
 138 * If the pattern ends with `/`, `**` will be automatically added. For
 139   example, the pattern `foo/` becomes `foo/**`. In other words, it
 140   matches "foo" and everything inside, recursively.
 141
 142`gitdir/i`::
 143        This is the same as `gitdir` except that matching is done
 144        case-insensitively (e.g. on case-insensitive file sytems)
 145
 146A few more notes on matching via `gitdir` and `gitdir/i`:
 147
 148 * Symlinks in `$GIT_DIR` are not resolved before matching.
 149
 150 * Both the symlink & realpath versions of paths will be matched
 151   outside of `$GIT_DIR`. E.g. if ~/git is a symlink to
 152   /mnt/storage/git, both `gitdir:~/git` and `gitdir:/mnt/storage/git`
 153   will match.
 154+
 155This was not the case in the initial release of this feature in
 156v2.13.0, which only matched the realpath version. Configuration that
 157wants to be compatible with the initial release of this feature needs
 158to either specify only the realpath version, or both versions.
 159
 160 * Note that "../" is not special and will match literally, which is
 161   unlikely what you want.
 162
 163Example
 164~~~~~~~
 165
 166        # Core variables
 167        [core]
 168                ; Don't trust file modes
 169                filemode = false
 170
 171        # Our diff algorithm
 172        [diff]
 173                external = /usr/local/bin/diff-wrapper
 174                renames = true
 175
 176        [branch "devel"]
 177                remote = origin
 178                merge = refs/heads/devel
 179
 180        # Proxy settings
 181        [core]
 182                gitProxy="ssh" for "kernel.org"
 183                gitProxy=default-proxy ; for the rest
 184
 185        [include]
 186                path = /path/to/foo.inc ; include by absolute path
 187                path = foo.inc ; find "foo.inc" relative to the current file
 188                path = ~/foo.inc ; find "foo.inc" in your `$HOME` directory
 189
 190        ; include if $GIT_DIR is /path/to/foo/.git
 191        [includeIf "gitdir:/path/to/foo/.git"]
 192                path = /path/to/foo.inc
 193
 194        ; include for all repositories inside /path/to/group
 195        [includeIf "gitdir:/path/to/group/"]
 196                path = /path/to/foo.inc
 197
 198        ; include for all repositories inside $HOME/to/group
 199        [includeIf "gitdir:~/to/group/"]
 200                path = /path/to/foo.inc
 201
 202        ; relative paths are always relative to the including
 203        ; file (if the condition is true); their location is not
 204        ; affected by the condition
 205        [includeIf "gitdir:/path/to/group/"]
 206                path = foo.inc
 207
 208Values
 209~~~~~~
 210
 211Values of many variables are treated as a simple string, but there
 212are variables that take values of specific types and there are rules
 213as to how to spell them.
 214
 215boolean::
 216
 217       When a variable is said to take a boolean value, many
 218       synonyms are accepted for 'true' and 'false'; these are all
 219       case-insensitive.
 220
 221        true;; Boolean true literals are `yes`, `on`, `true`,
 222                and `1`.  Also, a variable defined without `= <value>`
 223                is taken as true.
 224
 225        false;; Boolean false literals are `no`, `off`, `false`,
 226                `0` and the empty string.
 227+
 228When converting a value to its canonical form using the `--type=bool` type
 229specifier, 'git config' will ensure that the output is "true" or
 230"false" (spelled in lowercase).
 231
 232integer::
 233       The value for many variables that specify various sizes can
 234       be suffixed with `k`, `M`,... to mean "scale the number by
 235       1024", "by 1024x1024", etc.
 236
 237color::
 238       The value for a variable that takes a color is a list of
 239       colors (at most two, one for foreground and one for background)
 240       and attributes (as many as you want), separated by spaces.
 241+
 242The basic colors accepted are `normal`, `black`, `red`, `green`, `yellow`,
 243`blue`, `magenta`, `cyan` and `white`.  The first color given is the
 244foreground; the second is the background.
 245+
 246Colors may also be given as numbers between 0 and 255; these use ANSI
 247256-color mode (but note that not all terminals may support this).  If
 248your terminal supports it, you may also specify 24-bit RGB values as
 249hex, like `#ff0ab3`.
 250+
 251The accepted attributes are `bold`, `dim`, `ul`, `blink`, `reverse`,
 252`italic`, and `strike` (for crossed-out or "strikethrough" letters).
 253The position of any attributes with respect to the colors
 254(before, after, or in between), doesn't matter. Specific attributes may
 255be turned off by prefixing them with `no` or `no-` (e.g., `noreverse`,
 256`no-ul`, etc).
 257+
 258An empty color string produces no color effect at all. This can be used
 259to avoid coloring specific elements without disabling color entirely.
 260+
 261For git's pre-defined color slots, the attributes are meant to be reset
 262at the beginning of each item in the colored output. So setting
 263`color.decorate.branch` to `black` will paint that branch name in a
 264plain `black`, even if the previous thing on the same output line (e.g.
 265opening parenthesis before the list of branch names in `log --decorate`
 266output) is set to be painted with `bold` or some other attribute.
 267However, custom log formats may do more complicated and layered
 268coloring, and the negated forms may be useful there.
 269
 270pathname::
 271        A variable that takes a pathname value can be given a
 272        string that begins with "`~/`" or "`~user/`", and the usual
 273        tilde expansion happens to such a string: `~/`
 274        is expanded to the value of `$HOME`, and `~user/` to the
 275        specified user's home directory.
 276
 277
 278Variables
 279~~~~~~~~~
 280
 281Note that this list is non-comprehensive and not necessarily complete.
 282For command-specific variables, you will find a more detailed description
 283in the appropriate manual page.
 284
 285Other git-related tools may and do use their own variables.  When
 286inventing new variables for use in your own tool, make sure their
 287names do not conflict with those that are used by Git itself and
 288other popular tools, and describe them in your documentation.
 289
 290include::config/advice.txt[]
 291
 292include::config/core.txt[]
 293
 294include::config/add.txt[]
 295
 296alias.*::
 297        Command aliases for the linkgit:git[1] command wrapper - e.g.
 298        after defining "alias.last = cat-file commit HEAD", the invocation
 299        "git last" is equivalent to "git cat-file commit HEAD". To avoid
 300        confusion and troubles with script usage, aliases that
 301        hide existing Git commands are ignored. Arguments are split by
 302        spaces, the usual shell quoting and escaping is supported.
 303        A quote pair or a backslash can be used to quote them.
 304+
 305If the alias expansion is prefixed with an exclamation point,
 306it will be treated as a shell command.  For example, defining
 307"alias.new = !gitk --all --not ORIG_HEAD", the invocation
 308"git new" is equivalent to running the shell command
 309"gitk --all --not ORIG_HEAD".  Note that shell commands will be
 310executed from the top-level directory of a repository, which may
 311not necessarily be the current directory.
 312`GIT_PREFIX` is set as returned by running 'git rev-parse --show-prefix'
 313from the original current directory. See linkgit:git-rev-parse[1].
 314
 315am.keepcr::
 316        If true, git-am will call git-mailsplit for patches in mbox format
 317        with parameter `--keep-cr`. In this case git-mailsplit will
 318        not remove `\r` from lines ending with `\r\n`. Can be overridden
 319        by giving `--no-keep-cr` from the command line.
 320        See linkgit:git-am[1], linkgit:git-mailsplit[1].
 321
 322am.threeWay::
 323        By default, `git am` will fail if the patch does not apply cleanly. When
 324        set to true, this setting tells `git am` to fall back on 3-way merge if
 325        the patch records the identity of blobs it is supposed to apply to and
 326        we have those blobs available locally (equivalent to giving the `--3way`
 327        option from the command line). Defaults to `false`.
 328        See linkgit:git-am[1].
 329
 330apply.ignoreWhitespace::
 331        When set to 'change', tells 'git apply' to ignore changes in
 332        whitespace, in the same way as the `--ignore-space-change`
 333        option.
 334        When set to one of: no, none, never, false tells 'git apply' to
 335        respect all whitespace differences.
 336        See linkgit:git-apply[1].
 337
 338apply.whitespace::
 339        Tells 'git apply' how to handle whitespaces, in the same way
 340        as the `--whitespace` option. See linkgit:git-apply[1].
 341
 342blame.blankBoundary::
 343        Show blank commit object name for boundary commits in
 344        linkgit:git-blame[1]. This option defaults to false.
 345
 346blame.coloring::
 347        This determines the coloring scheme to be applied to blame
 348        output. It can be 'repeatedLines', 'highlightRecent',
 349        or 'none' which is the default.
 350
 351blame.date::
 352        Specifies the format used to output dates in linkgit:git-blame[1].
 353        If unset the iso format is used. For supported values,
 354        see the discussion of the `--date` option at linkgit:git-log[1].
 355
 356blame.showEmail::
 357        Show the author email instead of author name in linkgit:git-blame[1].
 358        This option defaults to false.
 359
 360blame.showRoot::
 361        Do not treat root commits as boundaries in linkgit:git-blame[1].
 362        This option defaults to false.
 363
 364branch.autoSetupMerge::
 365        Tells 'git branch' and 'git checkout' to set up new branches
 366        so that linkgit:git-pull[1] will appropriately merge from the
 367        starting point branch. Note that even if this option is not set,
 368        this behavior can be chosen per-branch using the `--track`
 369        and `--no-track` options. The valid settings are: `false` -- no
 370        automatic setup is done; `true` -- automatic setup is done when the
 371        starting point is a remote-tracking branch; `always` --
 372        automatic setup is done when the starting point is either a
 373        local branch or remote-tracking
 374        branch. This option defaults to true.
 375
 376branch.autoSetupRebase::
 377        When a new branch is created with 'git branch' or 'git checkout'
 378        that tracks another branch, this variable tells Git to set
 379        up pull to rebase instead of merge (see "branch.<name>.rebase").
 380        When `never`, rebase is never automatically set to true.
 381        When `local`, rebase is set to true for tracked branches of
 382        other local branches.
 383        When `remote`, rebase is set to true for tracked branches of
 384        remote-tracking branches.
 385        When `always`, rebase will be set to true for all tracking
 386        branches.
 387        See "branch.autoSetupMerge" for details on how to set up a
 388        branch to track another branch.
 389        This option defaults to never.
 390
 391branch.sort::
 392        This variable controls the sort ordering of branches when displayed by
 393        linkgit:git-branch[1]. Without the "--sort=<value>" option provided, the
 394        value of this variable will be used as the default.
 395        See linkgit:git-for-each-ref[1] field names for valid values.
 396
 397branch.<name>.remote::
 398        When on branch <name>, it tells 'git fetch' and 'git push'
 399        which remote to fetch from/push to.  The remote to push to
 400        may be overridden with `remote.pushDefault` (for all branches).
 401        The remote to push to, for the current branch, may be further
 402        overridden by `branch.<name>.pushRemote`.  If no remote is
 403        configured, or if you are not on any branch, it defaults to
 404        `origin` for fetching and `remote.pushDefault` for pushing.
 405        Additionally, `.` (a period) is the current local repository
 406        (a dot-repository), see `branch.<name>.merge`'s final note below.
 407
 408branch.<name>.pushRemote::
 409        When on branch <name>, it overrides `branch.<name>.remote` for
 410        pushing.  It also overrides `remote.pushDefault` for pushing
 411        from branch <name>.  When you pull from one place (e.g. your
 412        upstream) and push to another place (e.g. your own publishing
 413        repository), you would want to set `remote.pushDefault` to
 414        specify the remote to push to for all branches, and use this
 415        option to override it for a specific branch.
 416
 417branch.<name>.merge::
 418        Defines, together with branch.<name>.remote, the upstream branch
 419        for the given branch. It tells 'git fetch'/'git pull'/'git rebase' which
 420        branch to merge and can also affect 'git push' (see push.default).
 421        When in branch <name>, it tells 'git fetch' the default
 422        refspec to be marked for merging in FETCH_HEAD. The value is
 423        handled like the remote part of a refspec, and must match a
 424        ref which is fetched from the remote given by
 425        "branch.<name>.remote".
 426        The merge information is used by 'git pull' (which at first calls
 427        'git fetch') to lookup the default branch for merging. Without
 428        this option, 'git pull' defaults to merge the first refspec fetched.
 429        Specify multiple values to get an octopus merge.
 430        If you wish to setup 'git pull' so that it merges into <name> from
 431        another branch in the local repository, you can point
 432        branch.<name>.merge to the desired branch, and use the relative path
 433        setting `.` (a period) for branch.<name>.remote.
 434
 435branch.<name>.mergeOptions::
 436        Sets default options for merging into branch <name>. The syntax and
 437        supported options are the same as those of linkgit:git-merge[1], but
 438        option values containing whitespace characters are currently not
 439        supported.
 440
 441branch.<name>.rebase::
 442        When true, rebase the branch <name> on top of the fetched branch,
 443        instead of merging the default branch from the default remote when
 444        "git pull" is run. See "pull.rebase" for doing this in a non
 445        branch-specific manner.
 446+
 447When `merges`, pass the `--rebase-merges` option to 'git rebase'
 448so that the local merge commits are included in the rebase (see
 449linkgit:git-rebase[1] for details).
 450+
 451When preserve, also pass `--preserve-merges` along to 'git rebase'
 452so that locally committed merge commits will not be flattened
 453by running 'git pull'.
 454+
 455When the value is `interactive`, the rebase is run in interactive mode.
 456+
 457*NOTE*: this is a possibly dangerous operation; do *not* use
 458it unless you understand the implications (see linkgit:git-rebase[1]
 459for details).
 460
 461branch.<name>.description::
 462        Branch description, can be edited with
 463        `git branch --edit-description`. Branch description is
 464        automatically added in the format-patch cover letter or
 465        request-pull summary.
 466
 467browser.<tool>.cmd::
 468        Specify the command to invoke the specified browser. The
 469        specified command is evaluated in shell with the URLs passed
 470        as arguments. (See linkgit:git-web{litdd}browse[1].)
 471
 472browser.<tool>.path::
 473        Override the path for the given tool that may be used to
 474        browse HTML help (see `-w` option in linkgit:git-help[1]) or a
 475        working repository in gitweb (see linkgit:git-instaweb[1]).
 476
 477checkout.defaultRemote::
 478        When you run 'git checkout <something>' and only have one
 479        remote, it may implicitly fall back on checking out and
 480        tracking e.g. 'origin/<something>'. This stops working as soon
 481        as you have more than one remote with a '<something>'
 482        reference. This setting allows for setting the name of a
 483        preferred remote that should always win when it comes to
 484        disambiguation. The typical use-case is to set this to
 485        `origin`.
 486+
 487Currently this is used by linkgit:git-checkout[1] when 'git checkout
 488<something>' will checkout the '<something>' branch on another remote,
 489and by linkgit:git-worktree[1] when 'git worktree add' refers to a
 490remote branch. This setting might be used for other checkout-like
 491commands or functionality in the future.
 492
 493checkout.optimizeNewBranch::
 494        Optimizes the performance of "git checkout -b <new_branch>" when
 495        using sparse-checkout.  When set to true, git will not update the
 496        repo based on the current sparse-checkout settings.  This means it
 497        will not update the skip-worktree bit in the index nor add/remove
 498        files in the working directory to reflect the current sparse checkout
 499        settings nor will it show the local changes.
 500
 501clean.requireForce::
 502        A boolean to make git-clean do nothing unless given -f,
 503        -i or -n.   Defaults to true.
 504
 505color.advice::
 506        A boolean to enable/disable color in hints (e.g. when a push
 507        failed, see `advice.*` for a list).  May be set to `always`,
 508        `false` (or `never`) or `auto` (or `true`), in which case colors
 509        are used only when the error output goes to a terminal. If
 510        unset, then the value of `color.ui` is used (`auto` by default).
 511
 512color.advice.hint::
 513        Use customized color for hints.
 514
 515color.blame.highlightRecent::
 516        This can be used to color the metadata of a blame line depending
 517        on age of the line.
 518+
 519This setting should be set to a comma-separated list of color and date settings,
 520starting and ending with a color, the dates should be set from oldest to newest.
 521The metadata will be colored given the colors if the the line was introduced
 522before the given timestamp, overwriting older timestamped colors.
 523+
 524Instead of an absolute timestamp relative timestamps work as well, e.g.
 5252.weeks.ago is valid to address anything older than 2 weeks.
 526+
 527It defaults to 'blue,12 month ago,white,1 month ago,red', which colors
 528everything older than one year blue, recent changes between one month and
 529one year old are kept white, and lines introduced within the last month are
 530colored red.
 531
 532color.blame.repeatedLines::
 533        Use the customized color for the part of git-blame output that
 534        is repeated meta information per line (such as commit id,
 535        author name, date and timezone). Defaults to cyan.
 536
 537color.branch::
 538        A boolean to enable/disable color in the output of
 539        linkgit:git-branch[1]. May be set to `always`,
 540        `false` (or `never`) or `auto` (or `true`), in which case colors are used
 541        only when the output is to a terminal. If unset, then the
 542        value of `color.ui` is used (`auto` by default).
 543
 544color.branch.<slot>::
 545        Use customized color for branch coloration. `<slot>` is one of
 546        `current` (the current branch), `local` (a local branch),
 547        `remote` (a remote-tracking branch in refs/remotes/),
 548        `upstream` (upstream tracking branch), `plain` (other
 549        refs).
 550
 551color.diff::
 552        Whether to use ANSI escape sequences to add color to patches.
 553        If this is set to `always`, linkgit:git-diff[1],
 554        linkgit:git-log[1], and linkgit:git-show[1] will use color
 555        for all patches.  If it is set to `true` or `auto`, those
 556        commands will only use color when output is to the terminal.
 557        If unset, then the value of `color.ui` is used (`auto` by
 558        default).
 559+
 560This does not affect linkgit:git-format-patch[1] or the
 561'git-diff-{asterisk}' plumbing commands.  Can be overridden on the
 562command line with the `--color[=<when>]` option.
 563
 564color.diff.<slot>::
 565        Use customized color for diff colorization.  `<slot>` specifies
 566        which part of the patch to use the specified color, and is one
 567        of `context` (context text - `plain` is a historical synonym),
 568        `meta` (metainformation), `frag`
 569        (hunk header), 'func' (function in hunk header), `old` (removed lines),
 570        `new` (added lines), `commit` (commit headers), `whitespace`
 571        (highlighting whitespace errors), `oldMoved` (deleted lines),
 572        `newMoved` (added lines), `oldMovedDimmed`, `oldMovedAlternative`,
 573        `oldMovedAlternativeDimmed`, `newMovedDimmed`, `newMovedAlternative`
 574        `newMovedAlternativeDimmed` (See the '<mode>'
 575        setting of '--color-moved' in linkgit:git-diff[1] for details),
 576        `contextDimmed`, `oldDimmed`, `newDimmed`, `contextBold`,
 577        `oldBold`, and `newBold` (see linkgit:git-range-diff[1] for details).
 578
 579color.decorate.<slot>::
 580        Use customized color for 'git log --decorate' output.  `<slot>` is one
 581        of `branch`, `remoteBranch`, `tag`, `stash` or `HEAD` for local
 582        branches, remote-tracking branches, tags, stash and HEAD, respectively
 583        and `grafted` for grafted commits.
 584
 585color.grep::
 586        When set to `always`, always highlight matches.  When `false` (or
 587        `never`), never.  When set to `true` or `auto`, use color only
 588        when the output is written to the terminal.  If unset, then the
 589        value of `color.ui` is used (`auto` by default).
 590
 591color.grep.<slot>::
 592        Use customized color for grep colorization.  `<slot>` specifies which
 593        part of the line to use the specified color, and is one of
 594+
 595--
 596`context`;;
 597        non-matching text in context lines (when using `-A`, `-B`, or `-C`)
 598`filename`;;
 599        filename prefix (when not using `-h`)
 600`function`;;
 601        function name lines (when using `-p`)
 602`lineNumber`;;
 603        line number prefix (when using `-n`)
 604`column`;;
 605        column number prefix (when using `--column`)
 606`match`;;
 607        matching text (same as setting `matchContext` and `matchSelected`)
 608`matchContext`;;
 609        matching text in context lines
 610`matchSelected`;;
 611        matching text in selected lines
 612`selected`;;
 613        non-matching text in selected lines
 614`separator`;;
 615        separators between fields on a line (`:`, `-`, and `=`)
 616        and between hunks (`--`)
 617--
 618
 619color.interactive::
 620        When set to `always`, always use colors for interactive prompts
 621        and displays (such as those used by "git-add --interactive" and
 622        "git-clean --interactive"). When false (or `never`), never.
 623        When set to `true` or `auto`, use colors only when the output is
 624        to the terminal. If unset, then the value of `color.ui` is
 625        used (`auto` by default).
 626
 627color.interactive.<slot>::
 628        Use customized color for 'git add --interactive' and 'git clean
 629        --interactive' output. `<slot>` may be `prompt`, `header`, `help`
 630        or `error`, for four distinct types of normal output from
 631        interactive commands.
 632
 633color.pager::
 634        A boolean to enable/disable colored output when the pager is in
 635        use (default is true).
 636
 637color.push::
 638        A boolean to enable/disable color in push errors. May be set to
 639        `always`, `false` (or `never`) or `auto` (or `true`), in which
 640        case colors are used only when the error output goes to a terminal.
 641        If unset, then the value of `color.ui` is used (`auto` by default).
 642
 643color.push.error::
 644        Use customized color for push errors.
 645
 646color.remote::
 647        If set, keywords at the start of the line are highlighted. The
 648        keywords are "error", "warning", "hint" and "success", and are
 649        matched case-insensitively. May be set to `always`, `false` (or
 650        `never`) or `auto` (or `true`). If unset, then the value of
 651        `color.ui` is used (`auto` by default).
 652
 653color.remote.<slot>::
 654        Use customized color for each remote keyword. `<slot>` may be
 655        `hint`, `warning`, `success` or `error` which match the
 656        corresponding keyword.
 657
 658color.showBranch::
 659        A boolean to enable/disable color in the output of
 660        linkgit:git-show-branch[1]. May be set to `always`,
 661        `false` (or `never`) or `auto` (or `true`), in which case colors are used
 662        only when the output is to a terminal. If unset, then the
 663        value of `color.ui` is used (`auto` by default).
 664
 665color.status::
 666        A boolean to enable/disable color in the output of
 667        linkgit:git-status[1]. May be set to `always`,
 668        `false` (or `never`) or `auto` (or `true`), in which case colors are used
 669        only when the output is to a terminal. If unset, then the
 670        value of `color.ui` is used (`auto` by default).
 671
 672color.status.<slot>::
 673        Use customized color for status colorization. `<slot>` is
 674        one of `header` (the header text of the status message),
 675        `added` or `updated` (files which are added but not committed),
 676        `changed` (files which are changed but not added in the index),
 677        `untracked` (files which are not tracked by Git),
 678        `branch` (the current branch),
 679        `nobranch` (the color the 'no branch' warning is shown in, defaulting
 680        to red),
 681        `localBranch` or `remoteBranch` (the local and remote branch names,
 682        respectively, when branch and tracking information is displayed in the
 683        status short-format), or
 684        `unmerged` (files which have unmerged changes).
 685
 686color.transport::
 687        A boolean to enable/disable color when pushes are rejected. May be
 688        set to `always`, `false` (or `never`) or `auto` (or `true`), in which
 689        case colors are used only when the error output goes to a terminal.
 690        If unset, then the value of `color.ui` is used (`auto` by default).
 691
 692color.transport.rejected::
 693        Use customized color when a push was rejected.
 694
 695color.ui::
 696        This variable determines the default value for variables such
 697        as `color.diff` and `color.grep` that control the use of color
 698        per command family. Its scope will expand as more commands learn
 699        configuration to set a default for the `--color` option.  Set it
 700        to `false` or `never` if you prefer Git commands not to use
 701        color unless enabled explicitly with some other configuration
 702        or the `--color` option. Set it to `always` if you want all
 703        output not intended for machine consumption to use color, to
 704        `true` or `auto` (this is the default since Git 1.8.4) if you
 705        want such output to use color when written to the terminal.
 706
 707column.ui::
 708        Specify whether supported commands should output in columns.
 709        This variable consists of a list of tokens separated by spaces
 710        or commas:
 711+
 712These options control when the feature should be enabled
 713(defaults to 'never'):
 714+
 715--
 716`always`;;
 717        always show in columns
 718`never`;;
 719        never show in columns
 720`auto`;;
 721        show in columns if the output is to the terminal
 722--
 723+
 724These options control layout (defaults to 'column').  Setting any
 725of these implies 'always' if none of 'always', 'never', or 'auto' are
 726specified.
 727+
 728--
 729`column`;;
 730        fill columns before rows
 731`row`;;
 732        fill rows before columns
 733`plain`;;
 734        show in one column
 735--
 736+
 737Finally, these options can be combined with a layout option (defaults
 738to 'nodense'):
 739+
 740--
 741`dense`;;
 742        make unequal size columns to utilize more space
 743`nodense`;;
 744        make equal size columns
 745--
 746
 747column.branch::
 748        Specify whether to output branch listing in `git branch` in columns.
 749        See `column.ui` for details.
 750
 751column.clean::
 752        Specify the layout when list items in `git clean -i`, which always
 753        shows files and directories in columns. See `column.ui` for details.
 754
 755column.status::
 756        Specify whether to output untracked files in `git status` in columns.
 757        See `column.ui` for details.
 758
 759column.tag::
 760        Specify whether to output tag listing in `git tag` in columns.
 761        See `column.ui` for details.
 762
 763commit.cleanup::
 764        This setting overrides the default of the `--cleanup` option in
 765        `git commit`. See linkgit:git-commit[1] for details. Changing the
 766        default can be useful when you always want to keep lines that begin
 767        with comment character `#` in your log message, in which case you
 768        would do `git config commit.cleanup whitespace` (note that you will
 769        have to remove the help lines that begin with `#` in the commit log
 770        template yourself, if you do this).
 771
 772commit.gpgSign::
 773
 774        A boolean to specify whether all commits should be GPG signed.
 775        Use of this option when doing operations such as rebase can
 776        result in a large number of commits being signed. It may be
 777        convenient to use an agent to avoid typing your GPG passphrase
 778        several times.
 779
 780commit.status::
 781        A boolean to enable/disable inclusion of status information in the
 782        commit message template when using an editor to prepare the commit
 783        message.  Defaults to true.
 784
 785commit.template::
 786        Specify the pathname of a file to use as the template for
 787        new commit messages.
 788
 789commit.verbose::
 790        A boolean or int to specify the level of verbose with `git commit`.
 791        See linkgit:git-commit[1].
 792
 793credential.helper::
 794        Specify an external helper to be called when a username or
 795        password credential is needed; the helper may consult external
 796        storage to avoid prompting the user for the credentials. Note
 797        that multiple helpers may be defined. See linkgit:gitcredentials[7]
 798        for details.
 799
 800credential.useHttpPath::
 801        When acquiring credentials, consider the "path" component of an http
 802        or https URL to be important. Defaults to false. See
 803        linkgit:gitcredentials[7] for more information.
 804
 805credential.username::
 806        If no username is set for a network authentication, use this username
 807        by default. See credential.<context>.* below, and
 808        linkgit:gitcredentials[7].
 809
 810credential.<url>.*::
 811        Any of the credential.* options above can be applied selectively to
 812        some credentials. For example "credential.https://example.com.username"
 813        would set the default username only for https connections to
 814        example.com. See linkgit:gitcredentials[7] for details on how URLs are
 815        matched.
 816
 817credentialCache.ignoreSIGHUP::
 818        Tell git-credential-cache--daemon to ignore SIGHUP, instead of quitting.
 819
 820completion.commands::
 821        This is only used by git-completion.bash to add or remove
 822        commands from the list of completed commands. Normally only
 823        porcelain commands and a few select others are completed. You
 824        can add more commands, separated by space, in this
 825        variable. Prefixing the command with '-' will remove it from
 826        the existing list.
 827
 828include::diff-config.txt[]
 829
 830difftool.<tool>.path::
 831        Override the path for the given tool.  This is useful in case
 832        your tool is not in the PATH.
 833
 834difftool.<tool>.cmd::
 835        Specify the command to invoke the specified diff tool.
 836        The specified command is evaluated in shell with the following
 837        variables available:  'LOCAL' is set to the name of the temporary
 838        file containing the contents of the diff pre-image and 'REMOTE'
 839        is set to the name of the temporary file containing the contents
 840        of the diff post-image.
 841
 842difftool.prompt::
 843        Prompt before each invocation of the diff tool.
 844
 845fastimport.unpackLimit::
 846        If the number of objects imported by linkgit:git-fast-import[1]
 847        is below this limit, then the objects will be unpacked into
 848        loose object files.  However if the number of imported objects
 849        equals or exceeds this limit then the pack will be stored as a
 850        pack.  Storing the pack from a fast-import can make the import
 851        operation complete faster, especially on slow filesystems.  If
 852        not set, the value of `transfer.unpackLimit` is used instead.
 853
 854include::fetch-config.txt[]
 855
 856include::format-config.txt[]
 857
 858filter.<driver>.clean::
 859        The command which is used to convert the content of a worktree
 860        file to a blob upon checkin.  See linkgit:gitattributes[5] for
 861        details.
 862
 863filter.<driver>.smudge::
 864        The command which is used to convert the content of a blob
 865        object to a worktree file upon checkout.  See
 866        linkgit:gitattributes[5] for details.
 867
 868fsck.<msg-id>::
 869        During fsck git may find issues with legacy data which
 870        wouldn't be generated by current versions of git, and which
 871        wouldn't be sent over the wire if `transfer.fsckObjects` was
 872        set. This feature is intended to support working with legacy
 873        repositories containing such data.
 874+
 875Setting `fsck.<msg-id>` will be picked up by linkgit:git-fsck[1], but
 876to accept pushes of such data set `receive.fsck.<msg-id>` instead, or
 877to clone or fetch it set `fetch.fsck.<msg-id>`.
 878+
 879The rest of the documentation discusses `fsck.*` for brevity, but the
 880same applies for the corresponding `receive.fsck.*` and
 881`fetch.<msg-id>.*`. variables.
 882+
 883Unlike variables like `color.ui` and `core.editor` the
 884`receive.fsck.<msg-id>` and `fetch.fsck.<msg-id>` variables will not
 885fall back on the `fsck.<msg-id>` configuration if they aren't set. To
 886uniformly configure the same fsck settings in different circumstances
 887all three of them they must all set to the same values.
 888+
 889When `fsck.<msg-id>` is set, errors can be switched to warnings and
 890vice versa by configuring the `fsck.<msg-id>` setting where the
 891`<msg-id>` is the fsck message ID and the value is one of `error`,
 892`warn` or `ignore`. For convenience, fsck prefixes the error/warning
 893with the message ID, e.g. "missingEmail: invalid author/committer line
 894- missing email" means that setting `fsck.missingEmail = ignore` will
 895hide that issue.
 896+
 897In general, it is better to enumerate existing objects with problems
 898with `fsck.skipList`, instead of listing the kind of breakages these
 899problematic objects share to be ignored, as doing the latter will
 900allow new instances of the same breakages go unnoticed.
 901+
 902Setting an unknown `fsck.<msg-id>` value will cause fsck to die, but
 903doing the same for `receive.fsck.<msg-id>` and `fetch.fsck.<msg-id>`
 904will only cause git to warn.
 905
 906fsck.skipList::
 907        The path to a list of object names (i.e. one unabbreviated SHA-1 per
 908        line) that are known to be broken in a non-fatal way and should
 909        be ignored. On versions of Git 2.20 and later comments ('#'), empty
 910        lines, and any leading and trailing whitespace is ignored. Everything
 911        but a SHA-1 per line will error out on older versions.
 912+
 913This feature is useful when an established project should be accepted
 914despite early commits containing errors that can be safely ignored
 915such as invalid committer email addresses.  Note: corrupt objects
 916cannot be skipped with this setting.
 917+
 918Like `fsck.<msg-id>` this variable has corresponding
 919`receive.fsck.skipList` and `fetch.fsck.skipList` variants.
 920+
 921Unlike variables like `color.ui` and `core.editor` the
 922`receive.fsck.skipList` and `fetch.fsck.skipList` variables will not
 923fall back on the `fsck.skipList` configuration if they aren't set. To
 924uniformly configure the same fsck settings in different circumstances
 925all three of them they must all set to the same values.
 926+
 927Older versions of Git (before 2.20) documented that the object names
 928list should be sorted. This was never a requirement, the object names
 929could appear in any order, but when reading the list we tracked whether
 930the list was sorted for the purposes of an internal binary search
 931implementation, which could save itself some work with an already sorted
 932list. Unless you had a humongous list there was no reason to go out of
 933your way to pre-sort the list. After Git version 2.20 a hash implementation
 934is used instead, so there's now no reason to pre-sort the list.
 935
 936gc.aggressiveDepth::
 937        The depth parameter used in the delta compression
 938        algorithm used by 'git gc --aggressive'.  This defaults
 939        to 50.
 940
 941gc.aggressiveWindow::
 942        The window size parameter used in the delta compression
 943        algorithm used by 'git gc --aggressive'.  This defaults
 944        to 250.
 945
 946gc.auto::
 947        When there are approximately more than this many loose
 948        objects in the repository, `git gc --auto` will pack them.
 949        Some Porcelain commands use this command to perform a
 950        light-weight garbage collection from time to time.  The
 951        default value is 6700.  Setting this to 0 disables it.
 952
 953gc.autoPackLimit::
 954        When there are more than this many packs that are not
 955        marked with `*.keep` file in the repository, `git gc
 956        --auto` consolidates them into one larger pack.  The
 957        default value is 50.  Setting this to 0 disables it.
 958
 959gc.autoDetach::
 960        Make `git gc --auto` return immediately and run in background
 961        if the system supports it. Default is true.
 962
 963gc.bigPackThreshold::
 964        If non-zero, all packs larger than this limit are kept when
 965        `git gc` is run. This is very similar to `--keep-base-pack`
 966        except that all packs that meet the threshold are kept, not
 967        just the base pack. Defaults to zero. Common unit suffixes of
 968        'k', 'm', or 'g' are supported.
 969+
 970Note that if the number of kept packs is more than gc.autoPackLimit,
 971this configuration variable is ignored, all packs except the base pack
 972will be repacked. After this the number of packs should go below
 973gc.autoPackLimit and gc.bigPackThreshold should be respected again.
 974
 975gc.writeCommitGraph::
 976        If true, then gc will rewrite the commit-graph file when
 977        linkgit:git-gc[1] is run. When using linkgit:git-gc[1]
 978        '--auto' the commit-graph will be updated if housekeeping is
 979        required. Default is false. See linkgit:git-commit-graph[1]
 980        for details.
 981
 982gc.logExpiry::
 983        If the file gc.log exists, then `git gc --auto` will print
 984        its content and exit with status zero instead of running
 985        unless that file is more than 'gc.logExpiry' old.  Default is
 986        "1.day".  See `gc.pruneExpire` for more ways to specify its
 987        value.
 988
 989gc.packRefs::
 990        Running `git pack-refs` in a repository renders it
 991        unclonable by Git versions prior to 1.5.1.2 over dumb
 992        transports such as HTTP.  This variable determines whether
 993        'git gc' runs `git pack-refs`. This can be set to `notbare`
 994        to enable it within all non-bare repos or it can be set to a
 995        boolean value.  The default is `true`.
 996
 997gc.pruneExpire::
 998        When 'git gc' is run, it will call 'prune --expire 2.weeks.ago'.
 999        Override the grace period with this config variable.  The value
1000        "now" may be used to disable this grace period and always prune
1001        unreachable objects immediately, or "never" may be used to
1002        suppress pruning.  This feature helps prevent corruption when
1003        'git gc' runs concurrently with another process writing to the
1004        repository; see the "NOTES" section of linkgit:git-gc[1].
1005
1006gc.worktreePruneExpire::
1007        When 'git gc' is run, it calls
1008        'git worktree prune --expire 3.months.ago'.
1009        This config variable can be used to set a different grace
1010        period. The value "now" may be used to disable the grace
1011        period and prune `$GIT_DIR/worktrees` immediately, or "never"
1012        may be used to suppress pruning.
1013
1014gc.reflogExpire::
1015gc.<pattern>.reflogExpire::
1016        'git reflog expire' removes reflog entries older than
1017        this time; defaults to 90 days. The value "now" expires all
1018        entries immediately, and "never" suppresses expiration
1019        altogether. With "<pattern>" (e.g.
1020        "refs/stash") in the middle the setting applies only to
1021        the refs that match the <pattern>.
1022
1023gc.reflogExpireUnreachable::
1024gc.<pattern>.reflogExpireUnreachable::
1025        'git reflog expire' removes reflog entries older than
1026        this time and are not reachable from the current tip;
1027        defaults to 30 days. The value "now" expires all entries
1028        immediately, and "never" suppresses expiration altogether.
1029        With "<pattern>" (e.g. "refs/stash")
1030        in the middle, the setting applies only to the refs that
1031        match the <pattern>.
1032
1033gc.rerereResolved::
1034        Records of conflicted merge you resolved earlier are
1035        kept for this many days when 'git rerere gc' is run.
1036        You can also use more human-readable "1.month.ago", etc.
1037        The default is 60 days.  See linkgit:git-rerere[1].
1038
1039gc.rerereUnresolved::
1040        Records of conflicted merge you have not resolved are
1041        kept for this many days when 'git rerere gc' is run.
1042        You can also use more human-readable "1.month.ago", etc.
1043        The default is 15 days.  See linkgit:git-rerere[1].
1044
1045include::gitcvs-config.txt[]
1046
1047gitweb.category::
1048gitweb.description::
1049gitweb.owner::
1050gitweb.url::
1051        See linkgit:gitweb[1] for description.
1052
1053gitweb.avatar::
1054gitweb.blame::
1055gitweb.grep::
1056gitweb.highlight::
1057gitweb.patches::
1058gitweb.pickaxe::
1059gitweb.remote_heads::
1060gitweb.showSizes::
1061gitweb.snapshot::
1062        See linkgit:gitweb.conf[5] for description.
1063
1064grep.lineNumber::
1065        If set to true, enable `-n` option by default.
1066
1067grep.column::
1068        If set to true, enable the `--column` option by default.
1069
1070grep.patternType::
1071        Set the default matching behavior. Using a value of 'basic', 'extended',
1072        'fixed', or 'perl' will enable the `--basic-regexp`, `--extended-regexp`,
1073        `--fixed-strings`, or `--perl-regexp` option accordingly, while the
1074        value 'default' will return to the default matching behavior.
1075
1076grep.extendedRegexp::
1077        If set to true, enable `--extended-regexp` option by default. This
1078        option is ignored when the `grep.patternType` option is set to a value
1079        other than 'default'.
1080
1081grep.threads::
1082        Number of grep worker threads to use.
1083        See `grep.threads` in linkgit:git-grep[1] for more information.
1084
1085grep.fallbackToNoIndex::
1086        If set to true, fall back to git grep --no-index if git grep
1087        is executed outside of a git repository.  Defaults to false.
1088
1089gpg.program::
1090        Use this custom program instead of "`gpg`" found on `$PATH` when
1091        making or verifying a PGP signature. The program must support the
1092        same command-line interface as GPG, namely, to verify a detached
1093        signature, "`gpg --verify $file - <$signature`" is run, and the
1094        program is expected to signal a good signature by exiting with
1095        code 0, and to generate an ASCII-armored detached signature, the
1096        standard input of "`gpg -bsau $key`" is fed with the contents to be
1097        signed, and the program is expected to send the result to its
1098        standard output.
1099
1100gpg.format::
1101        Specifies which key format to use when signing with `--gpg-sign`.
1102        Default is "openpgp" and another possible value is "x509".
1103
1104gpg.<format>.program::
1105        Use this to customize the program used for the signing format you
1106        chose. (see `gpg.program` and `gpg.format`) `gpg.program` can still
1107        be used as a legacy synonym for `gpg.openpgp.program`. The default
1108        value for `gpg.x509.program` is "gpgsm".
1109
1110include::gui-config.txt[]
1111
1112guitool.<name>.cmd::
1113        Specifies the shell command line to execute when the corresponding item
1114        of the linkgit:git-gui[1] `Tools` menu is invoked. This option is
1115        mandatory for every tool. The command is executed from the root of
1116        the working directory, and in the environment it receives the name of
1117        the tool as `GIT_GUITOOL`, the name of the currently selected file as
1118        'FILENAME', and the name of the current branch as 'CUR_BRANCH' (if
1119        the head is detached, 'CUR_BRANCH' is empty).
1120
1121guitool.<name>.needsFile::
1122        Run the tool only if a diff is selected in the GUI. It guarantees
1123        that 'FILENAME' is not empty.
1124
1125guitool.<name>.noConsole::
1126        Run the command silently, without creating a window to display its
1127        output.
1128
1129guitool.<name>.noRescan::
1130        Don't rescan the working directory for changes after the tool
1131        finishes execution.
1132
1133guitool.<name>.confirm::
1134        Show a confirmation dialog before actually running the tool.
1135
1136guitool.<name>.argPrompt::
1137        Request a string argument from the user, and pass it to the tool
1138        through the `ARGS` environment variable. Since requesting an
1139        argument implies confirmation, the 'confirm' option has no effect
1140        if this is enabled. If the option is set to 'true', 'yes', or '1',
1141        the dialog uses a built-in generic prompt; otherwise the exact
1142        value of the variable is used.
1143
1144guitool.<name>.revPrompt::
1145        Request a single valid revision from the user, and set the
1146        `REVISION` environment variable. In other aspects this option
1147        is similar to 'argPrompt', and can be used together with it.
1148
1149guitool.<name>.revUnmerged::
1150        Show only unmerged branches in the 'revPrompt' subdialog.
1151        This is useful for tools similar to merge or rebase, but not
1152        for things like checkout or reset.
1153
1154guitool.<name>.title::
1155        Specifies the title to use for the prompt dialog. The default
1156        is the tool name.
1157
1158guitool.<name>.prompt::
1159        Specifies the general prompt string to display at the top of
1160        the dialog, before subsections for 'argPrompt' and 'revPrompt'.
1161        The default value includes the actual command.
1162
1163help.browser::
1164        Specify the browser that will be used to display help in the
1165        'web' format. See linkgit:git-help[1].
1166
1167help.format::
1168        Override the default help format used by linkgit:git-help[1].
1169        Values 'man', 'info', 'web' and 'html' are supported. 'man' is
1170        the default. 'web' and 'html' are the same.
1171
1172help.autoCorrect::
1173        Automatically correct and execute mistyped commands after
1174        waiting for the given number of deciseconds (0.1 sec). If more
1175        than one command can be deduced from the entered text, nothing
1176        will be executed.  If the value of this option is negative,
1177        the corrected command will be executed immediately. If the
1178        value is 0 - the command will be just shown but not executed.
1179        This is the default.
1180
1181help.htmlPath::
1182        Specify the path where the HTML documentation resides. File system paths
1183        and URLs are supported. HTML pages will be prefixed with this path when
1184        help is displayed in the 'web' format. This defaults to the documentation
1185        path of your Git installation.
1186
1187http.proxy::
1188        Override the HTTP proxy, normally configured using the 'http_proxy',
1189        'https_proxy', and 'all_proxy' environment variables (see `curl(1)`). In
1190        addition to the syntax understood by curl, it is possible to specify a
1191        proxy string with a user name but no password, in which case git will
1192        attempt to acquire one in the same way it does for other credentials. See
1193        linkgit:gitcredentials[7] for more information. The syntax thus is
1194        '[protocol://][user[:password]@]proxyhost[:port]'. This can be overridden
1195        on a per-remote basis; see remote.<name>.proxy
1196
1197http.proxyAuthMethod::
1198        Set the method with which to authenticate against the HTTP proxy. This
1199        only takes effect if the configured proxy string contains a user name part
1200        (i.e. is of the form 'user@host' or 'user@host:port'). This can be
1201        overridden on a per-remote basis; see `remote.<name>.proxyAuthMethod`.
1202        Both can be overridden by the `GIT_HTTP_PROXY_AUTHMETHOD` environment
1203        variable.  Possible values are:
1204+
1205--
1206* `anyauth` - Automatically pick a suitable authentication method. It is
1207  assumed that the proxy answers an unauthenticated request with a 407
1208  status code and one or more Proxy-authenticate headers with supported
1209  authentication methods. This is the default.
1210* `basic` - HTTP Basic authentication
1211* `digest` - HTTP Digest authentication; this prevents the password from being
1212  transmitted to the proxy in clear text
1213* `negotiate` - GSS-Negotiate authentication (compare the --negotiate option
1214  of `curl(1)`)
1215* `ntlm` - NTLM authentication (compare the --ntlm option of `curl(1)`)
1216--
1217
1218http.emptyAuth::
1219        Attempt authentication without seeking a username or password.  This
1220        can be used to attempt GSS-Negotiate authentication without specifying
1221        a username in the URL, as libcurl normally requires a username for
1222        authentication.
1223
1224http.delegation::
1225        Control GSSAPI credential delegation. The delegation is disabled
1226        by default in libcurl since version 7.21.7. Set parameter to tell
1227        the server what it is allowed to delegate when it comes to user
1228        credentials. Used with GSS/kerberos. Possible values are:
1229+
1230--
1231* `none` - Don't allow any delegation.
1232* `policy` - Delegates if and only if the OK-AS-DELEGATE flag is set in the
1233  Kerberos service ticket, which is a matter of realm policy.
1234* `always` - Unconditionally allow the server to delegate.
1235--
1236
1237
1238http.extraHeader::
1239        Pass an additional HTTP header when communicating with a server.  If
1240        more than one such entry exists, all of them are added as extra
1241        headers.  To allow overriding the settings inherited from the system
1242        config, an empty value will reset the extra headers to the empty list.
1243
1244http.cookieFile::
1245        The pathname of a file containing previously stored cookie lines,
1246        which should be used
1247        in the Git http session, if they match the server. The file format
1248        of the file to read cookies from should be plain HTTP headers or
1249        the Netscape/Mozilla cookie file format (see `curl(1)`).
1250        NOTE that the file specified with http.cookieFile is used only as
1251        input unless http.saveCookies is set.
1252
1253http.saveCookies::
1254        If set, store cookies received during requests to the file specified by
1255        http.cookieFile. Has no effect if http.cookieFile is unset.
1256
1257http.sslVersion::
1258        The SSL version to use when negotiating an SSL connection, if you
1259        want to force the default.  The available and default version
1260        depend on whether libcurl was built against NSS or OpenSSL and the
1261        particular configuration of the crypto library in use. Internally
1262        this sets the 'CURLOPT_SSL_VERSION' option; see the libcurl
1263        documentation for more details on the format of this option and
1264        for the ssl version supported. Actually the possible values of
1265        this option are:
1266
1267        - sslv2
1268        - sslv3
1269        - tlsv1
1270        - tlsv1.0
1271        - tlsv1.1
1272        - tlsv1.2
1273        - tlsv1.3
1274
1275+
1276Can be overridden by the `GIT_SSL_VERSION` environment variable.
1277To force git to use libcurl's default ssl version and ignore any
1278explicit http.sslversion option, set `GIT_SSL_VERSION` to the
1279empty string.
1280
1281http.sslCipherList::
1282  A list of SSL ciphers to use when negotiating an SSL connection.
1283  The available ciphers depend on whether libcurl was built against
1284  NSS or OpenSSL and the particular configuration of the crypto
1285  library in use.  Internally this sets the 'CURLOPT_SSL_CIPHER_LIST'
1286  option; see the libcurl documentation for more details on the format
1287  of this list.
1288+
1289Can be overridden by the `GIT_SSL_CIPHER_LIST` environment variable.
1290To force git to use libcurl's default cipher list and ignore any
1291explicit http.sslCipherList option, set `GIT_SSL_CIPHER_LIST` to the
1292empty string.
1293
1294http.sslVerify::
1295        Whether to verify the SSL certificate when fetching or pushing
1296        over HTTPS. Defaults to true. Can be overridden by the
1297        `GIT_SSL_NO_VERIFY` environment variable.
1298
1299http.sslCert::
1300        File containing the SSL certificate when fetching or pushing
1301        over HTTPS. Can be overridden by the `GIT_SSL_CERT` environment
1302        variable.
1303
1304http.sslKey::
1305        File containing the SSL private key when fetching or pushing
1306        over HTTPS. Can be overridden by the `GIT_SSL_KEY` environment
1307        variable.
1308
1309http.sslCertPasswordProtected::
1310        Enable Git's password prompt for the SSL certificate.  Otherwise
1311        OpenSSL will prompt the user, possibly many times, if the
1312        certificate or private key is encrypted.  Can be overridden by the
1313        `GIT_SSL_CERT_PASSWORD_PROTECTED` environment variable.
1314
1315http.sslCAInfo::
1316        File containing the certificates to verify the peer with when
1317        fetching or pushing over HTTPS. Can be overridden by the
1318        `GIT_SSL_CAINFO` environment variable.
1319
1320http.sslCAPath::
1321        Path containing files with the CA certificates to verify the peer
1322        with when fetching or pushing over HTTPS. Can be overridden
1323        by the `GIT_SSL_CAPATH` environment variable.
1324
1325http.sslBackend::
1326        Name of the SSL backend to use (e.g. "openssl" or "schannel").
1327        This option is ignored if cURL lacks support for choosing the SSL
1328        backend at runtime.
1329
1330http.schannelCheckRevoke::
1331        Used to enforce or disable certificate revocation checks in cURL
1332        when http.sslBackend is set to "schannel". Defaults to `true` if
1333        unset. Only necessary to disable this if Git consistently errors
1334        and the message is about checking the revocation status of a
1335        certificate. This option is ignored if cURL lacks support for
1336        setting the relevant SSL option at runtime.
1337
1338http.schannelUseSSLCAInfo::
1339        As of cURL v7.60.0, the Secure Channel backend can use the
1340        certificate bundle provided via `http.sslCAInfo`, but that would
1341        override the Windows Certificate Store. Since this is not desirable
1342        by default, Git will tell cURL not to use that bundle by default
1343        when the `schannel` backend was configured via `http.sslBackend`,
1344        unless `http.schannelUseSSLCAInfo` overrides this behavior.
1345
1346http.pinnedpubkey::
1347        Public key of the https service. It may either be the filename of
1348        a PEM or DER encoded public key file or a string starting with
1349        'sha256//' followed by the base64 encoded sha256 hash of the
1350        public key. See also libcurl 'CURLOPT_PINNEDPUBLICKEY'. git will
1351        exit with an error if this option is set but not supported by
1352        cURL.
1353
1354http.sslTry::
1355        Attempt to use AUTH SSL/TLS and encrypted data transfers
1356        when connecting via regular FTP protocol. This might be needed
1357        if the FTP server requires it for security reasons or you wish
1358        to connect securely whenever remote FTP server supports it.
1359        Default is false since it might trigger certificate verification
1360        errors on misconfigured servers.
1361
1362http.maxRequests::
1363        How many HTTP requests to launch in parallel. Can be overridden
1364        by the `GIT_HTTP_MAX_REQUESTS` environment variable. Default is 5.
1365
1366http.minSessions::
1367        The number of curl sessions (counted across slots) to be kept across
1368        requests. They will not be ended with curl_easy_cleanup() until
1369        http_cleanup() is invoked. If USE_CURL_MULTI is not defined, this
1370        value will be capped at 1. Defaults to 1.
1371
1372http.postBuffer::
1373        Maximum size in bytes of the buffer used by smart HTTP
1374        transports when POSTing data to the remote system.
1375        For requests larger than this buffer size, HTTP/1.1 and
1376        Transfer-Encoding: chunked is used to avoid creating a
1377        massive pack file locally.  Default is 1 MiB, which is
1378        sufficient for most requests.
1379
1380http.lowSpeedLimit, http.lowSpeedTime::
1381        If the HTTP transfer speed is less than 'http.lowSpeedLimit'
1382        for longer than 'http.lowSpeedTime' seconds, the transfer is aborted.
1383        Can be overridden by the `GIT_HTTP_LOW_SPEED_LIMIT` and
1384        `GIT_HTTP_LOW_SPEED_TIME` environment variables.
1385
1386http.noEPSV::
1387        A boolean which disables using of EPSV ftp command by curl.
1388        This can helpful with some "poor" ftp servers which don't
1389        support EPSV mode. Can be overridden by the `GIT_CURL_FTP_NO_EPSV`
1390        environment variable. Default is false (curl will use EPSV).
1391
1392http.userAgent::
1393        The HTTP USER_AGENT string presented to an HTTP server.  The default
1394        value represents the version of the client Git such as git/1.7.1.
1395        This option allows you to override this value to a more common value
1396        such as Mozilla/4.0.  This may be necessary, for instance, if
1397        connecting through a firewall that restricts HTTP connections to a set
1398        of common USER_AGENT strings (but not including those like git/1.7.1).
1399        Can be overridden by the `GIT_HTTP_USER_AGENT` environment variable.
1400
1401http.followRedirects::
1402        Whether git should follow HTTP redirects. If set to `true`, git
1403        will transparently follow any redirect issued by a server it
1404        encounters. If set to `false`, git will treat all redirects as
1405        errors. If set to `initial`, git will follow redirects only for
1406        the initial request to a remote, but not for subsequent
1407        follow-up HTTP requests. Since git uses the redirected URL as
1408        the base for the follow-up requests, this is generally
1409        sufficient. The default is `initial`.
1410
1411http.<url>.*::
1412        Any of the http.* options above can be applied selectively to some URLs.
1413        For a config key to match a URL, each element of the config key is
1414        compared to that of the URL, in the following order:
1415+
1416--
1417. Scheme (e.g., `https` in `https://example.com/`). This field
1418  must match exactly between the config key and the URL.
1419
1420. Host/domain name (e.g., `example.com` in `https://example.com/`).
1421  This field must match between the config key and the URL. It is
1422  possible to specify a `*` as part of the host name to match all subdomains
1423  at this level. `https://*.example.com/` for example would match
1424  `https://foo.example.com/`, but not `https://foo.bar.example.com/`.
1425
1426. Port number (e.g., `8080` in `http://example.com:8080/`).
1427  This field must match exactly between the config key and the URL.
1428  Omitted port numbers are automatically converted to the correct
1429  default for the scheme before matching.
1430
1431. Path (e.g., `repo.git` in `https://example.com/repo.git`). The
1432  path field of the config key must match the path field of the URL
1433  either exactly or as a prefix of slash-delimited path elements.  This means
1434  a config key with path `foo/` matches URL path `foo/bar`.  A prefix can only
1435  match on a slash (`/`) boundary.  Longer matches take precedence (so a config
1436  key with path `foo/bar` is a better match to URL path `foo/bar` than a config
1437  key with just path `foo/`).
1438
1439. User name (e.g., `user` in `https://user@example.com/repo.git`). If
1440  the config key has a user name it must match the user name in the
1441  URL exactly. If the config key does not have a user name, that
1442  config key will match a URL with any user name (including none),
1443  but at a lower precedence than a config key with a user name.
1444--
1445+
1446The list above is ordered by decreasing precedence; a URL that matches
1447a config key's path is preferred to one that matches its user name. For example,
1448if the URL is `https://user@example.com/foo/bar` a config key match of
1449`https://example.com/foo` will be preferred over a config key match of
1450`https://user@example.com`.
1451+
1452All URLs are normalized before attempting any matching (the password part,
1453if embedded in the URL, is always ignored for matching purposes) so that
1454equivalent URLs that are simply spelled differently will match properly.
1455Environment variable settings always override any matches.  The URLs that are
1456matched against are those given directly to Git commands.  This means any URLs
1457visited as a result of a redirection do not participate in matching.
1458
1459ssh.variant::
1460        By default, Git determines the command line arguments to use
1461        based on the basename of the configured SSH command (configured
1462        using the environment variable `GIT_SSH` or `GIT_SSH_COMMAND` or
1463        the config setting `core.sshCommand`). If the basename is
1464        unrecognized, Git will attempt to detect support of OpenSSH
1465        options by first invoking the configured SSH command with the
1466        `-G` (print configuration) option and will subsequently use
1467        OpenSSH options (if that is successful) or no options besides
1468        the host and remote command (if it fails).
1469+
1470The config variable `ssh.variant` can be set to override this detection.
1471Valid values are `ssh` (to use OpenSSH options), `plink`, `putty`,
1472`tortoiseplink`, `simple` (no options except the host and remote command).
1473The default auto-detection can be explicitly requested using the value
1474`auto`.  Any other value is treated as `ssh`.  This setting can also be
1475overridden via the environment variable `GIT_SSH_VARIANT`.
1476+
1477The current command-line parameters used for each variant are as
1478follows:
1479+
1480--
1481
1482* `ssh` - [-p port] [-4] [-6] [-o option] [username@]host command
1483
1484* `simple` - [username@]host command
1485
1486* `plink` or `putty` - [-P port] [-4] [-6] [username@]host command
1487
1488* `tortoiseplink` - [-P port] [-4] [-6] -batch [username@]host command
1489
1490--
1491+
1492Except for the `simple` variant, command-line parameters are likely to
1493change as git gains new features.
1494
1495i18n.commitEncoding::
1496        Character encoding the commit messages are stored in; Git itself
1497        does not care per se, but this information is necessary e.g. when
1498        importing commits from emails or in the gitk graphical history
1499        browser (and possibly at other places in the future or in other
1500        porcelains). See e.g. linkgit:git-mailinfo[1]. Defaults to 'utf-8'.
1501
1502i18n.logOutputEncoding::
1503        Character encoding the commit messages are converted to when
1504        running 'git log' and friends.
1505
1506imap::
1507        The configuration variables in the 'imap' section are described
1508        in linkgit:git-imap-send[1].
1509
1510index.threads::
1511        Specifies the number of threads to spawn when loading the index.
1512        This is meant to reduce index load time on multiprocessor machines.
1513        Specifying 0 or 'true' will cause Git to auto-detect the number of
1514        CPU's and set the number of threads accordingly. Specifying 1 or
1515        'false' will disable multithreading. Defaults to 'true'.
1516
1517index.version::
1518        Specify the version with which new index files should be
1519        initialized.  This does not affect existing repositories.
1520
1521init.templateDir::
1522        Specify the directory from which templates will be copied.
1523        (See the "TEMPLATE DIRECTORY" section of linkgit:git-init[1].)
1524
1525instaweb.browser::
1526        Specify the program that will be used to browse your working
1527        repository in gitweb. See linkgit:git-instaweb[1].
1528
1529instaweb.httpd::
1530        The HTTP daemon command-line to start gitweb on your working
1531        repository. See linkgit:git-instaweb[1].
1532
1533instaweb.local::
1534        If true the web server started by linkgit:git-instaweb[1] will
1535        be bound to the local IP (127.0.0.1).
1536
1537instaweb.modulePath::
1538        The default module path for linkgit:git-instaweb[1] to use
1539        instead of /usr/lib/apache2/modules.  Only used if httpd
1540        is Apache.
1541
1542instaweb.port::
1543        The port number to bind the gitweb httpd to. See
1544        linkgit:git-instaweb[1].
1545
1546interactive.singleKey::
1547        In interactive commands, allow the user to provide one-letter
1548        input with a single key (i.e., without hitting enter).
1549        Currently this is used by the `--patch` mode of
1550        linkgit:git-add[1], linkgit:git-checkout[1], linkgit:git-commit[1],
1551        linkgit:git-reset[1], and linkgit:git-stash[1]. Note that this
1552        setting is silently ignored if portable keystroke input
1553        is not available; requires the Perl module Term::ReadKey.
1554
1555interactive.diffFilter::
1556        When an interactive command (such as `git add --patch`) shows
1557        a colorized diff, git will pipe the diff through the shell
1558        command defined by this configuration variable. The command may
1559        mark up the diff further for human consumption, provided that it
1560        retains a one-to-one correspondence with the lines in the
1561        original diff. Defaults to disabled (no filtering).
1562
1563log.abbrevCommit::
1564        If true, makes linkgit:git-log[1], linkgit:git-show[1], and
1565        linkgit:git-whatchanged[1] assume `--abbrev-commit`. You may
1566        override this option with `--no-abbrev-commit`.
1567
1568log.date::
1569        Set the default date-time mode for the 'log' command.
1570        Setting a value for log.date is similar to using 'git log''s
1571        `--date` option.  See linkgit:git-log[1] for details.
1572
1573log.decorate::
1574        Print out the ref names of any commits that are shown by the log
1575        command. If 'short' is specified, the ref name prefixes 'refs/heads/',
1576        'refs/tags/' and 'refs/remotes/' will not be printed. If 'full' is
1577        specified, the full ref name (including prefix) will be printed.
1578        If 'auto' is specified, then if the output is going to a terminal,
1579        the ref names are shown as if 'short' were given, otherwise no ref
1580        names are shown. This is the same as the `--decorate` option
1581        of the `git log`.
1582
1583log.follow::
1584        If `true`, `git log` will act as if the `--follow` option was used when
1585        a single <path> is given.  This has the same limitations as `--follow`,
1586        i.e. it cannot be used to follow multiple files and does not work well
1587        on non-linear history.
1588
1589log.graphColors::
1590        A list of colors, separated by commas, that can be used to draw
1591        history lines in `git log --graph`.
1592
1593log.showRoot::
1594        If true, the initial commit will be shown as a big creation event.
1595        This is equivalent to a diff against an empty tree.
1596        Tools like linkgit:git-log[1] or linkgit:git-whatchanged[1], which
1597        normally hide the root commit will now show it. True by default.
1598
1599log.showSignature::
1600        If true, makes linkgit:git-log[1], linkgit:git-show[1], and
1601        linkgit:git-whatchanged[1] assume `--show-signature`.
1602
1603log.mailmap::
1604        If true, makes linkgit:git-log[1], linkgit:git-show[1], and
1605        linkgit:git-whatchanged[1] assume `--use-mailmap`.
1606
1607mailinfo.scissors::
1608        If true, makes linkgit:git-mailinfo[1] (and therefore
1609        linkgit:git-am[1]) act by default as if the --scissors option
1610        was provided on the command-line. When active, this features
1611        removes everything from the message body before a scissors
1612        line (i.e. consisting mainly of ">8", "8<" and "-").
1613
1614mailmap.file::
1615        The location of an augmenting mailmap file. The default
1616        mailmap, located in the root of the repository, is loaded
1617        first, then the mailmap file pointed to by this variable.
1618        The location of the mailmap file may be in a repository
1619        subdirectory, or somewhere outside of the repository itself.
1620        See linkgit:git-shortlog[1] and linkgit:git-blame[1].
1621
1622mailmap.blob::
1623        Like `mailmap.file`, but consider the value as a reference to a
1624        blob in the repository. If both `mailmap.file` and
1625        `mailmap.blob` are given, both are parsed, with entries from
1626        `mailmap.file` taking precedence. In a bare repository, this
1627        defaults to `HEAD:.mailmap`. In a non-bare repository, it
1628        defaults to empty.
1629
1630man.viewer::
1631        Specify the programs that may be used to display help in the
1632        'man' format. See linkgit:git-help[1].
1633
1634man.<tool>.cmd::
1635        Specify the command to invoke the specified man viewer. The
1636        specified command is evaluated in shell with the man page
1637        passed as argument. (See linkgit:git-help[1].)
1638
1639man.<tool>.path::
1640        Override the path for the given tool that may be used to
1641        display help in the 'man' format. See linkgit:git-help[1].
1642
1643include::merge-config.txt[]
1644
1645mergetool.<tool>.path::
1646        Override the path for the given tool.  This is useful in case
1647        your tool is not in the PATH.
1648
1649mergetool.<tool>.cmd::
1650        Specify the command to invoke the specified merge tool.  The
1651        specified command is evaluated in shell with the following
1652        variables available: 'BASE' is the name of a temporary file
1653        containing the common base of the files to be merged, if available;
1654        'LOCAL' is the name of a temporary file containing the contents of
1655        the file on the current branch; 'REMOTE' is the name of a temporary
1656        file containing the contents of the file from the branch being
1657        merged; 'MERGED' contains the name of the file to which the merge
1658        tool should write the results of a successful merge.
1659
1660mergetool.<tool>.trustExitCode::
1661        For a custom merge command, specify whether the exit code of
1662        the merge command can be used to determine whether the merge was
1663        successful.  If this is not set to true then the merge target file
1664        timestamp is checked and the merge assumed to have been successful
1665        if the file has been updated, otherwise the user is prompted to
1666        indicate the success of the merge.
1667
1668mergetool.meld.hasOutput::
1669        Older versions of `meld` do not support the `--output` option.
1670        Git will attempt to detect whether `meld` supports `--output`
1671        by inspecting the output of `meld --help`.  Configuring
1672        `mergetool.meld.hasOutput` will make Git skip these checks and
1673        use the configured value instead.  Setting `mergetool.meld.hasOutput`
1674        to `true` tells Git to unconditionally use the `--output` option,
1675        and `false` avoids using `--output`.
1676
1677mergetool.keepBackup::
1678        After performing a merge, the original file with conflict markers
1679        can be saved as a file with a `.orig` extension.  If this variable
1680        is set to `false` then this file is not preserved.  Defaults to
1681        `true` (i.e. keep the backup files).
1682
1683mergetool.keepTemporaries::
1684        When invoking a custom merge tool, Git uses a set of temporary
1685        files to pass to the tool. If the tool returns an error and this
1686        variable is set to `true`, then these temporary files will be
1687        preserved, otherwise they will be removed after the tool has
1688        exited. Defaults to `false`.
1689
1690mergetool.writeToTemp::
1691        Git writes temporary 'BASE', 'LOCAL', and 'REMOTE' versions of
1692        conflicting files in the worktree by default.  Git will attempt
1693        to use a temporary directory for these files when set `true`.
1694        Defaults to `false`.
1695
1696mergetool.prompt::
1697        Prompt before each invocation of the merge resolution program.
1698
1699notes.mergeStrategy::
1700        Which merge strategy to choose by default when resolving notes
1701        conflicts.  Must be one of `manual`, `ours`, `theirs`, `union`, or
1702        `cat_sort_uniq`.  Defaults to `manual`.  See "NOTES MERGE STRATEGIES"
1703        section of linkgit:git-notes[1] for more information on each strategy.
1704
1705notes.<name>.mergeStrategy::
1706        Which merge strategy to choose when doing a notes merge into
1707        refs/notes/<name>.  This overrides the more general
1708        "notes.mergeStrategy".  See the "NOTES MERGE STRATEGIES" section in
1709        linkgit:git-notes[1] for more information on the available strategies.
1710
1711notes.displayRef::
1712        The (fully qualified) refname from which to show notes when
1713        showing commit messages.  The value of this variable can be set
1714        to a glob, in which case notes from all matching refs will be
1715        shown.  You may also specify this configuration variable
1716        several times.  A warning will be issued for refs that do not
1717        exist, but a glob that does not match any refs is silently
1718        ignored.
1719+
1720This setting can be overridden with the `GIT_NOTES_DISPLAY_REF`
1721environment variable, which must be a colon separated list of refs or
1722globs.
1723+
1724The effective value of "core.notesRef" (possibly overridden by
1725GIT_NOTES_REF) is also implicitly added to the list of refs to be
1726displayed.
1727
1728notes.rewrite.<command>::
1729        When rewriting commits with <command> (currently `amend` or
1730        `rebase`) and this variable is set to `true`, Git
1731        automatically copies your notes from the original to the
1732        rewritten commit.  Defaults to `true`, but see
1733        "notes.rewriteRef" below.
1734
1735notes.rewriteMode::
1736        When copying notes during a rewrite (see the
1737        "notes.rewrite.<command>" option), determines what to do if
1738        the target commit already has a note.  Must be one of
1739        `overwrite`, `concatenate`, `cat_sort_uniq`, or `ignore`.
1740        Defaults to `concatenate`.
1741+
1742This setting can be overridden with the `GIT_NOTES_REWRITE_MODE`
1743environment variable.
1744
1745notes.rewriteRef::
1746        When copying notes during a rewrite, specifies the (fully
1747        qualified) ref whose notes should be copied.  The ref may be a
1748        glob, in which case notes in all matching refs will be copied.
1749        You may also specify this configuration several times.
1750+
1751Does not have a default value; you must configure this variable to
1752enable note rewriting.  Set it to `refs/notes/commits` to enable
1753rewriting for the default commit notes.
1754+
1755This setting can be overridden with the `GIT_NOTES_REWRITE_REF`
1756environment variable, which must be a colon separated list of refs or
1757globs.
1758
1759pack.window::
1760        The size of the window used by linkgit:git-pack-objects[1] when no
1761        window size is given on the command line. Defaults to 10.
1762
1763pack.depth::
1764        The maximum delta depth used by linkgit:git-pack-objects[1] when no
1765        maximum depth is given on the command line. Defaults to 50.
1766        Maximum value is 4095.
1767
1768pack.windowMemory::
1769        The maximum size of memory that is consumed by each thread
1770        in linkgit:git-pack-objects[1] for pack window memory when
1771        no limit is given on the command line.  The value can be
1772        suffixed with "k", "m", or "g".  When left unconfigured (or
1773        set explicitly to 0), there will be no limit.
1774
1775pack.compression::
1776        An integer -1..9, indicating the compression level for objects
1777        in a pack file. -1 is the zlib default. 0 means no
1778        compression, and 1..9 are various speed/size tradeoffs, 9 being
1779        slowest.  If not set,  defaults to core.compression.  If that is
1780        not set,  defaults to -1, the zlib default, which is "a default
1781        compromise between speed and compression (currently equivalent
1782        to level 6)."
1783+
1784Note that changing the compression level will not automatically recompress
1785all existing objects. You can force recompression by passing the -F option
1786to linkgit:git-repack[1].
1787
1788pack.island::
1789        An extended regular expression configuring a set of delta
1790        islands. See "DELTA ISLANDS" in linkgit:git-pack-objects[1]
1791        for details.
1792
1793pack.islandCore::
1794        Specify an island name which gets to have its objects be
1795        packed first. This creates a kind of pseudo-pack at the front
1796        of one pack, so that the objects from the specified island are
1797        hopefully faster to copy into any pack that should be served
1798        to a user requesting these objects. In practice this means
1799        that the island specified should likely correspond to what is
1800        the most commonly cloned in the repo. See also "DELTA ISLANDS"
1801        in linkgit:git-pack-objects[1].
1802
1803pack.deltaCacheSize::
1804        The maximum memory in bytes used for caching deltas in
1805        linkgit:git-pack-objects[1] before writing them out to a pack.
1806        This cache is used to speed up the writing object phase by not
1807        having to recompute the final delta result once the best match
1808        for all objects is found.  Repacking large repositories on machines
1809        which are tight with memory might be badly impacted by this though,
1810        especially if this cache pushes the system into swapping.
1811        A value of 0 means no limit. The smallest size of 1 byte may be
1812        used to virtually disable this cache. Defaults to 256 MiB.
1813
1814pack.deltaCacheLimit::
1815        The maximum size of a delta, that is cached in
1816        linkgit:git-pack-objects[1]. This cache is used to speed up the
1817        writing object phase by not having to recompute the final delta
1818        result once the best match for all objects is found.
1819        Defaults to 1000. Maximum value is 65535.
1820
1821pack.threads::
1822        Specifies the number of threads to spawn when searching for best
1823        delta matches.  This requires that linkgit:git-pack-objects[1]
1824        be compiled with pthreads otherwise this option is ignored with a
1825        warning. This is meant to reduce packing time on multiprocessor
1826        machines. The required amount of memory for the delta search window
1827        is however multiplied by the number of threads.
1828        Specifying 0 will cause Git to auto-detect the number of CPU's
1829        and set the number of threads accordingly.
1830
1831pack.indexVersion::
1832        Specify the default pack index version.  Valid values are 1 for
1833        legacy pack index used by Git versions prior to 1.5.2, and 2 for
1834        the new pack index with capabilities for packs larger than 4 GB
1835        as well as proper protection against the repacking of corrupted
1836        packs.  Version 2 is the default.  Note that version 2 is enforced
1837        and this config option ignored whenever the corresponding pack is
1838        larger than 2 GB.
1839+
1840If you have an old Git that does not understand the version 2 `*.idx` file,
1841cloning or fetching over a non native protocol (e.g. "http")
1842that will copy both `*.pack` file and corresponding `*.idx` file from the
1843other side may give you a repository that cannot be accessed with your
1844older version of Git. If the `*.pack` file is smaller than 2 GB, however,
1845you can use linkgit:git-index-pack[1] on the *.pack file to regenerate
1846the `*.idx` file.
1847
1848pack.packSizeLimit::
1849        The maximum size of a pack.  This setting only affects
1850        packing to a file when repacking, i.e. the git:// protocol
1851        is unaffected.  It can be overridden by the `--max-pack-size`
1852        option of linkgit:git-repack[1].  Reaching this limit results
1853        in the creation of multiple packfiles; which in turn prevents
1854        bitmaps from being created.
1855        The minimum size allowed is limited to 1 MiB.
1856        The default is unlimited.
1857        Common unit suffixes of 'k', 'm', or 'g' are
1858        supported.
1859
1860pack.useBitmaps::
1861        When true, git will use pack bitmaps (if available) when packing
1862        to stdout (e.g., during the server side of a fetch). Defaults to
1863        true. You should not generally need to turn this off unless
1864        you are debugging pack bitmaps.
1865
1866pack.writeBitmaps (deprecated)::
1867        This is a deprecated synonym for `repack.writeBitmaps`.
1868
1869pack.writeBitmapHashCache::
1870        When true, git will include a "hash cache" section in the bitmap
1871        index (if one is written). This cache can be used to feed git's
1872        delta heuristics, potentially leading to better deltas between
1873        bitmapped and non-bitmapped objects (e.g., when serving a fetch
1874        between an older, bitmapped pack and objects that have been
1875        pushed since the last gc). The downside is that it consumes 4
1876        bytes per object of disk space, and that JGit's bitmap
1877        implementation does not understand it, causing it to complain if
1878        Git and JGit are used on the same repository. Defaults to false.
1879
1880pager.<cmd>::
1881        If the value is boolean, turns on or off pagination of the
1882        output of a particular Git subcommand when writing to a tty.
1883        Otherwise, turns on pagination for the subcommand using the
1884        pager specified by the value of `pager.<cmd>`.  If `--paginate`
1885        or `--no-pager` is specified on the command line, it takes
1886        precedence over this option.  To disable pagination for all
1887        commands, set `core.pager` or `GIT_PAGER` to `cat`.
1888
1889pretty.<name>::
1890        Alias for a --pretty= format string, as specified in
1891        linkgit:git-log[1]. Any aliases defined here can be used just
1892        as the built-in pretty formats could. For example,
1893        running `git config pretty.changelog "format:* %H %s"`
1894        would cause the invocation `git log --pretty=changelog`
1895        to be equivalent to running `git log "--pretty=format:* %H %s"`.
1896        Note that an alias with the same name as a built-in format
1897        will be silently ignored.
1898
1899protocol.allow::
1900        If set, provide a user defined default policy for all protocols which
1901        don't explicitly have a policy (`protocol.<name>.allow`).  By default,
1902        if unset, known-safe protocols (http, https, git, ssh, file) have a
1903        default policy of `always`, known-dangerous protocols (ext) have a
1904        default policy of `never`, and all other protocols have a default
1905        policy of `user`.  Supported policies:
1906+
1907--
1908
1909* `always` - protocol is always able to be used.
1910
1911* `never` - protocol is never able to be used.
1912
1913* `user` - protocol is only able to be used when `GIT_PROTOCOL_FROM_USER` is
1914  either unset or has a value of 1.  This policy should be used when you want a
1915  protocol to be directly usable by the user but don't want it used by commands which
1916  execute clone/fetch/push commands without user input, e.g. recursive
1917  submodule initialization.
1918
1919--
1920
1921protocol.<name>.allow::
1922        Set a policy to be used by protocol `<name>` with clone/fetch/push
1923        commands. See `protocol.allow` above for the available policies.
1924+
1925The protocol names currently used by git are:
1926+
1927--
1928  - `file`: any local file-based path (including `file://` URLs,
1929    or local paths)
1930
1931  - `git`: the anonymous git protocol over a direct TCP
1932    connection (or proxy, if configured)
1933
1934  - `ssh`: git over ssh (including `host:path` syntax,
1935    `ssh://`, etc).
1936
1937  - `http`: git over http, both "smart http" and "dumb http".
1938    Note that this does _not_ include `https`; if you want to configure
1939    both, you must do so individually.
1940
1941  - any external helpers are named by their protocol (e.g., use
1942    `hg` to allow the `git-remote-hg` helper)
1943--
1944
1945protocol.version::
1946        Experimental. If set, clients will attempt to communicate with a
1947        server using the specified protocol version.  If unset, no
1948        attempt will be made by the client to communicate using a
1949        particular protocol version, this results in protocol version 0
1950        being used.
1951        Supported versions:
1952+
1953--
1954
1955* `0` - the original wire protocol.
1956
1957* `1` - the original wire protocol with the addition of a version string
1958  in the initial response from the server.
1959
1960* `2` - link:technical/protocol-v2.html[wire protocol version 2].
1961
1962--
1963
1964include::pull-config.txt[]
1965
1966include::push-config.txt[]
1967
1968include::rebase-config.txt[]
1969
1970include::receive-config.txt[]
1971
1972remote.pushDefault::
1973        The remote to push to by default.  Overrides
1974        `branch.<name>.remote` for all branches, and is overridden by
1975        `branch.<name>.pushRemote` for specific branches.
1976
1977remote.<name>.url::
1978        The URL of a remote repository.  See linkgit:git-fetch[1] or
1979        linkgit:git-push[1].
1980
1981remote.<name>.pushurl::
1982        The push URL of a remote repository.  See linkgit:git-push[1].
1983
1984remote.<name>.proxy::
1985        For remotes that require curl (http, https and ftp), the URL to
1986        the proxy to use for that remote.  Set to the empty string to
1987        disable proxying for that remote.
1988
1989remote.<name>.proxyAuthMethod::
1990        For remotes that require curl (http, https and ftp), the method to use for
1991        authenticating against the proxy in use (probably set in
1992        `remote.<name>.proxy`). See `http.proxyAuthMethod`.
1993
1994remote.<name>.fetch::
1995        The default set of "refspec" for linkgit:git-fetch[1]. See
1996        linkgit:git-fetch[1].
1997
1998remote.<name>.push::
1999        The default set of "refspec" for linkgit:git-push[1]. See
2000        linkgit:git-push[1].
2001
2002remote.<name>.mirror::
2003        If true, pushing to this remote will automatically behave
2004        as if the `--mirror` option was given on the command line.
2005
2006remote.<name>.skipDefaultUpdate::
2007        If true, this remote will be skipped by default when updating
2008        using linkgit:git-fetch[1] or the `update` subcommand of
2009        linkgit:git-remote[1].
2010
2011remote.<name>.skipFetchAll::
2012        If true, this remote will be skipped by default when updating
2013        using linkgit:git-fetch[1] or the `update` subcommand of
2014        linkgit:git-remote[1].
2015
2016remote.<name>.receivepack::
2017        The default program to execute on the remote side when pushing.  See
2018        option --receive-pack of linkgit:git-push[1].
2019
2020remote.<name>.uploadpack::
2021        The default program to execute on the remote side when fetching.  See
2022        option --upload-pack of linkgit:git-fetch-pack[1].
2023
2024remote.<name>.tagOpt::
2025        Setting this value to --no-tags disables automatic tag following when
2026        fetching from remote <name>. Setting it to --tags will fetch every
2027        tag from remote <name>, even if they are not reachable from remote
2028        branch heads. Passing these flags directly to linkgit:git-fetch[1] can
2029        override this setting. See options --tags and --no-tags of
2030        linkgit:git-fetch[1].
2031
2032remote.<name>.vcs::
2033        Setting this to a value <vcs> will cause Git to interact with
2034        the remote with the git-remote-<vcs> helper.
2035
2036remote.<name>.prune::
2037        When set to true, fetching from this remote by default will also
2038        remove any remote-tracking references that no longer exist on the
2039        remote (as if the `--prune` option was given on the command line).
2040        Overrides `fetch.prune` settings, if any.
2041
2042remote.<name>.pruneTags::
2043        When set to true, fetching from this remote by default will also
2044        remove any local tags that no longer exist on the remote if pruning
2045        is activated in general via `remote.<name>.prune`, `fetch.prune` or
2046        `--prune`. Overrides `fetch.pruneTags` settings, if any.
2047+
2048See also `remote.<name>.prune` and the PRUNING section of
2049linkgit:git-fetch[1].
2050
2051remotes.<group>::
2052        The list of remotes which are fetched by "git remote update
2053        <group>".  See linkgit:git-remote[1].
2054
2055repack.useDeltaBaseOffset::
2056        By default, linkgit:git-repack[1] creates packs that use
2057        delta-base offset. If you need to share your repository with
2058        Git older than version 1.4.4, either directly or via a dumb
2059        protocol such as http, then you need to set this option to
2060        "false" and repack. Access from old Git versions over the
2061        native protocol are unaffected by this option.
2062
2063repack.packKeptObjects::
2064        If set to true, makes `git repack` act as if
2065        `--pack-kept-objects` was passed. See linkgit:git-repack[1] for
2066        details. Defaults to `false` normally, but `true` if a bitmap
2067        index is being written (either via `--write-bitmap-index` or
2068        `repack.writeBitmaps`).
2069
2070repack.useDeltaIslands::
2071        If set to true, makes `git repack` act as if `--delta-islands`
2072        was passed. Defaults to `false`.
2073
2074repack.writeBitmaps::
2075        When true, git will write a bitmap index when packing all
2076        objects to disk (e.g., when `git repack -a` is run).  This
2077        index can speed up the "counting objects" phase of subsequent
2078        packs created for clones and fetches, at the cost of some disk
2079        space and extra time spent on the initial repack.  This has
2080        no effect if multiple packfiles are created.
2081        Defaults to false.
2082
2083rerere.autoUpdate::
2084        When set to true, `git-rerere` updates the index with the
2085        resulting contents after it cleanly resolves conflicts using
2086        previously recorded resolution.  Defaults to false.
2087
2088rerere.enabled::
2089        Activate recording of resolved conflicts, so that identical
2090        conflict hunks can be resolved automatically, should they be
2091        encountered again.  By default, linkgit:git-rerere[1] is
2092        enabled if there is an `rr-cache` directory under the
2093        `$GIT_DIR`, e.g. if "rerere" was previously used in the
2094        repository.
2095
2096reset.quiet::
2097        When set to true, 'git reset' will default to the '--quiet' option.
2098
2099include::sendemail-config.txt[]
2100
2101sequence.editor::
2102        Text editor used by `git rebase -i` for editing the rebase instruction file.
2103        The value is meant to be interpreted by the shell when it is used.
2104        It can be overridden by the `GIT_SEQUENCE_EDITOR` environment variable.
2105        When not configured the default commit message editor is used instead.
2106
2107showBranch.default::
2108        The default set of branches for linkgit:git-show-branch[1].
2109        See linkgit:git-show-branch[1].
2110
2111splitIndex.maxPercentChange::
2112        When the split index feature is used, this specifies the
2113        percent of entries the split index can contain compared to the
2114        total number of entries in both the split index and the shared
2115        index before a new shared index is written.
2116        The value should be between 0 and 100. If the value is 0 then
2117        a new shared index is always written, if it is 100 a new
2118        shared index is never written.
2119        By default the value is 20, so a new shared index is written
2120        if the number of entries in the split index would be greater
2121        than 20 percent of the total number of entries.
2122        See linkgit:git-update-index[1].
2123
2124splitIndex.sharedIndexExpire::
2125        When the split index feature is used, shared index files that
2126        were not modified since the time this variable specifies will
2127        be removed when a new shared index file is created. The value
2128        "now" expires all entries immediately, and "never" suppresses
2129        expiration altogether.
2130        The default value is "2.weeks.ago".
2131        Note that a shared index file is considered modified (for the
2132        purpose of expiration) each time a new split-index file is
2133        either created based on it or read from it.
2134        See linkgit:git-update-index[1].
2135
2136status.relativePaths::
2137        By default, linkgit:git-status[1] shows paths relative to the
2138        current directory. Setting this variable to `false` shows paths
2139        relative to the repository root (this was the default for Git
2140        prior to v1.5.4).
2141
2142status.short::
2143        Set to true to enable --short by default in linkgit:git-status[1].
2144        The option --no-short takes precedence over this variable.
2145
2146status.branch::
2147        Set to true to enable --branch by default in linkgit:git-status[1].
2148        The option --no-branch takes precedence over this variable.
2149
2150status.displayCommentPrefix::
2151        If set to true, linkgit:git-status[1] will insert a comment
2152        prefix before each output line (starting with
2153        `core.commentChar`, i.e. `#` by default). This was the
2154        behavior of linkgit:git-status[1] in Git 1.8.4 and previous.
2155        Defaults to false.
2156
2157status.renameLimit::
2158        The number of files to consider when performing rename detection
2159        in linkgit:git-status[1] and linkgit:git-commit[1]. Defaults to
2160        the value of diff.renameLimit.
2161
2162status.renames::
2163        Whether and how Git detects renames in linkgit:git-status[1] and
2164        linkgit:git-commit[1] .  If set to "false", rename detection is
2165        disabled. If set to "true", basic rename detection is enabled.
2166        If set to "copies" or "copy", Git will detect copies, as well.
2167        Defaults to the value of diff.renames.
2168
2169status.showStash::
2170        If set to true, linkgit:git-status[1] will display the number of
2171        entries currently stashed away.
2172        Defaults to false.
2173
2174status.showUntrackedFiles::
2175        By default, linkgit:git-status[1] and linkgit:git-commit[1] show
2176        files which are not currently tracked by Git. Directories which
2177        contain only untracked files, are shown with the directory name
2178        only. Showing untracked files means that Git needs to lstat() all
2179        the files in the whole repository, which might be slow on some
2180        systems. So, this variable controls how the commands displays
2181        the untracked files. Possible values are:
2182+
2183--
2184* `no` - Show no untracked files.
2185* `normal` - Show untracked files and directories.
2186* `all` - Show also individual files in untracked directories.
2187--
2188+
2189If this variable is not specified, it defaults to 'normal'.
2190This variable can be overridden with the -u|--untracked-files option
2191of linkgit:git-status[1] and linkgit:git-commit[1].
2192
2193status.submoduleSummary::
2194        Defaults to false.
2195        If this is set to a non zero number or true (identical to -1 or an
2196        unlimited number), the submodule summary will be enabled and a
2197        summary of commits for modified submodules will be shown (see
2198        --summary-limit option of linkgit:git-submodule[1]). Please note
2199        that the summary output command will be suppressed for all
2200        submodules when `diff.ignoreSubmodules` is set to 'all' or only
2201        for those submodules where `submodule.<name>.ignore=all`. The only
2202        exception to that rule is that status and commit will show staged
2203        submodule changes. To
2204        also view the summary for ignored submodules you can either use
2205        the --ignore-submodules=dirty command-line option or the 'git
2206        submodule summary' command, which shows a similar output but does
2207        not honor these settings.
2208
2209stash.showPatch::
2210        If this is set to true, the `git stash show` command without an
2211        option will show the stash entry in patch form.  Defaults to false.
2212        See description of 'show' command in linkgit:git-stash[1].
2213
2214stash.showStat::
2215        If this is set to true, the `git stash show` command without an
2216        option will show diffstat of the stash entry.  Defaults to true.
2217        See description of 'show' command in linkgit:git-stash[1].
2218
2219include::submodule-config.txt[]
2220
2221tag.forceSignAnnotated::
2222        A boolean to specify whether annotated tags created should be GPG signed.
2223        If `--annotate` is specified on the command line, it takes
2224        precedence over this option.
2225
2226tag.sort::
2227        This variable controls the sort ordering of tags when displayed by
2228        linkgit:git-tag[1]. Without the "--sort=<value>" option provided, the
2229        value of this variable will be used as the default.
2230
2231tar.umask::
2232        This variable can be used to restrict the permission bits of
2233        tar archive entries.  The default is 0002, which turns off the
2234        world write bit.  The special value "user" indicates that the
2235        archiving user's umask will be used instead.  See umask(2) and
2236        linkgit:git-archive[1].
2237
2238transfer.fsckObjects::
2239        When `fetch.fsckObjects` or `receive.fsckObjects` are
2240        not set, the value of this variable is used instead.
2241        Defaults to false.
2242+
2243When set, the fetch or receive will abort in the case of a malformed
2244object or a link to a nonexistent object. In addition, various other
2245issues are checked for, including legacy issues (see `fsck.<msg-id>`),
2246and potential security issues like the existence of a `.GIT` directory
2247or a malicious `.gitmodules` file (see the release notes for v2.2.1
2248and v2.17.1 for details). Other sanity and security checks may be
2249added in future releases.
2250+
2251On the receiving side, failing fsckObjects will make those objects
2252unreachable, see "QUARANTINE ENVIRONMENT" in
2253linkgit:git-receive-pack[1]. On the fetch side, malformed objects will
2254instead be left unreferenced in the repository.
2255+
2256Due to the non-quarantine nature of the `fetch.fsckObjects`
2257implementation it can not be relied upon to leave the object store
2258clean like `receive.fsckObjects` can.
2259+
2260As objects are unpacked they're written to the object store, so there
2261can be cases where malicious objects get introduced even though the
2262"fetch" failed, only to have a subsequent "fetch" succeed because only
2263new incoming objects are checked, not those that have already been
2264written to the object store. That difference in behavior should not be
2265relied upon. In the future, such objects may be quarantined for
2266"fetch" as well.
2267+
2268For now, the paranoid need to find some way to emulate the quarantine
2269environment if they'd like the same protection as "push". E.g. in the
2270case of an internal mirror do the mirroring in two steps, one to fetch
2271the untrusted objects, and then do a second "push" (which will use the
2272quarantine) to another internal repo, and have internal clients
2273consume this pushed-to repository, or embargo internal fetches and
2274only allow them once a full "fsck" has run (and no new fetches have
2275happened in the meantime).
2276
2277transfer.hideRefs::
2278        String(s) `receive-pack` and `upload-pack` use to decide which
2279        refs to omit from their initial advertisements.  Use more than
2280        one definition to specify multiple prefix strings. A ref that is
2281        under the hierarchies listed in the value of this variable is
2282        excluded, and is hidden when responding to `git push` or `git
2283        fetch`.  See `receive.hideRefs` and `uploadpack.hideRefs` for
2284        program-specific versions of this config.
2285+
2286You may also include a `!` in front of the ref name to negate the entry,
2287explicitly exposing it, even if an earlier entry marked it as hidden.
2288If you have multiple hideRefs values, later entries override earlier ones
2289(and entries in more-specific config files override less-specific ones).
2290+
2291If a namespace is in use, the namespace prefix is stripped from each
2292reference before it is matched against `transfer.hiderefs` patterns.
2293For example, if `refs/heads/master` is specified in `transfer.hideRefs` and
2294the current namespace is `foo`, then `refs/namespaces/foo/refs/heads/master`
2295is omitted from the advertisements but `refs/heads/master` and
2296`refs/namespaces/bar/refs/heads/master` are still advertised as so-called
2297"have" lines. In order to match refs before stripping, add a `^` in front of
2298the ref name. If you combine `!` and `^`, `!` must be specified first.
2299+
2300Even if you hide refs, a client may still be able to steal the target
2301objects via the techniques described in the "SECURITY" section of the
2302linkgit:gitnamespaces[7] man page; it's best to keep private data in a
2303separate repository.
2304
2305transfer.unpackLimit::
2306        When `fetch.unpackLimit` or `receive.unpackLimit` are
2307        not set, the value of this variable is used instead.
2308        The default value is 100.
2309
2310uploadarchive.allowUnreachable::
2311        If true, allow clients to use `git archive --remote` to request
2312        any tree, whether reachable from the ref tips or not. See the
2313        discussion in the "SECURITY" section of
2314        linkgit:git-upload-archive[1] for more details. Defaults to
2315        `false`.
2316
2317uploadpack.hideRefs::
2318        This variable is the same as `transfer.hideRefs`, but applies
2319        only to `upload-pack` (and so affects only fetches, not pushes).
2320        An attempt to fetch a hidden ref by `git fetch` will fail.  See
2321        also `uploadpack.allowTipSHA1InWant`.
2322
2323uploadpack.allowTipSHA1InWant::
2324        When `uploadpack.hideRefs` is in effect, allow `upload-pack`
2325        to accept a fetch request that asks for an object at the tip
2326        of a hidden ref (by default, such a request is rejected).
2327        See also `uploadpack.hideRefs`.  Even if this is false, a client
2328        may be able to steal objects via the techniques described in the
2329        "SECURITY" section of the linkgit:gitnamespaces[7] man page; it's
2330        best to keep private data in a separate repository.
2331
2332uploadpack.allowReachableSHA1InWant::
2333        Allow `upload-pack` to accept a fetch request that asks for an
2334        object that is reachable from any ref tip. However, note that
2335        calculating object reachability is computationally expensive.
2336        Defaults to `false`.  Even if this is false, a client may be able
2337        to steal objects via the techniques described in the "SECURITY"
2338        section of the linkgit:gitnamespaces[7] man page; it's best to
2339        keep private data in a separate repository.
2340
2341uploadpack.allowAnySHA1InWant::
2342        Allow `upload-pack` to accept a fetch request that asks for any
2343        object at all.
2344        Defaults to `false`.
2345
2346uploadpack.keepAlive::
2347        When `upload-pack` has started `pack-objects`, there may be a
2348        quiet period while `pack-objects` prepares the pack. Normally
2349        it would output progress information, but if `--quiet` was used
2350        for the fetch, `pack-objects` will output nothing at all until
2351        the pack data begins. Some clients and networks may consider
2352        the server to be hung and give up. Setting this option instructs
2353        `upload-pack` to send an empty keepalive packet every
2354        `uploadpack.keepAlive` seconds. Setting this option to 0
2355        disables keepalive packets entirely. The default is 5 seconds.
2356
2357uploadpack.packObjectsHook::
2358        If this option is set, when `upload-pack` would run
2359        `git pack-objects` to create a packfile for a client, it will
2360        run this shell command instead.  The `pack-objects` command and
2361        arguments it _would_ have run (including the `git pack-objects`
2362        at the beginning) are appended to the shell command. The stdin
2363        and stdout of the hook are treated as if `pack-objects` itself
2364        was run. I.e., `upload-pack` will feed input intended for
2365        `pack-objects` to the hook, and expects a completed packfile on
2366        stdout.
2367+
2368Note that this configuration variable is ignored if it is seen in the
2369repository-level config (this is a safety measure against fetching from
2370untrusted repositories).
2371
2372uploadpack.allowFilter::
2373        If this option is set, `upload-pack` will support partial
2374        clone and partial fetch object filtering.
2375
2376uploadpack.allowRefInWant::
2377        If this option is set, `upload-pack` will support the `ref-in-want`
2378        feature of the protocol version 2 `fetch` command.  This feature
2379        is intended for the benefit of load-balanced servers which may
2380        not have the same view of what OIDs their refs point to due to
2381        replication delay.
2382
2383url.<base>.insteadOf::
2384        Any URL that starts with this value will be rewritten to
2385        start, instead, with <base>. In cases where some site serves a
2386        large number of repositories, and serves them with multiple
2387        access methods, and some users need to use different access
2388        methods, this feature allows people to specify any of the
2389        equivalent URLs and have Git automatically rewrite the URL to
2390        the best alternative for the particular user, even for a
2391        never-before-seen repository on the site.  When more than one
2392        insteadOf strings match a given URL, the longest match is used.
2393+
2394Note that any protocol restrictions will be applied to the rewritten
2395URL. If the rewrite changes the URL to use a custom protocol or remote
2396helper, you may need to adjust the `protocol.*.allow` config to permit
2397the request.  In particular, protocols you expect to use for submodules
2398must be set to `always` rather than the default of `user`. See the
2399description of `protocol.allow` above.
2400
2401url.<base>.pushInsteadOf::
2402        Any URL that starts with this value will not be pushed to;
2403        instead, it will be rewritten to start with <base>, and the
2404        resulting URL will be pushed to. In cases where some site serves
2405        a large number of repositories, and serves them with multiple
2406        access methods, some of which do not allow push, this feature
2407        allows people to specify a pull-only URL and have Git
2408        automatically use an appropriate URL to push, even for a
2409        never-before-seen repository on the site.  When more than one
2410        pushInsteadOf strings match a given URL, the longest match is
2411        used.  If a remote has an explicit pushurl, Git will ignore this
2412        setting for that remote.
2413
2414user.email::
2415        Your email address to be recorded in any newly created commits.
2416        Can be overridden by the `GIT_AUTHOR_EMAIL`, `GIT_COMMITTER_EMAIL`, and
2417        `EMAIL` environment variables.  See linkgit:git-commit-tree[1].
2418
2419user.name::
2420        Your full name to be recorded in any newly created commits.
2421        Can be overridden by the `GIT_AUTHOR_NAME` and `GIT_COMMITTER_NAME`
2422        environment variables.  See linkgit:git-commit-tree[1].
2423
2424user.useConfigOnly::
2425        Instruct Git to avoid trying to guess defaults for `user.email`
2426        and `user.name`, and instead retrieve the values only from the
2427        configuration. For example, if you have multiple email addresses
2428        and would like to use a different one for each repository, then
2429        with this configuration option set to `true` in the global config
2430        along with a name, Git will prompt you to set up an email before
2431        making new commits in a newly cloned repository.
2432        Defaults to `false`.
2433
2434user.signingKey::
2435        If linkgit:git-tag[1] or linkgit:git-commit[1] is not selecting the
2436        key you want it to automatically when creating a signed tag or
2437        commit, you can override the default selection with this variable.
2438        This option is passed unchanged to gpg's --local-user parameter,
2439        so you may specify a key using any method that gpg supports.
2440
2441versionsort.prereleaseSuffix (deprecated)::
2442        Deprecated alias for `versionsort.suffix`.  Ignored if
2443        `versionsort.suffix` is set.
2444
2445versionsort.suffix::
2446        Even when version sort is used in linkgit:git-tag[1], tagnames
2447        with the same base version but different suffixes are still sorted
2448        lexicographically, resulting e.g. in prerelease tags appearing
2449        after the main release (e.g. "1.0-rc1" after "1.0").  This
2450        variable can be specified to determine the sorting order of tags
2451        with different suffixes.
2452+
2453By specifying a single suffix in this variable, any tagname containing
2454that suffix will appear before the corresponding main release.  E.g. if
2455the variable is set to "-rc", then all "1.0-rcX" tags will appear before
2456"1.0".  If specified multiple times, once per suffix, then the order of
2457suffixes in the configuration will determine the sorting order of tagnames
2458with those suffixes.  E.g. if "-pre" appears before "-rc" in the
2459configuration, then all "1.0-preX" tags will be listed before any
2460"1.0-rcX" tags.  The placement of the main release tag relative to tags
2461with various suffixes can be determined by specifying the empty suffix
2462among those other suffixes.  E.g. if the suffixes "-rc", "", "-ck" and
2463"-bfs" appear in the configuration in this order, then all "v4.8-rcX" tags
2464are listed first, followed by "v4.8", then "v4.8-ckX" and finally
2465"v4.8-bfsX".
2466+
2467If more than one suffixes match the same tagname, then that tagname will
2468be sorted according to the suffix which starts at the earliest position in
2469the tagname.  If more than one different matching suffixes start at
2470that earliest position, then that tagname will be sorted according to the
2471longest of those suffixes.
2472The sorting order between different suffixes is undefined if they are
2473in multiple config files.
2474
2475web.browser::
2476        Specify a web browser that may be used by some commands.
2477        Currently only linkgit:git-instaweb[1] and linkgit:git-help[1]
2478        may use it.
2479
2480worktree.guessRemote::
2481        With `add`, if no branch argument, and neither of `-b` nor
2482        `-B` nor `--detach` are given, the command defaults to
2483        creating a new branch from HEAD.  If `worktree.guessRemote` is
2484        set to true, `worktree add` tries to find a remote-tracking
2485        branch whose name uniquely matches the new branch name.  If
2486        such a branch exists, it is checked out and set as "upstream"
2487        for the new branch.  If no such match can be found, it falls
2488        back to creating a new branch from the current HEAD.