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