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