'\" t
.\"     Title: git-config
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets v1.79.2 <http://docbook.sf.net/>
.\"      Date: 2025-09-08
.\"    Manual: Git Manual
.\"    Source: Git 2.51.0.193.g4975ec3473
.\"  Language: English
.\"
.TH "GIT\-CONFIG" "1" "2025-09-08" "Git 2\&.51\&.0\&.193\&.g4975ec" "Git Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
git-config \- Get and set repository or global options
.SH "SYNOPSIS"
.sp
.nf
\fIgit config list\fR [<file\-option>] [<display\-option>] [\-\-includes]
\fIgit config get\fR [<file\-option>] [<display\-option>] [\-\-includes] [\-\-all] [\-\-regexp] [\-\-value=<pattern>] [\-\-fixed\-value] [\-\-default=<default>] [\-\-url=<url>] <name>
\fIgit config set\fR [<file\-option>] [\-\-type=<type>] [\-\-all] [\-\-value=<pattern>] [\-\-fixed\-value] <name> <value>
\fIgit config unset\fR [<file\-option>] [\-\-all] [\-\-value=<pattern>] [\-\-fixed\-value] <name>
\fIgit config rename\-section\fR [<file\-option>] <old\-name> <new\-name>
\fIgit config remove\-section\fR [<file\-option>] <name>
\fIgit config edit\fR [<file\-option>]
\fIgit config\fR [<file\-option>] \-\-get\-colorbool <name> [<stdout\-is\-tty>]
.fi
.SH "DESCRIPTION"
.sp
You can query/set/replace/unset options with this command\&. The name is actually the section and the key separated by a dot, and the value will be escaped\&.
.sp
Multiple lines can be added to an option by using the \fB\-\-append\fR option\&. If you want to update or unset an option which can occur on multiple lines, \fB\-\-value=\fR\fI<pattern>\fR (which is an extended regular expression, unless the \fB\-\-fixed\-value\fR option is given) needs to be given\&. Only the existing values that match the pattern are updated or unset\&. If you want to handle the lines that do \fBnot\fR match the pattern, just prepend a single exclamation mark in front (see also the section called \(lqEXAMPLES\(rq), but note that this only works when the \fB\-\-fixed\-value\fR option is not in use\&.
.sp
The \fB\-\-type=\fR\fI<type>\fR option instructs \fIgit config\fR to ensure that incoming and outgoing values are canonicalize\-able under the given <type>\&. If no \fB\-\-type=\fR\fI<type>\fR is given, no canonicalization will be performed\&. Callers may unset an existing \fB\-\-type\fR specifier with \fB\-\-no\-type\fR\&.
.sp
When reading, the values are read from the system, global and repository local configuration files by default, and options \fB\-\-system\fR, \fB\-\-global\fR, \fB\-\-local\fR, \fB\-\-worktree\fR and \fB\-\-file\fR \fI<filename>\fR can be used to tell the command to read from only that location (see the section called \(lqFILES\(rq)\&.
.sp
When writing, the new value is written to the repository local configuration file by default, and options \fB\-\-system\fR, \fB\-\-global\fR, \fB\-\-worktree\fR, \fB\-\-file\fR \fI<filename>\fR can be used to tell the command to write to that location (you can say \fB\-\-local\fR but that is the default)\&.
.sp
This command will fail with non\-zero status upon error\&. Some exit codes are:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The section or key is invalid (ret=1),
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
no section or name was provided (ret=2),
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
the config file is invalid (ret=3),
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
the config file cannot be written (ret=4),
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
you try to unset an option which does not exist (ret=5),
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
you try to unset/set an option for which multiple lines match (ret=5), or
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
you try to use an invalid regexp (ret=6)\&.
.RE
.sp
On success, the command returns the exit code 0\&.
.sp
A list of all available configuration variables can be obtained using the \fBgit\fR \fBhelp\fR \fB\-\-config\fR command\&.
.SH "COMMANDS"
.PP
list
.RS 4
List all variables set in config file, along with their values\&.
.RE
.PP
get
.RS 4
Emits the value of the specified key\&. If key is present multiple times in the configuration, emits the last value\&. If
\fB\-\-all\fR
is specified, emits all values associated with key\&. Returns error code 1 if key is not present\&.
.RE
.PP
set
.RS 4
Set value for one or more config options\&. By default, this command refuses to write multi\-valued config options\&. Passing
\fB\-\-all\fR
will replace all multi\-valued config options with the new value, whereas
\fB\-\-value=\fR
will replace all config options whose values match the given pattern\&.
.RE
.PP
unset
.RS 4
Unset value for one or more config options\&. By default, this command refuses to unset multi\-valued keys\&. Passing
\fB\-\-all\fR
will unset all multi\-valued config options, whereas
\fB\-\-value\fR
will unset all config options whose values match the given pattern\&.
.RE
.PP
rename\-section
.RS 4
Rename the given section to a new name\&.
.RE
.PP
remove\-section
.RS 4
Remove the given section from the configuration file\&.
.RE
.PP
edit
.RS 4
Opens an editor to modify the specified config file; either
\fB\-\-system\fR,
\fB\-\-global\fR,
\fB\-\-local\fR
(default),
\fB\-\-worktree\fR, or
\fB\-\-file\fR
\fI<config\-file>\fR\&.
.RE
.SH "OPTIONS"
.PP
\-\-replace\-all
.RS 4
Default behavior is to replace at most one line\&. This replaces all lines matching the key (and optionally
\fB\-\-value=\fR\fI<pattern>\fR)\&.
.RE
.PP
\-\-append
.RS 4
Adds a new line to the option without altering any existing values\&. This is the same as providing
\fI\-\-value=^$\fR
in
\fBset\fR\&.
.RE
.PP
\-\-comment <message>
.RS 4
Append a comment at the end of new or modified lines\&.
.sp
.if n \{\
.RS 4
.\}
.nf
If _<message>_ begins with one or more whitespaces followed
by "#", it is used as\-is\&.  If it begins with "#", a space is
prepended before it is used\&.  Otherwise, a string " # " (a
space followed by a hash followed by a space) is prepended
to it\&.  And the resulting string is placed immediately after
the value defined for the variable\&.  The _<message>_ must
not contain linefeed characters (no multi\-line comments are
permitted)\&.
.fi
.if n \{\
.RE
.\}
.RE
.PP
\-\-all
.RS 4
With
\fBget\fR, return all values for a multi\-valued key\&.
.RE
.PP
\-\-regexp
.RS 4
With
\fBget\fR, interpret the name as a regular expression\&. Regular expression matching is currently case\-sensitive and done against a canonicalized version of the key in which section and variable names are lowercased, but subsection names are not\&.
.RE
.PP
\-\-url=<URL>
.RS 4
When given a two\-part <name> as <section>\&.<key>, the value for <section>\&.<URL>\&.<key> whose <URL> part matches the best to the given URL is returned (if no such key exists, the value for <section>\&.<key> is used as a fallback)\&. When given just the <section> as name, do so for all the keys in the section and list them\&. Returns error code 1 if no value is found\&.
.RE
.PP
\-\-global
.RS 4
For writing options: write to global
\fB~/\&.gitconfig\fR
file rather than the repository \&.\fBgit/config\fR, write to
\fB$XDG_CONFIG_HOME/git/config\fR
file if this file exists and the
\fB~/\&.gitconfig\fR
file doesn\(cqt\&.
.sp
For reading options: read only from global
\fB~/\&.gitconfig\fR
and from
\fB$XDG_CONFIG_HOME/git/config\fR
rather than from all available files\&.
.sp
See also
the section called \(lqFILES\(rq\&.
.RE
.PP
\-\-system
.RS 4
For writing options: write to system\-wide
\fB$\fR(\fBprefix\fR)\fB/etc/gitconfig\fR
rather than the repository \&.\fBgit/config\fR\&.
.sp
For reading options: read only from system\-wide
\fB$\fR(\fBprefix\fR)\fB/etc/gitconfig\fR
rather than from all available files\&.
.sp
See also
the section called \(lqFILES\(rq\&.
.RE
.PP
\-\-local
.RS 4
For writing options: write to the repository \&.\fBgit/config\fR
file\&. This is the default behavior\&.
.sp
For reading options: read only from the repository \&.\fBgit/config\fR
rather than from all available files\&.
.sp
See also
the section called \(lqFILES\(rq\&.
.RE
.PP
\-\-worktree
.RS 4
Similar to
\fB\-\-local\fR
except that
\fB$GIT_DIR/config\&.worktree\fR
is read from or written to if
\fBextensions\&.worktreeConfig\fR
is enabled\&. If not it\(cqs the same as
\fB\-\-local\fR\&. Note that
\fB$GIT_DIR\fR
is equal to
\fB$GIT_COMMON_DIR\fR
for the main working tree, but is of the form
\fB$GIT_DIR/worktrees/\fR\fI<id>\fR\fB/\fR
for other working trees\&. See
\fBgit-worktree\fR(1)
to learn how to enable
\fBextensions\&.worktreeConfig\fR\&.
.RE
.PP
\-f <config\-file>, \-\-file <config\-file>
.RS 4
For writing options: write to the specified file rather than the repository \&.\fBgit/config\fR\&.
.sp
For reading options: read only from the specified file rather than from all available files\&.
.sp
See also
the section called \(lqFILES\(rq\&.
.RE
.PP
\-\-blob <blob>
.RS 4
Similar to
\fB\-\-file\fR
but use the given blob instead of a file\&. E\&.g\&. you can use
\fImaster:\&.gitmodules\fR
to read values from the file
\fI\&.gitmodules\fR
in the master branch\&. See "SPECIFYING REVISIONS" section in
\fBgitrevisions\fR(7)
for a more complete list of ways to spell blob names\&.
.RE
.PP
\fB\-\-value=\fR\fI<pattern>\fR, \fB\-\-no\-value\fR
.RS 4
With
\fBget\fR,
\fBset\fR, and
\fBunset\fR, match only against
\fI<pattern>\fR\&. The pattern is an extended regular expression unless
\fB\-\-fixed\-value\fR
is given\&.
.sp
Use
\fB\-\-no\-value\fR
to unset
\fI<pattern>\fR\&.
.RE
.PP
\-\-fixed\-value
.RS 4
When used with
\fB\-\-value=\fR\fI<pattern>\fR, treat
\fI<pattern>\fR
as an exact string instead of a regular expression\&. This will restrict the name/value pairs that are matched to only those where the value is exactly equal to
\fI<pattern>\fR\&.
.RE
.PP
\-\-type <type>
.RS 4
\fIgit config\fR
will ensure that any input or output is valid under the given type constraint(s), and will canonicalize outgoing values in
\fI<type>\fR\*(Aqs canonical form\&.
.sp
Valid
\fI<type>\fR\*(Aqs include:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fIbool\fR: canonicalize values
\fBtrue\fR,
\fByes\fR,\fBon\fR, and positive numbers as "true", and values
\fBfalse\fR,
\fBno\fR,
\fBoff\fR
and
\fB0\fR
as "false"\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fIint\fR: canonicalize values as simple decimal numbers\&. An optional suffix of
\fIk\fR,
\fIm\fR, or
\fIg\fR
will cause the value to be multiplied by 1024, 1048576, or 1073741824 upon input\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fIbool\-or\-int\fR: canonicalize according to either
\fIbool\fR
or
\fIint\fR, as described above\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fIpath\fR: canonicalize by expanding a leading
\fB~\fR
to the value of
\fB$HOME\fR
and
\fB~user\fR
to the home directory for the specified user\&. This specifier has no effect when setting the value (but you can use
\fBgit\fR
\fBconfig\fR
\fBsection\&.variable\fR
\fB~/\fR
from the command line to let your shell do the expansion\&.)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fIexpiry\-date\fR: canonicalize by converting from a fixed or relative date\-string to a timestamp\&. This specifier has no effect when setting the value\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fIcolor\fR: When getting a value, canonicalize by converting to an ANSI color escape sequence\&. When setting a value, a sanity\-check is performed to ensure that the given value is canonicalize\-able as an ANSI color, but it is written as\-is\&.
.RE
.RE
.PP
\-\-bool, \-\-int, \-\-bool\-or\-int, \-\-path, \-\-expiry\-date
.RS 4
Historical options for selecting a type specifier\&. Prefer instead
\fB\-\-type\fR
(see above)\&.
.RE
.PP
\-\-no\-type
.RS 4
Un\-sets the previously set type specifier (if one was previously set)\&. This option requests that
\fIgit config\fR
not canonicalize the retrieved variable\&.
\fB\-\-no\-type\fR
has no effect without
\fB\-\-type=\fR\fI<type>\fR
or
\fB\-\-\fR\fI<type>\fR\&.
.RE
.PP
\-z, \-\-null
.RS 4
For all options that output values and/or keys, always end values with the null character (instead of a newline)\&. Use newline instead as a delimiter between key and value\&. This allows for secure parsing of the output without getting confused e\&.g\&. by values that contain line breaks\&.
.RE
.PP
\-\-name\-only
.RS 4
Output only the names of config variables for
\fBlist\fR
or
\fBget\fR\&.
.RE
.PP
\fB\-\-show\-names\fR, \fB\-\-no\-show\-names\fR
.RS 4
With
\fBget\fR, show config keys in addition to their values\&. The default is
\fB\-\-no\-show\-names\fR
unless
\fB\-\-url\fR
is given and there are no subsections in
\fI<name>\fR\&.
.RE
.PP
\-\-show\-origin
.RS 4
Augment the output of all queried config options with the origin type (file, standard input, blob, command line) and the actual origin (config file path, ref, or blob id if applicable)\&.
.RE
.PP
\-\-show\-scope
.RS 4
Similar to
\fB\-\-show\-origin\fR
in that it augments the output of all queried config options with the scope of that value (worktree, local, global, system, command)\&.
.RE
.PP
\-\-get\-colorbool <name> [<stdout\-is\-tty>]
.RS 4
Find the color setting for
\fI<name>\fR
(e\&.g\&.
\fBcolor\&.diff\fR) and output "true" or "false"\&.
\fI<stdout\-is\-tty>\fR
should be either "true" or "false", and is taken into account when configuration says "auto"\&. If
\fI<stdout\-is\-tty>\fR
is missing, then checks the standard output of the command itself, and exits with status 0 if color is to be used, or exits with status 1 otherwise\&. When the color setting for
\fBname\fR
is undefined, the command uses
\fBcolor\&.ui\fR
as fallback\&.
.RE
.PP
\-\-includes, \-\-no\-includes
.RS 4
Respect
\fBinclude\&.*\fR
directives in config files when looking up values\&. Defaults to
\fBoff\fR
when a specific file is given (e\&.g\&., using
\fB\-\-file\fR,
\fB\-\-global\fR, etc) and
\fBon\fR
when searching all config files\&.
.RE
.PP
\-\-default <value>
.RS 4
When using
\fBget\fR, and the requested variable is not found, behave as if <value> were the value assigned to that variable\&.
.RE
.SH "DEPRECATED MODES"
.sp
The following modes have been deprecated in favor of subcommands\&. It is recommended to migrate to the new syntax\&.
.PP
\fIgit config <name>\fR
.RS 4
Replaced by
\fBgit\fR
\fBconfig\fR
\fBget\fR
\fI<name>\fR\&.
.RE
.PP
\fIgit config <name> <value> [<value\-pattern>]\fR
.RS 4
Replaced by
\fBgit\fR
\fBconfig\fR
\fBset\fR
[\fB\-\-value=\fR\fI<pattern>\fR]
\fI<name>\fR
\fI<value>\fR\&.
.RE
.PP
\-l, \-\-list
.RS 4
Replaced by
\fBgit\fR
\fBconfig\fR
\fBlist\fR\&.
.RE
.PP
\-\-get <name> [<value\-pattern>]
.RS 4
Replaced by
\fBgit\fR
\fBconfig\fR
\fBget\fR
[\fB\-\-value=\fR\fI<pattern>\fR]
\fI<name>\fR\&.
.RE
.PP
\-\-get\-all <name> [<value\-pattern>]
.RS 4
Replaced by
\fBgit\fR
\fBconfig\fR
\fBget\fR
[\fB\-\-value=\fR\fI<pattern>\fR]
\fB\-\-all\fR
\fI<name>\fR\&.
.RE
.PP
\-\-get\-regexp <name\-regexp>
.RS 4
Replaced by
\fBgit\fR
\fBconfig\fR
\fBget\fR
\fB\-\-all\fR
\fB\-\-show\-names\fR
\fB\-\-regexp\fR
\fI<name\-regexp>\fR\&.
.RE
.PP
\-\-get\-urlmatch <name> <URL>
.RS 4
Replaced by
\fBgit\fR
\fBconfig\fR
\fBget\fR
\fB\-\-all\fR
\fB\-\-show\-names\fR
\fB\-\-url=\fR\fI<URL>\fR
\fI<name>\fR\&.
.RE
.PP
\-\-get\-color <name> [<default>]
.RS 4
Replaced by
\fBgit\fR
\fBconfig\fR
\fBget\fR
\fB\-\-type=color\fR
[\fB\-\-default=\fR\fI<default>\fR]
\fI<name>\fR\&.
.RE
.PP
\-\-add <name> <value>
.RS 4
Replaced by
\fBgit\fR
\fBconfig\fR
\fBset\fR
\fB\-\-append\fR
\fI<name>\fR
\fI<value>\fR\&.
.RE
.PP
\-\-unset <name> [<value\-pattern>]
.RS 4
Replaced by
\fBgit\fR
\fBconfig\fR
\fBunset\fR
[\fB\-\-value=\fR\fI<pattern>\fR]
\fI<name>\fR\&.
.RE
.PP
\-\-unset\-all <name> [<value\-pattern>]
.RS 4
Replaced by
\fBgit\fR
\fBconfig\fR
\fBunset\fR
[\fB\-\-value=\fR\fI<pattern>\fR]
\fB\-\-all\fR
\fI<name>\fR\&.
.RE
.PP
\-\-rename\-section <old\-name> <new\-name>
.RS 4
Replaced by
\fBgit\fR
\fBconfig\fR
\fBrename\-section\fR
\fI<old\-name>\fR
\fI<new\-name>\fR\&.
.RE
.PP
\-\-remove\-section <name>
.RS 4
Replaced by
\fBgit\fR
\fBconfig\fR
\fBremove\-section\fR
\fI<name>\fR\&.
.RE
.PP
\-e, \-\-edit
.RS 4
Replaced by
\fBgit\fR
\fBconfig\fR
\fBedit\fR\&.
.RE
.SH "CONFIGURATION"
.sp
\fBpager\&.config\fR is only respected when listing configuration, i\&.e\&., when using \fBlist\fR or \fBget\fR which may return multiple results\&. The default is to use a pager\&.
.SH "FILES"
.sp
By default, \fIgit config\fR will read configuration options from multiple files:
.PP
$(prefix)/etc/gitconfig
.RS 4
System\-wide configuration file\&.
.RE
.PP
$XDG_CONFIG_HOME/git/config, ~/\&.gitconfig
.RS 4
User\-specific configuration files\&. When the XDG_CONFIG_HOME environment variable is not set or empty, $HOME/\&.config/ is used as $XDG_CONFIG_HOME\&.
.sp
These are also called "global" configuration files\&. If both files exist, both files are read in the order given above\&.
.RE
.PP
$GIT_DIR/config
.RS 4
Repository specific configuration file\&.
.RE
.PP
$GIT_DIR/config\&.worktree
.RS 4
This is optional and is only searched when
\fBextensions\&.worktreeConfig\fR
is present in $GIT_DIR/config\&.
.RE
.sp
You may also provide additional configuration parameters when running any git command by using the \fB\-c\fR option\&. See \fBgit\fR(1) for details\&.
.sp
Options will be read from all of these files that are available\&. If the global or the system\-wide configuration files are missing or unreadable they will be ignored\&. If the repository configuration file is missing or unreadable, \fIgit config\fR will exit with a non\-zero error code\&. An error message is produced if the file is unreadable, but not if it is missing\&.
.sp
The files are read in the order given above, with last value found taking precedence over values read earlier\&. When multiple values are taken then all values of a key from all files will be used\&.
.sp
By default, options are only written to the repository specific configuration file\&. Note that this also affects options like \fBset\fR and \fBunset\fR\&. \fB\fIgit config\fR\fR\fB will only ever change one file at a time\fR\&.
.sp
You can limit which configuration sources are read from or written to by specifying the path of a file with the \fB\-\-file\fR option, or by specifying a configuration scope with \fB\-\-system\fR, \fB\-\-global\fR, \fB\-\-local\fR, or \fB\-\-worktree\fR\&. For more, see the section called \(lqOPTIONS\(rq above\&.
.SH "SCOPES"
.sp
Each configuration source falls within a configuration scope\&. The scopes are:
.PP
system
.RS 4
$(prefix)/etc/gitconfig
.RE
.PP
global
.RS 4
$XDG_CONFIG_HOME/git/config
.sp
~/\&.gitconfig
.RE
.PP
local
.RS 4
$GIT_DIR/config
.RE
.PP
worktree
.RS 4
$GIT_DIR/config\&.worktree
.RE
.PP
command
.RS 4
GIT_CONFIG_{COUNT,KEY,VALUE} environment variables (see
the section called \(lqENVIRONMENT\(rq
below)
.sp
the
\fB\-c\fR
option
.RE
.sp
With the exception of \fIcommand\fR, each scope corresponds to a command line option: \fB\-\-system\fR, \fB\-\-global\fR, \fB\-\-local\fR, \fB\-\-worktree\fR\&.
.sp
When reading options, specifying a scope will only read options from the files within that scope\&. When writing options, specifying a scope will write to the files within that scope (instead of the repository specific configuration file)\&. See the section called \(lqOPTIONS\(rq above for a complete description\&.
.sp
Most configuration options are respected regardless of the scope it is defined in, but some options are only respected in certain scopes\&. See the respective option\(cqs documentation for the full details\&.
.SS "Protected configuration"
.sp
Protected configuration refers to the \fIsystem\fR, \fIglobal\fR, and \fIcommand\fR scopes\&. For security reasons, certain options are only respected when they are specified in protected configuration, and ignored otherwise\&.
.sp
Git treats these scopes as if they are controlled by the user or a trusted administrator\&. This is because an attacker who controls these scopes can do substantial harm without using Git, so it is assumed that the user\(cqs environment protects these scopes against attackers\&.
.SH "ENVIRONMENT"
.PP
GIT_CONFIG_GLOBAL, GIT_CONFIG_SYSTEM
.RS 4
Take the configuration from the given files instead from global or system\-level configuration\&. See
\fBgit\fR(1)
for details\&.
.RE
.PP
GIT_CONFIG_NOSYSTEM
.RS 4
Whether to skip reading settings from the system\-wide $(prefix)/etc/gitconfig file\&. See
\fBgit\fR(1)
for details\&.
.RE
.sp
See also the section called \(lqFILES\(rq\&.
.PP
GIT_CONFIG_COUNT, GIT_CONFIG_KEY_<n>, GIT_CONFIG_VALUE_<n>
.RS 4
If GIT_CONFIG_COUNT is set to a positive number, all environment pairs GIT_CONFIG_KEY_<n> and GIT_CONFIG_VALUE_<n> up to that number will be added to the process\(cqs runtime configuration\&. The config pairs are zero\-indexed\&. Any missing key or value is treated as an error\&. An empty GIT_CONFIG_COUNT is treated the same as GIT_CONFIG_COUNT=0, namely no pairs are processed\&. These environment variables will override values in configuration files, but will be overridden by any explicit options passed via
\fBgit\fR
\fB\-c\fR\&.
.sp
This is useful for cases where you want to spawn multiple git commands with a common configuration but cannot depend on a configuration file, for example when writing scripts\&.
.RE
.PP
GIT_CONFIG
.RS 4
If no
\fB\-\-file\fR
option is provided to
\fBgit\fR
\fBconfig\fR, use the file given by
\fBGIT_CONFIG\fR
as if it were provided via
\fB\-\-file\fR\&. This variable has no effect on other Git commands, and is mostly for historical compatibility; there is generally no reason to use it instead of the
\fB\-\-file\fR
option\&.
.RE
.SH "EXAMPLES"
.sp
Given a \&.git/config like this:
.sp
.if n \{\
.RS 4
.\}
.nf
#
# This is the config file, and
# a \*(Aq#\*(Aq or \*(Aq;\*(Aq character indicates
# a comment
#

; core variables
[core]
        ; Don\*(Aqt trust file modes
        filemode = false

; Our diff algorithm
[diff]
        external = /usr/local/bin/diff\-wrapper
        renames = true

; Proxy settings
[core]
        gitproxy=proxy\-command for kernel\&.org
        gitproxy=default\-proxy ; for all the rest

; HTTP
[http]
        sslVerify
[http "https://weak\&.example\&.com"]
        sslVerify = false
        cookieFile = /tmp/cookie\&.txt
.fi
.if n \{\
.RE
.\}
.sp
you can set the filemode to true with
.sp
.if n \{\
.RS 4
.\}
.nf
% git config set core\&.filemode true
.fi
.if n \{\
.RE
.\}
.sp
The hypothetical proxy command entries actually have a postfix to discern what URL they apply to\&. Here is how to change the entry for kernel\&.org to "ssh"\&.
.sp
.if n \{\
.RS 4
.\}
.nf
% git config set \-\-value=\*(Aqfor kernel\&.org$\*(Aq core\&.gitproxy \*(Aq"ssh" for kernel\&.org\*(Aq
.fi
.if n \{\
.RE
.\}
.sp
This makes sure that only the key/value pair for kernel\&.org is replaced\&.
.sp
To delete the entry for renames, do
.sp
.if n \{\
.RS 4
.\}
.nf
% git config unset diff\&.renames
.fi
.if n \{\
.RE
.\}
.sp
If you want to delete an entry for a multivar (like core\&.gitproxy above), you have to provide a regex matching the value of exactly one line\&.
.sp
To query the value for a given key, do
.sp
.if n \{\
.RS 4
.\}
.nf
% git config get core\&.filemode
.fi
.if n \{\
.RE
.\}
.sp
or, to query a multivar:
.sp
.if n \{\
.RS 4
.\}
.nf
% git config get \-\-value="for kernel\&.org$" core\&.gitproxy
.fi
.if n \{\
.RE
.\}
.sp
If you want to know all the values for a multivar, do:
.sp
.if n \{\
.RS 4
.\}
.nf
% git config get \-\-all \-\-show\-names core\&.gitproxy
.fi
.if n \{\
.RE
.\}
.sp
If you like to live dangerously, you can replace \fBall\fR core\&.gitproxy by a new one with
.sp
.if n \{\
.RS 4
.\}
.nf
% git config set \-\-all core\&.gitproxy ssh
.fi
.if n \{\
.RE
.\}
.sp
However, if you really only want to replace the line for the default proxy, i\&.e\&. the one without a "for \&...\:" postfix, do something like this:
.sp
.if n \{\
.RS 4
.\}
.nf
% git config set \-\-value=\*(Aq! for \*(Aq core\&.gitproxy ssh
.fi
.if n \{\
.RE
.\}
.sp
To actually match only values with an exclamation mark, you have to
.sp
.if n \{\
.RS 4
.\}
.nf
% git config set \-\-value=\*(Aq[!]\*(Aq section\&.key value
.fi
.if n \{\
.RE
.\}
.sp
To add a new proxy, without altering any of the existing ones, use
.sp
.if n \{\
.RS 4
.\}
.nf
% git config set \-\-append core\&.gitproxy \*(Aq"proxy\-command" for example\&.com\*(Aq
.fi
.if n \{\
.RE
.\}
.sp
An example to use customized color from the configuration in your script:
.sp
.if n \{\
.RS 4
.\}
.nf
#!/bin/sh
WS=$(git config get \-\-type=color \-\-default="blue reverse" color\&.diff\&.whitespace)
RESET=$(git config get \-\-type=color \-\-default="reset" "")
echo "${WS}your whitespace color or blue reverse${RESET}"
.fi
.if n \{\
.RE
.\}
.sp
For URLs in \fBhttps://weak\&.example\&.com\fR, \fBhttp\&.sslVerify\fR is set to false, while it is set to \fBtrue\fR for all others:
.sp
.if n \{\
.RS 4
.\}
.nf
% git config get \-\-type=bool \-\-url=https://good\&.example\&.com http\&.sslverify
true
% git config get \-\-type=bool \-\-url=https://weak\&.example\&.com http\&.sslverify
false
% git config get \-\-url=https://weak\&.example\&.com http
http\&.cookieFile /tmp/cookie\&.txt
http\&.sslverify false
.fi
.if n \{\
.RE
.\}
.SH "CONFIGURATION FILE"
.sp
The Git configuration file contains a number of variables that affect the Git commands\*(Aq behavior\&. The files \&.\fBgit/config\fR and optionally \fBconfig\&.worktree\fR (see the "CONFIGURATION FILE" section of \fBgit-worktree\fR(1)) in each repository are used to store the configuration for that repository, and \fB$HOME/\&.gitconfig\fR is used to store a per\-user configuration as fallback values for the \&.\fBgit/config\fR file\&. The file \fB/etc/gitconfig\fR can be used to store a system\-wide default configuration\&.
.sp
The configuration variables are used by both the Git plumbing and the porcelain commands\&. The variables are divided into sections, wherein the fully qualified variable name of the variable itself is the last dot\-separated segment and the section name is everything before the last dot\&. The variable names are case\-insensitive, allow only alphanumeric characters and \fB\-\fR, and must start with an alphabetic character\&. Some variables may appear multiple times; we say then that the variable is multivalued\&.
.SS "Syntax"
.sp
The syntax is fairly flexible and permissive\&. Whitespace characters, which in this context are the space character (SP) and the horizontal tabulation (HT), are mostly ignored\&. The \fI#\fR and \fI;\fR characters begin comments to the end of line\&. Blank lines are ignored\&.
.sp
The file consists of sections and variables\&. A section begins with the name of the section in square brackets and continues until the next section begins\&. Section names are case\-insensitive\&. Only alphanumeric characters, \fB\-\fR and \&. are allowed in section names\&. Each variable must belong to some section, which means that there must be a section header before the first setting of a variable\&.
.sp
Sections can be further divided into subsections\&. To begin a subsection put its name in double quotes, separated by space from the section name, in the section header, like in the example below:
.sp
.if n \{\
.RS 4
.\}
.nf
        [section "subsection"]
.fi
.if n \{\
.RE
.\}
.sp
Subsection names are case sensitive and can contain any characters except newline and the null byte\&. Doublequote " and backslash can be included by escaping them as \fB\e\fR" and \fB\e\e\fR, respectively\&. Backslashes preceding other characters are dropped when reading; for example, \fB\et\fR is read as \fBt\fR and \fB\e0\fR is read as \fB0\fR\&. Section headers cannot span multiple lines\&. Variables may belong directly to a section or to a given subsection\&. You can have [\fBsection\fR] if you have [\fBsection\fR "subsection"], but you don\(cqt need to\&.
.sp
There is also a deprecated [\fBsection\&.subsection\fR] syntax\&. With this syntax, the subsection name is converted to lower\-case and is also compared case sensitively\&. These subsection names follow the same restrictions as section names\&.
.sp
All the other lines (and the remainder of the line after the section header) are recognized as setting variables, in the form \fIname = value\fR (or just \fIname\fR, which is a short\-hand to say that the variable is the boolean "true")\&. The variable names are case\-insensitive, allow only alphanumeric characters and \fB\-\fR, and must start with an alphabetic character\&.
.sp
Whitespace characters surrounding \fBname\fR, \fB=\fR and \fBvalue\fR are discarded\&. Internal whitespace characters within \fIvalue\fR are retained verbatim\&. Comments starting with either # or ; and extending to the end of line are discarded\&. A line that defines a value can be continued to the next line by ending it with a backslash (\fB\e\fR); the backslash and the end\-of\-line characters are discarded\&.
.sp
If \fBvalue\fR needs to contain leading or trailing whitespace characters, it must be enclosed in double quotation marks (")\&. Inside double quotation marks, double quote (") and backslash (\fB\e\fR) characters must be escaped: use \fB\e\fR" for " and \fB\e\e\fR for \fB\e\fR\&.
.sp
The following escape sequences (beside \fB\e\fR" and \fB\e\e\fR) are recognized: \fB\en\fR for newline character (NL), \fB\et\fR for horizontal tabulation (HT, TAB) and \fB\eb\fR for backspace (BS)\&. Other char escape sequences (including octal escape sequences) are invalid\&.
.SS "Includes"
.sp
The \fBinclude\fR and \fBincludeIf\fR sections allow you to include config directives from another source\&. These sections behave identically to each other with the exception that \fBincludeIf\fR sections may be ignored if their condition does not evaluate to true; see "Conditional includes" below\&.
.sp
You can include a config file from another by setting the special \fBinclude\&.path\fR (or \fBincludeIf\&.*\&.path\fR) variable to the name of the file to be included\&. The variable takes a pathname as its value, and is subject to tilde expansion\&. These variables can be given multiple times\&.
.sp
The contents of the included file are inserted immediately, as if they had been found at the location of the include directive\&. If the value of the variable is a relative path, the path is considered to be relative to the configuration file in which the include directive was found\&. See below for examples\&.
.SS "Conditional includes"
.sp
You can conditionally include a config file from another by setting an \fBincludeIf\&.\fR\fI<condition>\fR\fB\&.path\fR variable to the name of the file to be included\&.
.sp
The condition starts with a keyword followed by a colon and some data whose format and meaning depends on the keyword\&. Supported keywords are:
.PP
\fBgitdir\fR
.RS 4
The data that follows the keyword
\fBgitdir:\fR
is used as a glob pattern\&. If the location of the \&.git directory matches the pattern, the include condition is met\&.
.sp
The \&.git location may be auto\-discovered, or come from
\fB$GIT_DIR\fR
environment variable\&. If the repository is auto\-discovered via a \&.git file (e\&.g\&. from submodules, or a linked worktree), the \&.git location would be the final location where the \&.git directory is, not where the \&.git file is\&.
.sp
The pattern can contain standard globbing wildcards and two additional ones,
\fB**/\fR
and
\fB/**\fR, that can match multiple path components\&. Please refer to
\fBgitignore\fR(5)
for details\&. For convenience:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
If the pattern starts with
\fB~/\fR,
\fB~\fR
will be substituted with the content of the environment variable
\fBHOME\fR\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
If the pattern starts with \&.\fB/\fR, it is replaced with the directory containing the current config file\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
If the pattern does not start with either
\fB~/\fR, \&.\fB/\fR
or
\fB/\fR,
\fB**/\fR
will be automatically prepended\&. For example, the pattern
\fBfoo/bar\fR
becomes
\fB**/foo/bar\fR
and would match
\fB/any/path/to/foo/bar\fR\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
If the pattern ends with
\fB/\fR,
\fB**\fR
will be automatically added\&. For example, the pattern
\fBfoo/\fR
becomes
\fBfoo/**\fR\&. In other words, it matches "foo" and everything inside, recursively\&.
.RE
.RE
.PP
\fBgitdir/i\fR
.RS 4
This is the same as
\fBgitdir\fR
except that matching is done case\-insensitively (e\&.g\&. on case\-insensitive file systems)
.RE
.PP
\fBonbranch\fR
.RS 4
The data that follows the keyword
\fBonbranch:\fR
is taken to be a pattern with standard globbing wildcards and two additional ones,
\fB**/\fR
and
\fB/**\fR, that can match multiple path components\&. If we are in a worktree where the name of the branch that is currently checked out matches the pattern, the include condition is met\&.
.sp
If the pattern ends with
\fB/\fR,
\fB**\fR
will be automatically added\&. For example, the pattern
\fBfoo/\fR
becomes
\fBfoo/**\fR\&. In other words, it matches all branches that begin with
\fBfoo/\fR\&. This is useful if your branches are organized hierarchically and you would like to apply a configuration to all the branches in that hierarchy\&.
.RE
.PP
\fBhasconfig:remote\&.*\&.url:\fR
.RS 4
The data that follows this keyword is taken to be a pattern with standard globbing wildcards and two additional ones,
\fB**/\fR
and
\fB/**\fR, that can match multiple components\&. The first time this keyword is seen, the rest of the config files will be scanned for remote URLs (without applying any values)\&. If there exists at least one remote URL that matches this pattern, the include condition is met\&.
.sp
Files included by this option (directly or indirectly) are not allowed to contain remote URLs\&.
.sp
Note that unlike other includeIf conditions, resolving this condition relies on information that is not yet known at the point of reading the condition\&. A typical use case is this option being present as a system\-level or global\-level config, and the remote URL being in a local\-level config; hence the need to scan ahead when resolving this condition\&. In order to avoid the chicken\-and\-egg problem in which potentially\-included files can affect whether such files are potentially included, Git breaks the cycle by prohibiting these files from affecting the resolution of these conditions (thus, prohibiting them from declaring remote URLs)\&.
.sp
As for the naming of this keyword, it is for forwards compatibility with a naming scheme that supports more variable\-based include conditions, but currently Git only supports the exact keyword described above\&.
.RE
.sp
A few more notes on matching via \fBgitdir\fR and \fBgitdir/i\fR:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Symlinks in
\fB$GIT_DIR\fR
are not resolved before matching\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Both the symlink & realpath versions of paths will be matched outside of
\fB$GIT_DIR\fR\&. E\&.g\&. if ~/git is a symlink to /mnt/storage/git, both
\fBgitdir:~/git\fR
and
\fBgitdir:/mnt/storage/git\fR
will match\&.
.sp
This was not the case in the initial release of this feature in v2\&.13\&.0, which only matched the realpath version\&. Configuration that wants to be compatible with the initial release of this feature needs to either specify only the realpath version, or both versions\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Note that "\&.\&./" is not special and will match literally, which is unlikely what you want\&.
.RE
.SS "Example"
.sp
.if n \{\
.RS 4
.\}
.nf
# Core variables
[core]
        ; Don\*(Aqt trust file modes
        filemode = false

# Our diff algorithm
[diff]
        external = /usr/local/bin/diff\-wrapper
        renames = true

[branch "devel"]
        remote = origin
        merge = refs/heads/devel

# Proxy settings
[core]
        gitProxy="ssh" for "kernel\&.org"
        gitProxy=default\-proxy ; for the rest

[include]
        path = /path/to/foo\&.inc ; include by absolute path
        path = foo\&.inc ; find "foo\&.inc" relative to the current file
        path = ~/foo\&.inc ; find "foo\&.inc" in your `$HOME` directory

; include if $GIT_DIR is /path/to/foo/\&.git
[includeIf "gitdir:/path/to/foo/\&.git"]
        path = /path/to/foo\&.inc

; include for all repositories inside /path/to/group
[includeIf "gitdir:/path/to/group/"]
        path = /path/to/foo\&.inc

; include for all repositories inside $HOME/to/group
[includeIf "gitdir:~/to/group/"]
        path = /path/to/foo\&.inc

; relative paths are always relative to the including
; file (if the condition is true); their location is not
; affected by the condition
[includeIf "gitdir:/path/to/group/"]
        path = foo\&.inc

; include only if we are in a worktree where foo\-branch is
; currently checked out
[includeIf "onbranch:foo\-branch"]
        path = foo\&.inc

; include only if a remote with the given URL exists (note
; that such a URL may be provided later in a file or in a
; file read after this file is read, as seen in this example)
[includeIf "hasconfig:remote\&.*\&.url:https://example\&.com/**"]
        path = foo\&.inc
[remote "origin"]
        url = https://example\&.com/git
.fi
.if n \{\
.RE
.\}
.SS "Values"
.sp
Values of many variables are treated as a simple string, but there are variables that take values of specific types and there are rules as to how to spell them\&.
.PP
boolean
.RS 4
When a variable is said to take a boolean value, many synonyms are accepted for
\fItrue\fR
and
\fIfalse\fR; these are all case\-insensitive\&.
.PP
true
.RS 4
Boolean true literals are
\fByes\fR,
\fBon\fR,
\fBtrue\fR, and
\fB1\fR\&. Also, a variable defined without
\fB=\fR
\fI<value>\fR
is taken as true\&.
.RE
.PP
false
.RS 4
Boolean false literals are
\fBno\fR,
\fBoff\fR,
\fBfalse\fR,
\fB0\fR
and the empty string\&.
.sp
When converting a value to its canonical form using the
\fB\-\-type=bool\fR
type specifier,
\fIgit config\fR
will ensure that the output is "true" or "false" (spelled in lowercase)\&.
.RE
.RE
.PP
integer
.RS 4
The value for many variables that specify various sizes can be suffixed with
\fBk\fR,
\fBM\fR,\&...\: to mean "scale the number by 1024", "by 1024x1024", etc\&.
.RE
.PP
color
.RS 4
The value for a variable that takes a color is a list of colors (at most two, one for foreground and one for background) and attributes (as many as you want), separated by spaces\&.
.sp
The basic colors accepted are
\fBnormal\fR,
\fBblack\fR,
\fBred\fR,
\fBgreen\fR,
\fByellow\fR,
\fBblue\fR,
\fBmagenta\fR,
\fBcyan\fR,
\fBwhite\fR
and
\fBdefault\fR\&. The first color given is the foreground; the second is the background\&. All the basic colors except
\fBnormal\fR
and
\fBdefault\fR
have a bright variant that can be specified by prefixing the color with
\fBbright\fR, like
\fBbrightred\fR\&.
.sp
The color
\fBnormal\fR
makes no change to the color\&. It is the same as an empty string, but can be used as the foreground color when specifying a background color alone (for example, "normal red")\&.
.sp
The color
\fBdefault\fR
explicitly resets the color to the terminal default, for example to specify a cleared background\&. Although it varies between terminals, this is usually not the same as setting to "white black"\&.
.sp
Colors may also be given as numbers between 0 and 255; these use ANSI 256\-color mode (but note that not all terminals may support this)\&. If your terminal supports it, you may also specify 24\-bit RGB values as hex, like #ff0ab3, or 12\-bit RGB values like #f1b, which is equivalent to the 24\-bit color #ff11bb\&.
.sp
The accepted attributes are
\fBbold\fR,
\fBdim\fR,
\fBul\fR,
\fBblink\fR,
\fBreverse\fR,
\fBitalic\fR, and
\fBstrike\fR
(for crossed\-out or "strikethrough" letters)\&. The position of any attributes with respect to the colors (before, after, or in between), doesn\(cqt matter\&. Specific attributes may be turned off by prefixing them with
\fBno\fR
or
\fBno\-\fR
(e\&.g\&.,
\fBnoreverse\fR,
\fBno\-ul\fR, etc)\&.
.sp
The pseudo\-attribute
\fBreset\fR
resets all colors and attributes before applying the specified coloring\&. For example,
\fBreset\fR
\fBgreen\fR
will result in a green foreground and default background without any active attributes\&.
.sp
An empty color string produces no color effect at all\&. This can be used to avoid coloring specific elements without disabling color entirely\&.
.sp
For git\(cqs pre\-defined color slots, the attributes are meant to be reset at the beginning of each item in the colored output\&. So setting
\fBcolor\&.decorate\&.branch\fR
to
\fBblack\fR
will paint that branch name in a plain
\fBblack\fR, even if the previous thing on the same output line (e\&.g\&. opening parenthesis before the list of branch names in
\fBlog\fR
\fB\-\-decorate\fR
output) is set to be painted with
\fBbold\fR
or some other attribute\&. However, custom log formats may do more complicated and layered coloring, and the negated forms may be useful there\&.
.RE
.PP
pathname
.RS 4
A variable that takes a pathname value can be given a string that begins with "\fB~/\fR" or "\fB~user/\fR", and the usual tilde expansion happens to such a string:
\fB~/\fR
is expanded to the value of
\fB$HOME\fR, and
\fB~user/\fR
to the specified user\(cqs home directory\&.
.sp
If a path starts with
\fB%\fR(\fBprefix\fR)\fB/\fR, the remainder is interpreted as a path relative to Git\(cqs "runtime prefix", i\&.e\&. relative to the location where Git itself was installed\&. For example,
\fB%\fR(\fBprefix\fR)\fB/bin/\fR
refers to the directory in which the Git executable itself lives\&. If Git was compiled without runtime prefix support, the compiled\-in prefix will be substituted instead\&. In the unlikely event that a literal path needs to be specified that should
\fInot\fR
be expanded, it needs to be prefixed by \&.\fB/\fR, like so: \&.\fB/%\fR(\fBprefix\fR)\fB/bin\fR\&.
.RE
.SS "Variables"
.sp
Note that this list is non\-comprehensive and not necessarily complete\&. For command\-specific variables, you will find a more detailed description in the appropriate manual page\&.
.sp
Other git\-related tools may and do use their own variables\&. When inventing new variables for use in your own tool, make sure their names do not conflict with those that are used by Git itself and other popular tools, and describe them in your documentation\&.
.PP
\fBadd\&.ignoreErrors\fR, \fBadd\&.ignore\-errors\fR (deprecated)
.RS 4
Tells
\fBgit\fR
\fBadd\fR
to continue adding files when some files cannot be added due to indexing errors\&. Equivalent to the
\fB\-\-ignore\-errors\fR
option of
\fBgit-add\fR(1)\&.
\fBadd\&.ignore\-errors\fR
is deprecated, as it does not follow the usual naming convention for configuration variables\&.
.RE
.PP
advice\&.*
.RS 4
These variables control various optional help messages designed to aid new users\&. When left unconfigured, Git will give the message alongside instructions on how to squelch it\&. You can tell Git that you have understood the issue and no longer need a specific help message by setting the corresponding variable to
\fBfalse\fR\&.
.sp
As they are intended to help human users, these messages are output to the standard error\&. When tools that run Git as a subprocess find them disruptive, they can set
\fBGIT_ADVICE=0\fR
in the environment to squelch all advice messages\&.
.PP
addEmbeddedRepo
.RS 4
Shown when the user accidentally adds one git repo inside of another\&.
.RE
.PP
addEmptyPathspec
.RS 4
Shown when the user runs
\fBgit\fR
\fBadd\fR
without providing the pathspec parameter\&.
.RE
.PP
addIgnoredFile
.RS 4
Shown when the user attempts to add an ignored file to the index\&.
.RE
.PP
amWorkDir
.RS 4
Shown when
\fBgit-am\fR(1)
fails to apply a patch file, to tell the user the location of the file\&.
.RE
.PP
ambiguousFetchRefspec
.RS 4
Shown when a fetch refspec for multiple remotes maps to the same remote\-tracking branch namespace and causes branch tracking set\-up to fail\&.
.RE
.PP
checkoutAmbiguousRemoteBranchName
.RS 4
Shown when the argument to
\fBgit-checkout\fR(1)
and
\fBgit-switch\fR(1)
ambiguously resolves to a remote tracking branch on more than one remote in situations where an unambiguous argument would have otherwise caused a remote\-tracking branch to be checked out\&. See the
\fBcheckout\&.defaultRemote\fR
configuration variable for how to set a given remote to be used by default in some situations where this advice would be printed\&.
.RE
.PP
commitBeforeMerge
.RS 4
Shown when
\fBgit-merge\fR(1)
refuses to merge to avoid overwriting local changes\&.
.RE
.PP
detachedHead
.RS 4
Shown when the user uses
\fBgit-switch\fR(1)
or
\fBgit-checkout\fR(1)
to move to the detached HEAD state, to tell the user how to create a local branch after the fact\&.
.RE
.PP
diverging
.RS 4
Shown when a fast\-forward is not possible\&.
.RE
.PP
fetchShowForcedUpdates
.RS 4
Shown when
\fBgit-fetch\fR(1)
takes a long time to calculate forced updates after ref updates, or to warn that the check is disabled\&.
.RE
.PP
forceDeleteBranch
.RS 4
Shown when the user tries to delete a not fully merged branch without the force option set\&.
.RE
.PP
ignoredHook
.RS 4
Shown when a hook is ignored because the hook is not set as executable\&.
.RE
.PP
implicitIdentity
.RS 4
Shown when the user\(cqs information is guessed from the system username and domain name, to tell the user how to set their identity configuration\&.
.RE
.PP
mergeConflict
.RS 4
Shown when various commands stop because of conflicts\&.
.RE
.PP
nestedTag
.RS 4
Shown when a user attempts to recursively tag a tag object\&.
.RE
.PP
pushAlreadyExists
.RS 4
Shown when
\fBgit-push\fR(1)
rejects an update that does not qualify for fast\-forwarding (e\&.g\&., a tag\&.)
.RE
.PP
pushFetchFirst
.RS 4
Shown when
\fBgit-push\fR(1)
rejects an update that tries to overwrite a remote ref that points at an object we do not have\&.
.RE
.PP
pushNeedsForce
.RS 4
Shown when
\fBgit-push\fR(1)
rejects an update that tries to overwrite a remote ref that points at an object that is not a commit\-ish, or make the remote ref point at an object that is not a commit\-ish\&.
.RE
.PP
pushNonFFCurrent
.RS 4
Shown when
\fBgit-push\fR(1)
fails due to a non\-fast\-forward update to the current branch\&.
.RE
.PP
pushNonFFMatching
.RS 4
Shown when the user ran
\fBgit-push\fR(1)
and pushed "matching refs" explicitly (i\&.e\&. used
\fB:\fR, or specified a refspec that isn\(cqt the current branch) and it resulted in a non\-fast\-forward error\&.
.RE
.PP
pushRefNeedsUpdate
.RS 4
Shown when
\fBgit-push\fR(1)
rejects a forced update of a branch when its remote\-tracking ref has updates that we do not have locally\&.
.RE
.PP
pushUnqualifiedRefname
.RS 4
Shown when
\fBgit-push\fR(1)
gives up trying to guess based on the source and destination refs what remote ref namespace the source belongs in, but where we can still suggest that the user push to either
\fBrefs/heads/*\fR
or
\fBrefs/tags/*\fR
based on the type of the source object\&.
.RE
.PP
pushUpdateRejected
.RS 4
Set this variable to
\fBfalse\fR
if you want to disable
\fBpushNonFFCurrent\fR,
\fBpushNonFFMatching\fR,
\fBpushAlreadyExists\fR,
\fBpushFetchFirst\fR,
\fBpushNeedsForce\fR, and
\fBpushRefNeedsUpdate\fR
simultaneously\&.
.RE
.PP
rebaseTodoError
.RS 4
Shown when there is an error after editing the rebase todo list\&.
.RE
.PP
refSyntax
.RS 4
Shown when the user provides an illegal ref name, to tell the user about the ref syntax documentation\&.
.RE
.PP
resetNoRefresh
.RS 4
Shown when
\fBgit-reset\fR(1)
takes more than 2 seconds to refresh the index after reset, to tell the user that they can use the
\fB\-\-no\-refresh\fR
option\&.
.RE
.PP
resolveConflict
.RS 4
Shown by various commands when conflicts prevent the operation from being performed\&.
.RE
.PP
rmHints
.RS 4
Shown on failure in the output of
\fBgit-rm\fR(1), to give directions on how to proceed from the current state\&.
.RE
.PP
sequencerInUse
.RS 4
Shown when a sequencer command is already in progress\&.
.RE
.PP
skippedCherryPicks
.RS 4
Shown when
\fBgit-rebase\fR(1)
skips a commit that has already been cherry\-picked onto the upstream branch\&.
.RE
.PP
sparseIndexExpanded
.RS 4
Shown when a sparse index is expanded to a full index, which is likely due to an unexpected set of files existing outside of the sparse\-checkout\&.
.RE
.PP
statusAheadBehind
.RS 4
Shown when
\fBgit-status\fR(1)
computes the ahead/behind counts for a local ref compared to its remote tracking ref, and that calculation takes longer than expected\&. Will not appear if
\fBstatus\&.aheadBehind\fR
is false or the option
\fB\-\-no\-ahead\-behind\fR
is given\&.
.RE
.PP
statusHints
.RS 4
Show directions on how to proceed from the current state in the output of
\fBgit-status\fR(1), in the template shown when writing commit messages in
\fBgit-commit\fR(1), and in the help message shown by
\fBgit-switch\fR(1)
or
\fBgit-checkout\fR(1)
when switching branches\&.
.RE
.PP
statusUoption
.RS 4
Shown when
\fBgit-status\fR(1)
takes more than 2 seconds to enumerate untracked files, to tell the user that they can use the
\fB\-u\fR
option\&.
.RE
.PP
submoduleAlternateErrorStrategyDie
.RS 4
Shown when a submodule\&.alternateErrorStrategy option configured to "die" causes a fatal error\&.
.RE
.PP
submoduleMergeConflict
.RS 4
Advice shown when a non\-trivial submodule merge conflict is encountered\&.
.RE
.PP
submodulesNotUpdated
.RS 4
Shown when a user runs a submodule command that fails because
\fBgit\fR
\fBsubmodule\fR
\fBupdate\fR
\fB\-\-init\fR
was not run\&.
.RE
.PP
suggestDetachingHead
.RS 4
Shown when
\fBgit-switch\fR(1)
refuses to detach HEAD without the explicit
\fB\-\-detach\fR
option\&.
.RE
.PP
updateSparsePath
.RS 4
Shown when either
\fBgit-add\fR(1)
or
\fBgit-rm\fR(1)
is asked to update index entries outside the current sparse checkout\&.
.RE
.PP
waitingForEditor
.RS 4
Shown when Git is waiting for editor input\&. Relevant when e\&.g\&. the editor is not launched inside the terminal\&.
.RE
.PP
worktreeAddOrphan
.RS 4
Shown when the user tries to create a worktree from an invalid reference, to tell the user how to create a new unborn branch instead\&.
.RE
.RE
.PP
alias\&.*
.RS 4
Command aliases for the
\fBgit\fR(1)
command wrapper \- e\&.g\&. after defining
\fBalias\&.last\fR
\fB=\fR
\fBcat\-file\fR
\fBcommit\fR
\fBHEAD\fR, the invocation
\fBgit\fR
\fBlast\fR
is equivalent to
\fBgit\fR
\fBcat\-file\fR
\fBcommit\fR
\fBHEAD\fR\&. To avoid confusion and troubles with script usage, aliases that hide existing Git commands are ignored\&. Arguments are split by spaces, the usual shell quoting and escaping are supported\&. A quote pair or a backslash can be used to quote them\&.
.sp
Note that the first word of an alias does not necessarily have to be a command\&. It can be a command\-line option that will be passed into the invocation of
\fBgit\fR\&. In particular, this is useful when used with
\fB\-c\fR
to pass in one\-time configurations or
\fB\-p\fR
to force pagination\&. For example,
\fBloud\-rebase\fR
\fB=\fR
\fB\-c\fR
\fBcommit\&.verbose=true\fR
\fBrebase\fR
can be defined such that running
\fBgit\fR
\fBloud\-rebase\fR
would be equivalent to
\fBgit\fR
\fB\-c\fR
\fBcommit\&.verbose=true\fR
\fBrebase\fR\&. Also,
\fBps\fR
\fB=\fR
\fB\-p\fR
\fBstatus\fR
would be a helpful alias since
\fBgit\fR
\fBps\fR
would paginate the output of
\fBgit\fR
\fBstatus\fR
where the original command does not\&.
.sp
If the alias expansion is prefixed with an exclamation point, it will be treated as a shell command\&. For example, defining
\fBalias\&.new\fR
\fB=\fR
!gitk
\fB\-\-all\fR
\fB\-\-not\fR
\fBORIG_HEAD\fR, the invocation
\fBgit\fR
\fBnew\fR
is equivalent to running the shell command
\fBgitk\fR
\fB\-\-all\fR
\fB\-\-not\fR
\fBORIG_HEAD\fR\&. Note:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Shell commands will be executed from the top\-level directory of a repository, which may not necessarily be the current directory\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBGIT_PREFIX\fR
is set as returned by running
\fBgit\fR
\fBrev\-parse\fR
\fB\-\-show\-prefix\fR
from the original current directory\&. See
\fBgit-rev-parse\fR(1)\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Shell command aliases always receive any extra arguments provided to the Git command\-line as positional arguments\&.
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Care should be taken if your shell alias is a "one\-liner" script with multiple commands (e\&.g\&. in a pipeline), references multiple arguments, or is otherwise not able to handle positional arguments added at the end\&. For example:
\fBalias\&.cmd\fR
\fB=\fR
"!echo
\fB$1\fR
|
\fBgrep\fR
\fB$2\fR" called as
\fBgit\fR
\fBcmd\fR
\fB1\fR
\fB2\fR
will be executed as
\fIecho $1 | grep $2 1 2\fR, which is not what you want\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
A convenient way to deal with this is to write your script operations in an inline function that is then called with any arguments from the command\-line\&. For example `alias\&.cmd = "!c() { echo $1 | grep $2 ; }; c" will correctly execute the prior example\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Setting
\fBGIT_TRACE=1\fR
can help you debug the command being run for your alias\&.
.RE
.RE
.RE
.PP
am\&.keepcr
.RS 4
If true, git\-am will call git\-mailsplit for patches in mbox format with parameter
\fB\-\-keep\-cr\fR\&. In this case git\-mailsplit will not remove
\fB\er\fR
from lines ending with
\fB\er\en\fR\&. Can be overridden by giving
\fB\-\-no\-keep\-cr\fR
from the command line\&. See
\fBgit-am\fR(1),
\fBgit-mailsplit\fR(1)\&.
.RE
.PP
am\&.threeWay
.RS 4
By default,
\fBgit\fR
\fBam\fR
will fail if the patch does not apply cleanly\&. When set to true, this setting tells
\fBgit\fR
\fBam\fR
to fall back on 3\-way merge if the patch records the identity of blobs it is supposed to apply to and we have those blobs available locally (equivalent to giving the
\fB\-\-3way\fR
option from the command line)\&. Defaults to
\fBfalse\fR\&. See
\fBgit-am\fR(1)\&.
.RE
.PP
apply\&.ignoreWhitespace
.RS 4
When set to
\fIchange\fR, tells
\fIgit apply\fR
to ignore changes in whitespace, in the same way as the
\fB\-\-ignore\-space\-change\fR
option\&. When set to one of: no, none, never, false, it tells
\fIgit apply\fR
to respect all whitespace differences\&. See
\fBgit-apply\fR(1)\&.
.RE
.PP
apply\&.whitespace
.RS 4
Tells
\fIgit apply\fR
how to handle whitespace, in the same way as the
\fB\-\-whitespace\fR
option\&. See
\fBgit-apply\fR(1)\&.
.RE
.PP
attr\&.tree
.RS 4
A reference to a tree in the repository from which to read attributes, instead of the \&.\fBgitattributes\fR
file in the working tree\&. If the value does not resolve to a valid tree object, an empty tree is used instead\&. When the
\fBGIT_ATTR_SOURCE\fR
environment variable or
\fB\-\-attr\-source\fR
command line option are used, this configuration variable has no effect\&.
.RE
.if n \{\
.sp
.\}
.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBNote\fR
.ps -1
.br
.sp
The configuration options in \fBbitmapPseudoMerge\&.*\fR are considered EXPERIMENTAL and may be subject to change or be removed entirely in the future\&. For more information about the pseudo\-merge bitmap feature, see the "Pseudo\-merge bitmaps" section of \fBgitpacking\fR(7)\&.
.sp .5v
.RE
.PP
bitmapPseudoMerge\&.<name>\&.pattern
.RS 4
Regular expression used to match reference names\&. Commits pointed to by references matching this pattern (and meeting the below criteria, like
\fBbitmapPseudoMerge\&.\fR\fI<name>\fR\fB\&.sampleRate\fR
and
\fBbitmapPseudoMerge\&.\fR\fI<name>\fR\fB\&.threshold\fR) will be considered for inclusion in a pseudo\-merge bitmap\&.
.sp
Commits are grouped into pseudo\-merge groups based on whether or not any reference(s) that point at a given commit match the pattern, which is an extended regular expression\&.
.sp
Within a pseudo\-merge group, commits may be further grouped into sub\-groups based on the capture groups in the pattern\&. These sub\-groupings are formed from the regular expressions by concatenating any capture groups from the regular expression, with a
\fI\-\fR
dash in between\&.
.sp
For example, if the pattern is
\fBrefs/tags/\fR, then all tags (provided they meet the below criteria) will be considered candidates for the same pseudo\-merge group\&. However, if the pattern is instead
\fBrefs/remotes/\fR([\fB0\-9\fR])\fB+/tags/\fR, then tags from different remotes will be grouped into separate pseudo\-merge groups, based on the remote number\&.
.RE
.PP
bitmapPseudoMerge\&.<name>\&.decay
.RS 4
Determines the rate at which consecutive pseudo\-merge bitmap groups decrease in size\&. Must be non\-negative\&. This parameter can be thought of as
\fBk\fR
in the function
\fBf\fR(\fBn\fR)
\fB=\fR
\fBC\fR
\fB*\fR
\fBn^\-k\fR, where
\fBf\fR(\fBn\fR) is the size of the `n`th group\&.
.sp
Setting the decay rate equal to
\fB0\fR
will cause all groups to be the same size\&. Setting the decay rate equal to
\fB1\fR
will cause the
\fBn\fR`th
\fBgroup\fR
\fBto\fR
\fBbe\fR
`1/n the size of the initial group\&. Higher values of the decay rate cause consecutive groups to shrink at an increasing rate\&. The default is
\fB1\fR\&.
.sp
If all groups are the same size, it is possible that groups containing newer commits will be able to be used less often than earlier groups, since it is more likely that the references pointing at newer commits will be updated more often than a reference pointing at an old commit\&.
.RE
.PP
bitmapPseudoMerge\&.<name>\&.sampleRate
.RS 4
Determines the proportion of non\-bitmapped commits (among reference tips) which are selected for inclusion in an unstable pseudo\-merge bitmap\&. Must be between
\fB0\fR
and
\fB1\fR
(inclusive)\&. The default is
\fB1\fR\&.
.RE
.PP
bitmapPseudoMerge\&.<name>\&.threshold
.RS 4
Determines the minimum age of non\-bitmapped commits (among reference tips, as above) which are candidates for inclusion in an unstable pseudo\-merge bitmap\&. The default is
\fB1\&.week\&.ago\fR\&.
.RE
.PP
bitmapPseudoMerge\&.<name>\&.maxMerges
.RS 4
Determines the maximum number of pseudo\-merge commits among which commits may be distributed\&.
.sp
For pseudo\-merge groups whose pattern does not contain any capture groups, this setting is applied for all commits matching the regular expression\&. For patterns that have one or more capture groups, this setting is applied for each distinct capture group\&.
.sp
For example, if your capture group is
\fBrefs/tags/\fR, then this setting will distribute all tags into a maximum of
\fBmaxMerges\fR
pseudo\-merge commits\&. However, if your capture group is, say,
\fBrefs/remotes/\fR([\fB0\-9\fR]\fB+\fR)\fB/tags/\fR, then this setting will be applied to each remote\(cqs set of tags individually\&.
.sp
Must be non\-negative\&. The default value is 64\&.
.RE
.PP
bitmapPseudoMerge\&.<name>\&.stableThreshold
.RS 4
Determines the minimum age of commits (among reference tips, as above, however stable commits are still considered candidates even when they have been covered by a bitmap) which are candidates for a stable a pseudo\-merge bitmap\&. The default is
\fB1\&.month\&.ago\fR\&.
.sp
Setting this threshold to a smaller value (e\&.g\&., 1\&.week\&.ago) will cause more stable groups to be generated (which impose a one\-time generation cost) but those groups will likely become stale over time\&. Using a larger value incurs the opposite penalty (fewer stable groups which are more useful)\&.
.RE
.PP
bitmapPseudoMerge\&.<name>\&.stableSize
.RS 4
Determines the size (in number of commits) of a stable psuedo\-merge bitmap\&. The default is
\fB512\fR\&.
.RE
.PP
blame\&.blankBoundary
.RS 4
Show blank commit object name for boundary commits in
\fBgit-blame\fR(1)\&. This option defaults to false\&.
.RE
.PP
blame\&.coloring
.RS 4
This determines the coloring scheme to be applied to blame output\&. It can be
\fIrepeatedLines\fR,
\fIhighlightRecent\fR, or
\fInone\fR
which is the default\&.
.RE
.PP
blame\&.date
.RS 4
Specifies the format used to output dates in
\fBgit-blame\fR(1)\&. If unset the iso format is used\&. For supported values, see the discussion of the
\fB\-\-date\fR
option at
\fBgit-log\fR(1)\&.
.RE
.PP
blame\&.showEmail
.RS 4
Show the author email instead of author name in
\fBgit-blame\fR(1)\&. This option defaults to false\&.
.RE
.PP
blame\&.showRoot
.RS 4
Do not treat root commits as boundaries in
\fBgit-blame\fR(1)\&. This option defaults to false\&.
.RE
.PP
blame\&.ignoreRevsFile
.RS 4
Ignore revisions listed in the file, one unabbreviated object name per line, in
\fBgit-blame\fR(1)\&. Whitespace and comments beginning with # are ignored\&. This option may be repeated multiple times\&. Empty file names will reset the list of ignored revisions\&. This option will be handled before the command line option
\fB\-\-ignore\-revs\-file\fR\&.
.RE
.PP
blame\&.markUnblamableLines
.RS 4
Mark lines that were changed by an ignored revision that we could not attribute to another commit with a
\fI*\fR
in the output of
\fBgit-blame\fR(1)\&.
.RE
.PP
blame\&.markIgnoredLines
.RS 4
Mark lines that were changed by an ignored revision that we attributed to another commit with a
\fI?\fR
in the output of
\fBgit-blame\fR(1)\&.
.RE
.PP
\fBbranch\&.autoSetupMerge\fR
.RS 4
Tells
\fBgit\fR
\fBbranch\fR,
\fBgit\fR
\fBswitch\fR
and
\fBgit\fR
\fBcheckout\fR
to set up new branches so that
\fBgit-pull\fR(1)
will appropriately merge from the starting point branch\&. Note that even if this option is not set, this behavior can be chosen per\-branch using the
\fB\-\-track\fR
and
\fB\-\-no\-track\fR
options\&. This option defaults to
\fBtrue\fR\&. The valid settings are:
.PP
\fBfalse\fR
.RS 4
no automatic setup is done
.RE
.PP
\fBtrue\fR
.RS 4
automatic setup is done when the starting point is a remote\-tracking branch
.RE
.PP
\fBalways\fR
.RS 4
automatic setup is done when the starting point is either a local branch or remote\-tracking branch
.RE
.PP
\fBinherit\fR
.RS 4
if the starting point has a tracking configuration, it is copied to the new branch
.RE
.PP
\fBsimple\fR
.RS 4
automatic setup is done only when the starting point is a remote\-tracking branch and the new branch has the same name as the remote branch\&.
.RE
.RE
.PP
\fBbranch\&.autoSetupRebase\fR
.RS 4
When a new branch is created with
\fBgit\fR
\fBbranch\fR,
\fBgit\fR
\fBswitch\fR
or
\fBgit\fR
\fBcheckout\fR
that tracks another branch, this variable tells Git to set up pull to rebase instead of merge (see
\fBbranch\&.\fR\fI<name>\fR\fB\&.rebase\fR)\&. The valid settings are:
.PP
\fBnever\fR
.RS 4
rebase is never automatically set to true\&.
.RE
.PP
\fBlocal\fR
.RS 4
rebase is set to true for tracked branches of other local branches\&.
.RE
.PP
\fBremote\fR
.RS 4
rebase is set to true for tracked branches of remote\-tracking branches\&.
.RE
.PP
\fBalways\fR
.RS 4
rebase will be set to true for all tracking branches\&.
.RE
.sp
See
\fBbranch\&.autoSetupMerge\fR
for details on how to set up a branch to track another branch\&. This option defaults to
\fBnever\fR\&.
.RE
.PP
\fBbranch\&.sort\fR
.RS 4
This variable controls the sort ordering of branches when displayed by
\fBgit-branch\fR(1)\&. Without the
\fB\-\-sort=\fR\fI<value>\fR
option provided, the value of this variable will be used as the default\&. See
\fBgit-for-each-ref\fR(1)
field names for valid values\&.
.RE
.PP
\fBbranch\&.\fR\fI<name>\fR\fB\&.remote\fR
.RS 4
When on branch
\fI<name>\fR, it tells
\fBgit\fR
\fBfetch\fR
and
\fBgit\fR
\fBpush\fR
which remote to fetch from or push to\&. The remote to push to may be overridden with
\fBremote\&.pushDefault\fR
(for all branches)\&. The remote to push to, for the current branch, may be further overridden by
\fBbranch\&.\fR\fI<name>\fR\fB\&.pushRemote\fR\&. If no remote is configured, or if you are not on any branch and there is more than one remote defined in the repository, it defaults to
\fBorigin\fR
for fetching and
\fBremote\&.pushDefault\fR
for pushing\&. Additionally, \&. (a period) is the current local repository (a dot\-repository), see
\fBbranch\&.\fR\fI<name>\fR\fB\&.merge\fR\*(Aqs final note below\&.
.RE
.PP
\fBbranch\&.\fR\fI<name>\fR\fB\&.pushRemote\fR
.RS 4
When on branch
\fI<name>\fR, it overrides
\fBbranch\&.\fR\fI<name>\fR\fB\&.remote\fR
for pushing\&. It also overrides
\fBremote\&.pushDefault\fR
for pushing from branch
\fI<name>\fR\&. When you pull from one place (e\&.g\&. your upstream) and push to another place (e\&.g\&. your own publishing repository), you would want to set
\fBremote\&.pushDefault\fR
to specify the remote to push to for all branches, and use this option to override it for a specific branch\&.
.RE
.PP
\fBbranch\&.\fR\fI<name>\fR\fB\&.merge\fR
.RS 4
Defines, together with
\fBbranch\&.\fR\fI<name>\fR\fB\&.remote\fR, the upstream branch for the given branch\&. It tells
\fBgit\fR
\fBfetch\fR/\fBgit\fR
\fBpull\fR/\fBgit\fR
\fBrebase\fR
which branch to merge and can also affect
\fBgit\fR
\fBpush\fR
(see
\fBpush\&.default\fR)\&. When in branch
\fI<name>\fR, it tells
\fBgit\fR
\fBfetch\fR
the default refspec to be marked for merging in
\fBFETCH_HEAD\fR\&. The value is handled like the remote part of a refspec, and must match a ref which is fetched from the remote given by
\fBbranch\&.\fR\fI<name>\fR\fB\&.remote\fR\&. The merge information is used by
\fBgit\fR
\fBpull\fR
(which first calls
\fBgit\fR
\fBfetch\fR) to lookup the default branch for merging\&. Without this option,
\fBgit\fR
\fBpull\fR
defaults to merge the first refspec fetched\&. Specify multiple values to get an octopus merge\&. If you wish to setup
\fBgit\fR
\fBpull\fR
so that it merges into
\fI<name>\fR
from another branch in the local repository, you can point
\fBbranch\&.\fR\fI<name>\fR\fB\&.merge\fR
to the desired branch, and use the relative path setting \&. (a period) for
\fBbranch\&.\fR\fI<name>\fR\fB\&.remote\fR\&.
.RE
.PP
\fBbranch\&.\fR\fI<name>\fR\fB\&.mergeOptions\fR
.RS 4
Sets default options for merging into branch
\fI<name>\fR\&. The syntax and supported options are the same as those of
\fBgit-merge\fR(1), but option values containing whitespace characters are currently not supported\&.
.RE
.PP
\fBbranch\&.\fR\fI<name>\fR\fB\&.rebase\fR
.RS 4
When true, rebase the branch
\fI<name>\fR
on top of the fetched branch, instead of merging the default branch from the default remote when
\fBgit\fR
\fBpull\fR
is run\&. See
\fBpull\&.rebase\fR
for doing this in a non branch\-specific manner\&.
.sp
When
\fBmerges\fR
(or just
\fBm\fR), pass the
\fB\-\-rebase\-merges\fR
option to
\fBgit\fR
\fBrebase\fR
so that the local merge commits are included in the rebase (see
\fBgit-rebase\fR(1)
for details)\&.
.sp
When the value is
\fBinteractive\fR
(or just
\fBi\fR), the rebase is run in interactive mode\&.
.sp
\fBNOTE\fR: this is a possibly dangerous operation; do
\fBnot\fR
use it unless you understand the implications (see
\fBgit-rebase\fR(1)
for details)\&.
.RE
.PP
\fBbranch\&.\fR\fI<name>\fR\fB\&.description\fR
.RS 4
Branch description, can be edited with
\fBgit\fR
\fBbranch\fR
\fB\-\-edit\-description\fR\&. Branch description is automatically added to the
\fBformat\-patch\fR
cover letter or
\fBrequest\-pull\fR
summary\&.
.RE
.PP
browser\&.<tool>\&.cmd
.RS 4
Specify the command to invoke the specified browser\&. The specified command is evaluated in shell with the URLs passed as arguments\&. (See
\fBgit-web--browse\fR(1)\&.)
.RE
.PP
browser\&.<tool>\&.path
.RS 4
Override the path for the given tool that may be used to browse HTML help (see
\fB\-w\fR
option in
\fBgit-help\fR(1)) or a working repository in gitweb (see
\fBgit-instaweb\fR(1))\&.
.RE
.PP
bundle\&.*
.RS 4
The
\fBbundle\&.*\fR
keys may appear in a bundle list file found via the
\fBgit\fR
\fBclone\fR
\fB\-\-bundle\-uri\fR
option\&. These keys currently have no effect if placed in a repository config file, though this will change in the future\&. See
\m[blue]\fBthe bundle URI design document\fR\m[]\&\s-2\u[1]\d\s+2
for more details\&.
.RE
.PP
bundle\&.version
.RS 4
This integer value advertises the version of the bundle list format used by the bundle list\&. Currently, the only accepted value is
\fB1\fR\&.
.RE
.PP
bundle\&.mode
.RS 4
This string value should be either
\fBall\fR
or
\fBany\fR\&. This value describes whether all of the advertised bundles are required to unbundle a complete understanding of the bundled information (\fBall\fR) or if any one of the listed bundle URIs is sufficient (\fBany\fR)\&.
.RE
.PP
bundle\&.heuristic
.RS 4
If this string\-valued key exists, then the bundle list is designed to work well with incremental
\fBgit\fR
\fBfetch\fR
commands\&. The heuristic signals that there are additional keys available for each bundle that help determine which subset of bundles the client should download\&. The only value currently understood is
\fBcreationToken\fR\&.
.RE
.PP
bundle\&.<id>\&.*
.RS 4
The
\fBbundle\&.\fR\fI<id>\fR\fB\&.*\fR
keys are used to describe a single item in the bundle list, grouped under
\fI<id>\fR
for identification purposes\&.
.RE
.PP
bundle\&.<id>\&.uri
.RS 4
This string value defines the URI by which Git can reach the contents of this
\fI<id>\fR\&. This URI may be a bundle file or another bundle list\&.
.RE
.PP
\fBcheckout\&.defaultRemote\fR
.RS 4
When you run
\fBgit\fR
\fBcheckout\fR
\fI<something>\fR
or
\fBgit\fR
\fBswitch\fR
\fI<something>\fR
and only have one remote, it may implicitly fall back on checking out and tracking e\&.g\&.
\fBorigin/\fR\fI<something>\fR\&. This stops working as soon as you have more than one remote with a
\fI<something>\fR
reference\&. This setting allows for setting the name of a preferred remote that should always win when it comes to disambiguation\&. The typical use\-case is to set this to
\fBorigin\fR\&.
.sp
Currently this is used by
\fBgit-switch\fR(1)
and
\fBgit-checkout\fR(1)
when
\fBgit\fR
\fBcheckout\fR
\fI<something>\fR
or
\fBgit\fR
\fBswitch\fR
\fI<something>\fR
will checkout the
\fI<something>\fR
branch on another remote, and by
\fBgit-worktree\fR(1)
when
\fBgit\fR
\fBworktree\fR
\fBadd\fR
refers to a remote branch\&. This setting might be used for other checkout\-like commands or functionality in the future\&.
.RE
.PP
\fBcheckout\&.guess\fR
.RS 4
Provides the default value for the
\fB\-\-guess\fR
or
\fB\-\-no\-guess\fR
option in
\fBgit\fR
\fBcheckout\fR
and
\fBgit\fR
\fBswitch\fR\&. See
\fBgit-switch\fR(1)
and
\fBgit-checkout\fR(1)\&.
.RE
.PP
\fBcheckout\&.workers\fR
.RS 4
The number of parallel workers to use when updating the working tree\&. The default is one, i\&.e\&. sequential execution\&. If set to a value less than one, Git will use as many workers as the number of logical cores available\&. This setting and
\fBcheckout\&.thresholdForParallelism\fR
affect all commands that perform checkout\&. E\&.g\&. checkout, clone, reset, sparse\-checkout, etc\&.
.if n \{\
.sp
.\}
.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBNote\fR
.ps -1
.br
Parallel checkout usually delivers better performance for repositories located on SSDs or over NFS\&. For repositories on spinning disks and/or machines with a small number of cores, the default sequential checkout often performs better\&. The size and compression level of a repository might also influence how well the parallel version performs\&.
.sp .5v
.RE
.RE
.PP
\fBcheckout\&.thresholdForParallelism\fR
.RS 4
When running parallel checkout with a small number of files, the cost of subprocess spawning and inter\-process communication might outweigh the parallelization gains\&. This setting allows you to define the minimum number of files for which parallel checkout should be attempted\&. The default is 100\&.
.RE
.PP
clean\&.requireForce
.RS 4
A boolean to make git\-clean refuse to delete files unless \-f is given\&. Defaults to true\&.
.RE
.PP
\fBclone\&.defaultRemoteName\fR
.RS 4
The name of the remote to create when cloning a repository\&. Defaults to
\fBorigin\fR\&. It can be overridden by passing the
\fB\-\-origin\fR
command\-line option to
\fBgit-clone\fR(1)\&.
.RE
.PP
\fBclone\&.rejectShallow\fR
.RS 4
Reject cloning a repository if it is a shallow one; this can be overridden by passing the
\fB\-\-reject\-shallow\fR
option on the command line\&. See
\fBgit-clone\fR(1)\&.
.RE
.PP
\fBclone\&.filterSubmodules\fR
.RS 4
If a partial clone filter is provided (see
\fB\-\-filter\fR
in
\fBgit-rev-list\fR(1)) and
\fB\-\-recurse\-submodules\fR
is used, also apply the filter to submodules\&.
.RE
.PP
color\&.advice
.RS 4
A boolean to enable/disable color in hints (e\&.g\&. when a push failed, see
\fBadvice\&.*\fR
for a list)\&. May be set to
\fBalways\fR,
\fBfalse\fR
(or
\fBnever\fR) or
\fBauto\fR
(or
\fBtrue\fR), in which case colors are used only when the error output goes to a terminal\&. If unset, then the value of
\fBcolor\&.ui\fR
is used (\fBauto\fR
by default)\&.
.RE
.PP
color\&.advice\&.hint
.RS 4
Use customized color for hints\&.
.RE
.PP
color\&.blame\&.highlightRecent
.RS 4
Specify the line annotation color for
\fBgit\fR
\fBblame\fR
\fB\-\-color\-by\-age\fR
depending upon the age of the line\&.
.sp
This setting should be set to a comma\-separated list of color and date settings, starting and ending with a color, the dates should be set from oldest to newest\&. The metadata will be colored with the specified colors if the line was introduced before the given timestamp, overwriting older timestamped colors\&.
.sp
Instead of an absolute timestamp relative timestamps work as well, e\&.g\&.
\fB2\&.weeks\&.ago\fR
is valid to address anything older than 2 weeks\&.
.sp
It defaults to
\fBblue\fR,12
\fBmonth\fR
\fBago\fR,white,1
\fBmonth\fR
\fBago\fR,red, which colors everything older than one year blue, recent changes between one month and one year old are kept white, and lines introduced within the last month are colored red\&.
.RE
.PP
color\&.blame\&.repeatedLines
.RS 4
Use the specified color to colorize line annotations for
\fBgit\fR
\fBblame\fR
\fB\-\-color\-lines\fR, if they come from the same commit as the preceding line\&. Defaults to cyan\&.
.RE
.PP
color\&.branch
.RS 4
A boolean to enable/disable color in the output of
\fBgit-branch\fR(1)\&. May be set to
\fBalways\fR,
\fBfalse\fR
(or
\fBnever\fR) or
\fBauto\fR
(or
\fBtrue\fR), in which case colors are used only when the output is to a terminal\&. If unset, then the value of
\fBcolor\&.ui\fR
is used (\fBauto\fR
by default)\&.
.RE
.PP
color\&.branch\&.<slot>
.RS 4
Use customized color for branch coloration\&.
\fI<slot>\fR
is one of
\fBcurrent\fR
(the current branch),
\fBlocal\fR
(a local branch),
\fBremote\fR
(a remote\-tracking branch in refs/remotes/),
\fBupstream\fR
(upstream tracking branch),
\fBplain\fR
(other refs)\&.
.RE
.PP
color\&.diff
.RS 4
Whether to use ANSI escape sequences to add color to patches\&. If this is set to
\fBalways\fR,
\fBgit-diff\fR(1),
\fBgit-log\fR(1), and
\fBgit-show\fR(1)
will use color for all patches\&. If it is set to
\fBtrue\fR
or
\fBauto\fR, those commands will only use color when output is to the terminal\&. If unset, then the value of
\fBcolor\&.ui\fR
is used (\fBauto\fR
by default)\&.
.sp
This does not affect
\fBgit-format-patch\fR(1)
or the
\fIgit\-diff\-*\fR
plumbing commands\&. Can be overridden on the command line with the
\fB\-\-color\fR[\fB=\fR\fI<when>\fR] option\&.
.RE
.PP
color\&.diff\&.<slot>
.RS 4
Use customized color for diff colorization\&.
\fI<slot>\fR
specifies which part of the patch to use the specified color, and is one of
\fBcontext\fR
(context text \-
\fBplain\fR
is a historical synonym),
\fBmeta\fR
(metainformation),
\fBfrag\fR
(hunk header),
\fIfunc\fR
(function in hunk header),
\fBold\fR
(removed lines),
\fBnew\fR
(added lines),
\fBcommit\fR
(commit headers),
\fBwhitespace\fR
(highlighting whitespace errors),
\fBoldMoved\fR
(deleted lines),
\fBnewMoved\fR
(added lines),
\fBoldMovedDimmed\fR,
\fBoldMovedAlternative\fR,
\fBoldMovedAlternativeDimmed\fR,
\fBnewMovedDimmed\fR,
\fBnewMovedAlternative\fR
\fBnewMovedAlternativeDimmed\fR
(See the
\fI<mode>\fR
setting of
\fI\-\-color\-moved\fR
in
\fBgit-diff\fR(1)
for details),
\fBcontextDimmed\fR,
\fBoldDimmed\fR,
\fBnewDimmed\fR,
\fBcontextBold\fR,
\fBoldBold\fR, and
\fBnewBold\fR
(see
\fBgit-range-diff\fR(1)
for details)\&.
.RE
.PP
color\&.decorate\&.<slot>
.RS 4
Use customized color for
\fIgit log \-\-decorate\fR
output\&.
\fI<slot>\fR
is one of
\fBbranch\fR,
\fBremoteBranch\fR,
\fBtag\fR,
\fBstash\fR
or
\fBHEAD\fR
for local branches, remote\-tracking branches, tags, stash and HEAD, respectively and
\fBgrafted\fR
for grafted commits\&.
.RE
.PP
color\&.grep
.RS 4
When set to
\fBalways\fR, always highlight matches\&. When
\fBfalse\fR
(or
\fBnever\fR), never\&. When set to
\fBtrue\fR
or
\fBauto\fR, use color only when the output is written to the terminal\&. If unset, then the value of
\fBcolor\&.ui\fR
is used (\fBauto\fR
by default)\&.
.RE
.PP
color\&.grep\&.<slot>
.RS 4
Use customized color for grep colorization\&.
\fI<slot>\fR
specifies which part of the line to use the specified color, and is one of
.PP
\fBcontext\fR
.RS 4
non\-matching text in context lines (when using
\fB\-A\fR,
\fB\-B\fR, or
\fB\-C\fR)
.RE
.PP
\fBfilename\fR
.RS 4
filename prefix (when not using
\fB\-h\fR)
.RE
.PP
\fBfunction\fR
.RS 4
function name lines (when using
\fB\-p\fR)
.RE
.PP
\fBlineNumber\fR
.RS 4
line number prefix (when using
\fB\-n\fR)
.RE
.PP
\fBcolumn\fR
.RS 4
column number prefix (when using
\fB\-\-column\fR)
.RE
.PP
\fBmatch\fR
.RS 4
matching text (same as setting
\fBmatchContext\fR
and
\fBmatchSelected\fR)
.RE
.PP
\fBmatchContext\fR
.RS 4
matching text in context lines
.RE
.PP
\fBmatchSelected\fR
.RS 4
matching text in selected lines\&. Also, used to customize the following
\fBgit-log\fR(1)
subcommands:
\fB\-\-grep\fR,
\fB\-\-author\fR, and
\fB\-\-committer\fR\&.
.RE
.PP
\fBselected\fR
.RS 4
non\-matching text in selected lines\&. Also, used to customize the following
\fBgit-log\fR(1)
subcommands:
\fB\-\-grep\fR,
\fB\-\-author\fR
and
\fB\-\-committer\fR\&.
.RE
.PP
\fBseparator\fR
.RS 4
separators between fields on a line (\fB:\fR,
\fB\-\fR, and
\fB=\fR) and between hunks (\fB\-\-\fR)
.RE
.RE
.PP
color\&.interactive
.RS 4
When set to
\fBalways\fR, always use colors for interactive prompts and displays (such as those used by "git\-add \-\-interactive" and "git\-clean \-\-interactive")\&. When false (or
\fBnever\fR), never\&. When set to
\fBtrue\fR
or
\fBauto\fR, use colors only when the output is to the terminal\&. If unset, then the value of
\fBcolor\&.ui\fR
is used (\fBauto\fR
by default)\&.
.RE
.PP
color\&.interactive\&.<slot>
.RS 4
Use customized color for
\fIgit add \-\-interactive\fR
and
\fIgit clean \-\-interactive\fR
output\&.
\fI<slot>\fR
may be
\fBprompt\fR,
\fBheader\fR,
\fBhelp\fR
or
\fBerror\fR, for four distinct types of normal output from interactive commands\&.
.RE
.PP
color\&.pager
.RS 4
A boolean to specify whether
\fBauto\fR
color modes should colorize output going to the pager\&. Defaults to true; set this to false if your pager does not understand ANSI color codes\&.
.RE
.PP
color\&.push
.RS 4
A boolean to enable/disable color in push errors\&. May be set to
\fBalways\fR,
\fBfalse\fR
(or
\fBnever\fR) or
\fBauto\fR
(or
\fBtrue\fR), in which case colors are used only when the error output goes to a terminal\&. If unset, then the value of
\fBcolor\&.ui\fR
is used (\fBauto\fR
by default)\&.
.RE
.PP
color\&.push\&.error
.RS 4
Use customized color for push errors\&.
.RE
.PP
color\&.remote
.RS 4
If set, keywords at the start of the line are highlighted\&. The keywords are "error", "warning", "hint" and "success", and are matched case\-insensitively\&. May be set to
\fBalways\fR,
\fBfalse\fR
(or
\fBnever\fR) or
\fBauto\fR
(or
\fBtrue\fR)\&. If unset, then the value of
\fBcolor\&.ui\fR
is used (\fBauto\fR
by default)\&.
.RE
.PP
color\&.remote\&.<slot>
.RS 4
Use customized color for each remote keyword\&.
\fI<slot>\fR
may be
\fBhint\fR,
\fBwarning\fR,
\fBsuccess\fR
or
\fBerror\fR
which match the corresponding keyword\&.
.RE
.PP
color\&.showBranch
.RS 4
A boolean to enable/disable color in the output of
\fBgit-show-branch\fR(1)\&. May be set to
\fBalways\fR,
\fBfalse\fR
(or
\fBnever\fR) or
\fBauto\fR
(or
\fBtrue\fR), in which case colors are used only when the output is to a terminal\&. If unset, then the value of
\fBcolor\&.ui\fR
is used (\fBauto\fR
by default)\&.
.RE
.PP
color\&.status
.RS 4
A boolean to enable/disable color in the output of
\fBgit-status\fR(1)\&. May be set to
\fBalways\fR,
\fBfalse\fR
(or
\fBnever\fR) or
\fBauto\fR
(or
\fBtrue\fR), in which case colors are used only when the output is to a terminal\&. If unset, then the value of
\fBcolor\&.ui\fR
is used (\fBauto\fR
by default)\&.
.RE
.PP
color\&.status\&.<slot>
.RS 4
Use customized color for status colorization\&.
\fI<slot>\fR
is one of
\fBheader\fR
(the header text of the status message),
\fBadded\fR
or
\fBupdated\fR
(files which are added but not committed),
\fBchanged\fR
(files which are changed but not added in the index),
\fBuntracked\fR
(files which are not tracked by Git),
\fBbranch\fR
(the current branch),
\fBnobranch\fR
(the color the
\fIno branch\fR
warning is shown in, defaulting to red),
\fBlocalBranch\fR
or
\fBremoteBranch\fR
(the local and remote branch names, respectively, when branch and tracking information is displayed in the status short\-format), or
\fBunmerged\fR
(files which have unmerged changes)\&.
.RE
.PP
color\&.transport
.RS 4
A boolean to enable/disable color when pushes are rejected\&. May be set to
\fBalways\fR,
\fBfalse\fR
(or
\fBnever\fR) or
\fBauto\fR
(or
\fBtrue\fR), in which case colors are used only when the error output goes to a terminal\&. If unset, then the value of
\fBcolor\&.ui\fR
is used (\fBauto\fR
by default)\&.
.RE
.PP
color\&.transport\&.rejected
.RS 4
Use customized color when a push was rejected\&.
.RE
.PP
color\&.ui
.RS 4
This variable determines the default value for variables such as
\fBcolor\&.diff\fR
and
\fBcolor\&.grep\fR
that control the use of color per command family\&. Its scope will expand as more commands learn configuration to set a default for the
\fB\-\-color\fR
option\&. Set it to
\fBfalse\fR
or
\fBnever\fR
if you prefer Git commands not to use color unless enabled explicitly with some other configuration or the
\fB\-\-color\fR
option\&. Set it to
\fBalways\fR
if you want all output not intended for machine consumption to use color, to
\fBtrue\fR
or
\fBauto\fR
(this is the default since Git 1\&.8\&.4) if you want such output to use color when written to the terminal\&.
.RE
.PP
column\&.ui
.RS 4
Specify whether supported commands should output in columns\&. This variable consists of a list of tokens separated by spaces or commas:
.sp
These options control when the feature should be enabled (defaults to
\fInever\fR):
.PP
\fBalways\fR
.RS 4
always show in columns
.RE
.PP
\fBnever\fR
.RS 4
never show in columns
.RE
.PP
\fBauto\fR
.RS 4
show in columns if the output is to the terminal
.RE
.sp
These options control layout (defaults to
\fIcolumn\fR)\&. Setting any of these implies
\fIalways\fR
if none of
\fIalways\fR,
\fInever\fR, or
\fIauto\fR
are specified\&.
.PP
\fBcolumn\fR
.RS 4
fill columns before rows
.RE
.PP
\fBrow\fR
.RS 4
fill rows before columns
.RE
.PP
\fBplain\fR
.RS 4
show in one column
.RE
.sp
Finally, these options can be combined with a layout option (defaults to
\fInodense\fR):
.PP
\fBdense\fR
.RS 4
make unequal size columns to utilize more space
.RE
.PP
\fBnodense\fR
.RS 4
make equal size columns
.RE
.RE
.PP
column\&.branch
.RS 4
Specify whether to output branch listing in
\fBgit\fR
\fBbranch\fR
in columns\&. See
\fBcolumn\&.ui\fR
for details\&.
.RE
.PP
column\&.clean
.RS 4
Specify the layout when listing items in
\fBgit\fR
\fBclean\fR
\fB\-i\fR, which always shows files and directories in columns\&. See
\fBcolumn\&.ui\fR
for details\&.
.RE
.PP
column\&.status
.RS 4
Specify whether to output untracked files in
\fBgit\fR
\fBstatus\fR
in columns\&. See
\fBcolumn\&.ui\fR
for details\&.
.RE
.PP
column\&.tag
.RS 4
Specify whether to output tag listings in
\fBgit\fR
\fBtag\fR
in columns\&. See
\fBcolumn\&.ui\fR
for details\&.
.RE
.PP
\fBcommit\&.cleanup\fR
.RS 4
This setting overrides the default of the
\fB\-\-cleanup\fR
option in
\fBgit\fR
\fBcommit\fR\&. See
\fBgit-commit\fR(1)
for details\&. Changing the default can be useful when you always want to keep lines that begin with the comment character (\fBcore\&.commentChar\fR, default #) in your log message, in which case you would do
\fBgit\fR
\fBconfig\fR
\fBcommit\&.cleanup\fR
\fBwhitespace\fR
(note that you will have to remove the help lines that begin with the comment character in the commit log template yourself, if you do this)\&.
.RE
.PP
\fBcommit\&.gpgSign\fR
.RS 4
A boolean to specify whether all commits should be GPG signed\&. Use of this option when doing operations such as rebase can result in a large number of commits being signed\&. It may be convenient to use an agent to avoid typing your GPG passphrase several times\&.
.RE
.PP
\fBcommit\&.status\fR
.RS 4
A boolean to enable/disable inclusion of status information in the commit message template when using an editor to prepare the commit message\&. Defaults to
\fBtrue\fR\&.
.RE
.PP
\fBcommit\&.template\fR
.RS 4
Specify the pathname of a file to use as the template for new commit messages\&.
.RE
.PP
\fBcommit\&.verbose\fR
.RS 4
A boolean or int to specify the level of verbosity with
\fBgit\fR
\fBcommit\fR\&. See
\fBgit-commit\fR(1)
for details\&.
.RE
.PP
commitGraph\&.generationVersion
.RS 4
Specifies the type of generation number version to use when writing or reading the commit\-graph file\&. If version 1 is specified, then the corrected commit dates will not be written or read\&. Defaults to 2\&.
.RE
.PP
commitGraph\&.maxNewFilters
.RS 4
Specifies the default value for the
\fB\-\-max\-new\-filters\fR
option of
\fBgit\fR
\fBcommit\-graph\fR
\fBwrite\fR
(c\&.f\&.,
\fBgit-commit-graph\fR(1))\&.
.RE
.PP
commitGraph\&.readChangedPaths
.RS 4
Deprecated\&. Equivalent to commitGraph\&.changedPathsVersion=\-1 if true, and commitGraph\&.changedPathsVersion=0 if false\&. (If commitGraph\&.changedPathVersion is also set, commitGraph\&.changedPathsVersion takes precedence\&.)
.RE
.PP
commitGraph\&.changedPathsVersion
.RS 4
Specifies the version of the changed\-path Bloom filters that Git will read and write\&. May be \-1, 0, 1, or 2\&. Note that values greater than 1 may be incompatible with older versions of Git which do not yet understand those versions\&. Use caution when operating in a mixed\-version environment\&.
.sp
Defaults to \-1\&.
.sp
If \-1, Git will use the version of the changed\-path Bloom filters in the repository, defaulting to 1 if there are none\&.
.sp
If 0, Git will not read any Bloom filters, and will write version 1 Bloom filters when instructed to write\&.
.sp
If 1, Git will only read version 1 Bloom filters, and will write version 1 Bloom filters\&.
.sp
If 2, Git will only read version 2 Bloom filters, and will write version 2 Bloom filters\&.
.sp
See
\fBgit-commit-graph\fR(1)
for more information\&.
.RE
.PP
completion\&.commands
.RS 4
This is only used by git\-completion\&.bash to add or remove commands from the list of completed commands\&. Normally only porcelain commands and a few select others are completed\&. You can add more commands, separated by space, in this variable\&. Prefixing the command with
\fI\-\fR
will remove it from the existing list\&.
.RE
.PP
core\&.fileMode
.RS 4
Tells Git if the executable bit of files in the working tree is to be honored\&.
.sp
Some filesystems lose the executable bit when a file that is marked as executable is checked out, or checks out a non\-executable file with executable bit on\&.
\fBgit-clone\fR(1)
or
\fBgit-init\fR(1)
probe the filesystem to see if it handles the executable bit correctly and this variable is automatically set as necessary\&.
.sp
A repository, however, may be on a filesystem that handles the filemode correctly, and this variable is set to
\fItrue\fR
when created, but later may be made accessible from another environment that loses the filemode (e\&.g\&. exporting ext4 via CIFS mount, visiting a Cygwin created repository with Git for Windows or Eclipse)\&. In such a case it may be necessary to set this variable to
\fIfalse\fR\&. See
\fBgit-update-index\fR(1)\&.
.sp
The default is true (when core\&.filemode is not specified in the config file)\&.
.RE
.PP
core\&.hideDotFiles
.RS 4
(Windows\-only) If true, mark newly\-created directories and files whose name starts with a dot as hidden\&. If
\fIdotGitOnly\fR, only the \&.\fBgit/\fR
directory is hidden, but no other files starting with a dot\&. The default mode is
\fIdotGitOnly\fR\&.
.RE
.PP
core\&.ignoreCase
.RS 4
Internal variable which enables various workarounds to enable Git to work better on filesystems that are not case sensitive, like APFS, HFS+, FAT, NTFS, etc\&. For example, if a directory listing finds "makefile" when Git expects "Makefile", Git will assume it is really the same file, and continue to remember it as "Makefile"\&.
.sp
The default is false, except
\fBgit-clone\fR(1)
or
\fBgit-init\fR(1)
will probe and set core\&.ignoreCase true if appropriate when the repository is created\&.
.sp
Git relies on the proper configuration of this variable for your operating and file system\&. Modifying this value may result in unexpected behavior\&.
.RE
.PP
core\&.precomposeUnicode
.RS 4
This option is only used by Mac OS implementation of Git\&. When core\&.precomposeUnicode=true, Git reverts the unicode decomposition of filenames done by Mac OS\&. This is useful when sharing a repository between Mac OS and Linux or Windows\&. (Git for Windows 1\&.7\&.10 or higher is needed, or Git under cygwin 1\&.7)\&. When false, file names are handled fully transparent by Git, which is backward compatible with older versions of Git\&.
.RE
.PP
core\&.protectHFS
.RS 4
If set to true, do not allow checkout of paths that would be considered equivalent to \&.\fBgit\fR
on an HFS+ filesystem\&. Defaults to
\fBtrue\fR
on Mac OS, and
\fBfalse\fR
elsewhere\&.
.RE
.PP
core\&.protectNTFS
.RS 4
If set to true, do not allow checkout of paths that would cause problems with the NTFS filesystem, e\&.g\&. conflict with 8\&.3 "short" names\&. Defaults to
\fBtrue\fR
on Windows, and
\fBfalse\fR
elsewhere\&.
.RE
.PP
core\&.fsmonitor
.RS 4
If set to true, enable the built\-in file system monitor daemon for this working directory (\fBgit-fsmonitor--daemon\fR(1))\&.
.sp
Like hook\-based file system monitors, the built\-in file system monitor can speed up Git commands that need to refresh the Git index (e\&.g\&.
\fBgit\fR
\fBstatus\fR) in a working directory with many files\&. The built\-in monitor eliminates the need to install and maintain an external third\-party tool\&.
.sp
The built\-in file system monitor is currently available only on a limited set of supported platforms\&. Currently, this includes Windows and MacOS\&.
.sp
.if n \{\
.RS 4
.\}
.nf
Otherwise, this variable contains the pathname of the "fsmonitor"
hook command\&.
.fi
.if n \{\
.RE
.\}
.sp
This hook command is used to identify all files that may have changed since the requested date/time\&. This information is used to speed up git by avoiding unnecessary scanning of files that have not changed\&.
.sp
See the "fsmonitor\-watchman" section of
\fBgithooks\fR(5)\&.
.sp
Note that if you concurrently use multiple versions of Git, such as one version on the command line and another version in an IDE tool, that the definition of
\fBcore\&.fsmonitor\fR
was extended to allow boolean values in addition to hook pathnames\&. Git versions 2\&.35\&.1 and prior will not understand the boolean values and will consider the "true" or "false" values as hook pathnames to be invoked\&. Git versions 2\&.26 thru 2\&.35\&.1 default to hook protocol V2 and will fall back to no fsmonitor (full scan)\&. Git versions prior to 2\&.26 default to hook protocol V1 and will silently assume there were no changes to report (no scan), so status commands may report incomplete results\&. For this reason, it is best to upgrade all of your Git versions before using the built\-in file system monitor\&.
.RE
.PP
core\&.fsmonitorHookVersion
.RS 4
Sets the protocol version to be used when invoking the "fsmonitor" hook\&.
.sp
There are currently versions 1 and 2\&. When this is not set, version 2 will be tried first and if it fails then version 1 will be tried\&. Version 1 uses a timestamp as input to determine which files have changes since that time but some monitors like Watchman have race conditions when used with a timestamp\&. Version 2 uses an opaque string so that the monitor can return something that can be used to determine what files have changed without race conditions\&.
.RE
.PP
core\&.trustctime
.RS 4
If false, the ctime differences between the index and the working tree are ignored; useful when the inode change time is regularly modified by something outside Git (file system crawlers and some backup systems)\&. See
\fBgit-update-index\fR(1)\&. True by default\&.
.RE
.PP
core\&.splitIndex
.RS 4
If true, the split\-index feature of the index will be used\&. See
\fBgit-update-index\fR(1)\&. False by default\&.
.RE
.PP
core\&.untrackedCache
.RS 4
Determines what to do about the untracked cache feature of the index\&. It will be kept, if this variable is unset or set to
\fBkeep\fR\&. It will automatically be added if set to
\fBtrue\fR\&. And it will automatically be removed, if set to
\fBfalse\fR\&. Before setting it to
\fBtrue\fR, you should check that mtime is working properly on your system\&. See
\fBgit-update-index\fR(1)\&.
\fBkeep\fR
by default, unless
\fBfeature\&.manyFiles\fR
is enabled which sets this setting to
\fBtrue\fR
by default\&.
.RE
.PP
core\&.checkStat
.RS 4
When missing or is set to
\fBdefault\fR, many fields in the stat structure are checked to detect if a file has been modified since Git looked at it\&. When this configuration variable is set to
\fBminimal\fR, sub\-second part of mtime and ctime, the uid and gid of the owner of the file, the inode number (and the device number, if Git was compiled to use it), are excluded from the check among these fields, leaving only the whole\-second part of mtime (and ctime, if
\fBcore\&.trustCtime\fR
is set) and the filesize to be checked\&.
.sp
There are implementations of Git that do not leave usable values in some fields (e\&.g\&. JGit); by excluding these fields from the comparison, the
\fBminimal\fR
mode may help interoperability when the same repository is used by these other systems at the same time\&.
.RE
.PP
core\&.quotePath
.RS 4
Commands that output paths (e\&.g\&.
\fIls\-files\fR,
\fIdiff\fR), will quote "unusual" characters in the pathname by enclosing the pathname in double\-quotes and escaping those characters with backslashes in the same way C escapes control characters (e\&.g\&.
\fB\et\fR
for TAB,
\fB\en\fR
for LF,
\fB\e\e\fR
for backslash) or bytes with values larger than 0x80 (e\&.g\&. octal
\fB\e302\e265\fR
for "micro" in UTF\-8)\&. If this variable is set to false, bytes higher than 0x80 are not considered "unusual" any more\&. Double\-quotes, backslash and control characters are always escaped regardless of the setting of this variable\&. A simple space character is not considered "unusual"\&. Many commands can output pathnames completely verbatim using the
\fB\-z\fR
option\&. The default value is true\&.
.RE
.PP
core\&.eol
.RS 4
Sets the line ending type to use in the working directory for files that are marked as text (either by having the
\fBtext\fR
attribute set, or by having
\fBtext=auto\fR
and Git auto\-detecting the contents as text)\&. Alternatives are
\fIlf\fR,
\fIcrlf\fR
and
\fInative\fR, which uses the platform\(cqs native line ending\&. The default value is
\fBnative\fR\&. See
\fBgitattributes\fR(5)
for more information on end\-of\-line conversion\&. Note that this value is ignored if
\fBcore\&.autocrlf\fR
is set to
\fBtrue\fR
or
\fBinput\fR\&.
.RE
.PP
core\&.safecrlf
.RS 4
If true, makes Git check if converting
\fBCRLF\fR
is reversible when end\-of\-line conversion is active\&. Git will verify if a command modifies a file in the work tree either directly or indirectly\&. For example, committing a file followed by checking out the same file should yield the original file in the work tree\&. If this is not the case for the current setting of
\fBcore\&.autocrlf\fR, Git will reject the file\&. The variable can be set to "warn", in which case Git will only warn about an irreversible conversion but continue the operation\&.
.sp
CRLF conversion bears a slight chance of corrupting data\&. When it is enabled, Git will convert CRLF to LF during commit and LF to CRLF during checkout\&. A file that contains a mixture of LF and CRLF before the commit cannot be recreated by Git\&. For text files this is the right thing to do: it corrects line endings such that we have only LF line endings in the repository\&. But for binary files that are accidentally classified as text the conversion can corrupt data\&.
.sp
If you recognize such corruption early you can easily fix it by setting the conversion type explicitly in \&.gitattributes\&. Right after committing you still have the original file in your work tree and this file is not yet corrupted\&. You can explicitly tell Git that this file is binary and Git will handle the file appropriately\&.
.sp
Unfortunately, the desired effect of cleaning up text files with mixed line endings and the undesired effect of corrupting binary files cannot be distinguished\&. In both cases CRLFs are removed in an irreversible way\&. For text files this is the right thing to do because CRLFs are line endings, while for binary files converting CRLFs corrupts data\&.
.sp
Note, this safety check does not mean that a checkout will generate a file identical to the original file for a different setting of
\fBcore\&.eol\fR
and
\fBcore\&.autocrlf\fR, but only for the current one\&. For example, a text file with
\fBLF\fR
would be accepted with
\fBcore\&.eol=lf\fR
and could later be checked out with
\fBcore\&.eol=crlf\fR, in which case the resulting file would contain
\fBCRLF\fR, although the original file contained
\fBLF\fR\&. However, in both work trees the line endings would be consistent, that is either all
\fBLF\fR
or all
\fBCRLF\fR, but never mixed\&. A file with mixed line endings would be reported by the
\fBcore\&.safecrlf\fR
mechanism\&.
.RE
.PP
core\&.autocrlf
.RS 4
Setting this variable to "true" is the same as setting the
\fBtext\fR
attribute to "auto" on all files and core\&.eol to "crlf"\&. Set to true if you want to have
\fBCRLF\fR
line endings in your working directory and the repository has LF line endings\&. This variable can be set to
\fIinput\fR, in which case no output conversion is performed\&.
.RE
.PP
core\&.checkRoundtripEncoding
.RS 4
A comma and/or whitespace separated list of encodings that Git performs UTF\-8 round trip checks on if they are used in an
\fBworking\-tree\-encoding\fR
attribute (see
\fBgitattributes\fR(5))\&. The default value is
\fBSHIFT\-JIS\fR\&.
.RE
.PP
core\&.symlinks
.RS 4
If false, symbolic links are checked out as small plain files that contain the link text\&.
\fBgit-update-index\fR(1)
and
\fBgit-add\fR(1)
will not change the recorded type to regular file\&. Useful on filesystems like FAT that do not support symbolic links\&.
.sp
The default is true, except
\fBgit-clone\fR(1)
or
\fBgit-init\fR(1)
will probe and set core\&.symlinks false if appropriate when the repository is created\&.
.RE
.PP
core\&.gitProxy
.RS 4
A "proxy command" to execute (as
\fIcommand host port\fR) instead of establishing direct connection to the remote server when using the Git protocol for fetching\&. If the variable value is in the "COMMAND for DOMAIN" format, the command is applied only on hostnames ending with the specified domain string\&. This variable may be set multiple times and is matched in the given order; the first match wins\&.
.sp
Can be overridden by the
\fBGIT_PROXY_COMMAND\fR
environment variable (which always applies universally, without the special "for" handling)\&.
.sp
The special string
\fBnone\fR
can be used as the proxy command to specify that no proxy be used for a given domain pattern\&. This is useful for excluding servers inside a firewall from proxy use, while defaulting to a common proxy for external domains\&.
.RE
.PP
core\&.sshCommand
.RS 4
If this variable is set,
\fBgit\fR
\fBfetch\fR
and
\fBgit\fR
\fBpush\fR
will use the specified command instead of
\fBssh\fR
when they need to connect to a remote system\&. The command is in the same form as the
\fBGIT_SSH_COMMAND\fR
environment variable and is overridden when the environment variable is set\&.
.RE
.PP
core\&.ignoreStat
.RS 4
If true, Git will avoid using lstat() calls to detect if files have changed by setting the "assume\-unchanged" bit for those tracked files which it has updated identically in both the index and working tree\&.
.sp
When files are modified outside of Git, the user will need to stage the modified files explicitly (e\&.g\&. see
\fIExamples\fR
section in
\fBgit-update-index\fR(1))\&. Git will not normally detect changes to those files\&.
.sp
This is useful on systems where lstat() calls are very slow, such as CIFS/Microsoft Windows\&.
.sp
False by default\&.
.RE
.PP
core\&.preferSymlinkRefs
.RS 4
Instead of the default "symref" format for HEAD and other symbolic reference files, use symbolic links\&. This is sometimes needed to work with old scripts that expect HEAD to be a symbolic link\&.
.RE
.PP
core\&.alternateRefsCommand
.RS 4
When advertising tips of available history from an alternate, use the shell to execute the specified command instead of
\fBgit-for-each-ref\fR(1)\&. The first argument is the absolute path of the alternate\&. Output must contain one hex object id per line (i\&.e\&., the same as produced by
\fBgit\fR
\fBfor\-each\-ref\fR
\fB\-\-format=\fR\*(Aq%(\fBobjectname\fR)\*(Aq)\&.
.sp
Note that you cannot generally put
\fBgit\fR
\fBfor\-each\-ref\fR
directly into the config value, as it does not take a repository path as an argument (but you can wrap the command above in a shell script)\&.
.RE
.PP
core\&.alternateRefsPrefixes
.RS 4
When listing references from an alternate, list only references that begin with the given prefix\&. Prefixes match as if they were given as arguments to
\fBgit-for-each-ref\fR(1)\&. To list multiple prefixes, separate them with whitespace\&. If
\fBcore\&.alternateRefsCommand\fR
is set, setting
\fBcore\&.alternateRefsPrefixes\fR
has no effect\&.
.RE
.PP
core\&.bare
.RS 4
If true this repository is assumed to be
\fIbare\fR
and has no working directory associated with it\&. If this is the case a number of commands that require a working directory will be disabled, such as
\fBgit-add\fR(1)
or
\fBgit-merge\fR(1)\&.
.sp
This setting is automatically guessed by
\fBgit-clone\fR(1)
or
\fBgit-init\fR(1)
when the repository was created\&. By default a repository that ends in "/\&.git" is assumed to be not bare (bare = false), while all other repositories are assumed to be bare (bare = true)\&.
.RE
.PP
core\&.worktree
.RS 4
Set the path to the root of the working tree\&. If
\fBGIT_COMMON_DIR\fR
environment variable is set, core\&.worktree is ignored and not used for determining the root of working tree\&. This can be overridden by the
\fBGIT_WORK_TREE\fR
environment variable and the
\fB\-\-work\-tree\fR
command\-line option\&. The value can be an absolute path or relative to the path to the \&.git directory, which is either specified by \-\-git\-dir or GIT_DIR, or automatically discovered\&. If \-\-git\-dir or GIT_DIR is specified but none of \-\-work\-tree, GIT_WORK_TREE and core\&.worktree is specified, the current working directory is regarded as the top level of your working tree\&.
.sp
Note that this variable is honored even when set in a configuration file in a "\&.git" subdirectory of a directory and its value differs from the latter directory (e\&.g\&. "/path/to/\&.git/config" has core\&.worktree set to "/different/path"), which is most likely a misconfiguration\&. Running Git commands in the "/path/to" directory will still use "/different/path" as the root of the work tree and can cause confusion unless you know what you are doing (e\&.g\&. you are creating a read\-only snapshot of the same index to a location different from the repository\(cqs usual working tree)\&.
.RE
.PP
core\&.logAllRefUpdates
.RS 4
Enable the reflog\&. Updates to a ref <ref> is logged to the file "\fB$GIT_DIR/logs/\fR\fI<ref>\fR", by appending the new and old SHA\-1, the date/time and the reason of the update, but only when the file exists\&. If this configuration variable is set to
\fBtrue\fR, missing "\fB$GIT_DIR/logs/\fR\fI<ref>\fR" file is automatically created for branch heads (i\&.e\&. under
\fBrefs/heads/\fR), remote refs (i\&.e\&. under
\fBrefs/remotes/\fR), note refs (i\&.e\&. under
\fBrefs/notes/\fR), and the symbolic ref
\fBHEAD\fR\&. If it is set to
\fBalways\fR, then a missing reflog is automatically created for any ref under
\fBrefs/\fR\&.
.sp
This information can be used to determine what commit was the tip of a branch "2 days ago"\&.
.sp
This value is true by default in a repository that has a working directory associated with it, and false by default in a bare repository\&.
.RE
.PP
core\&.repositoryFormatVersion
.RS 4
Internal variable identifying the repository format and layout version\&. See
\fBgitrepository-layout\fR(5)\&.
.RE
.PP
core\&.sharedRepository
.RS 4
When
\fIgroup\fR
(or
\fItrue\fR), the repository is made shareable between several users in a group (making sure all the files and objects are group\-writable)\&. When
\fIall\fR
(or
\fIworld\fR
or
\fIeverybody\fR), the repository will be readable by all users, additionally to being group\-shareable\&. When
\fIumask\fR
(or
\fIfalse\fR), Git will use permissions reported by umask(2)\&. When
\fI0xxx\fR, where
\fI0xxx\fR
is an octal number, files in the repository will have this mode value\&.
\fI0xxx\fR
will override user\(cqs umask value (whereas the other options will only override requested parts of the user\(cqs umask value)\&. Examples:
\fI0660\fR
will make the repo read/write\-able for the owner and group, but inaccessible to others (equivalent to
\fIgroup\fR
unless umask is e\&.g\&.
\fI0022\fR)\&.
\fI0640\fR
is a repository that is group\-readable but not group\-writable\&. See
\fBgit-init\fR(1)\&. False by default\&.
.RE
.PP
core\&.warnAmbiguousRefs
.RS 4
If true, Git will warn you if the ref name you passed it is ambiguous and might match multiple refs in the repository\&. True by default\&.
.RE
.PP
core\&.compression
.RS 4
An integer \-1\&.\&.9, indicating a default compression level\&. \-1 is the zlib default\&. 0 means no compression, and 1\&.\&.9 are various speed/size tradeoffs, 9 being slowest\&. If set, this provides a default to other compression variables, such as
\fBcore\&.looseCompression\fR
and
\fBpack\&.compression\fR\&.
.RE
.PP
core\&.looseCompression
.RS 4
An integer \-1\&.\&.9, indicating the compression level for objects that are not in a pack file\&. \-1 is the zlib default\&. 0 means no compression, and 1\&.\&.9 are various speed/size tradeoffs, 9 being slowest\&. If not set, defaults to core\&.compression\&. If that is not set, defaults to 1 (best speed)\&.
.RE
.PP
core\&.packedGitWindowSize
.RS 4
Number of bytes of a pack file to map into memory in a single mapping operation\&. Larger window sizes may allow your system to process a smaller number of large pack files more quickly\&. Smaller window sizes will negatively affect performance due to increased calls to the operating system\(cqs memory manager, but may improve performance when accessing a large number of large pack files\&.
.sp
Default is 1 MiB if NO_MMAP was set at compile time, otherwise 32 MiB on 32 bit platforms and 1 GiB on 64 bit platforms\&. This should be reasonable for all users/operating systems\&. You probably do not need to adjust this value\&.
.sp
Common unit suffixes of
\fIk\fR,
\fIm\fR, or
\fIg\fR
are supported\&.
.RE
.PP
core\&.packedGitLimit
.RS 4
Maximum number of bytes to map simultaneously into memory from pack files\&. If Git needs to access more than this many bytes at once to complete an operation it will unmap existing regions to reclaim virtual address space within the process\&.
.sp
Default is 256 MiB on 32 bit platforms and 32 TiB (effectively unlimited) on 64 bit platforms\&. This should be reasonable for all users/operating systems, except on the largest projects\&. You probably do not need to adjust this value\&.
.sp
Common unit suffixes of
\fIk\fR,
\fIm\fR, or
\fIg\fR
are supported\&.
.RE
.PP
core\&.deltaBaseCacheLimit
.RS 4
Maximum number of bytes per thread to reserve for caching base objects that may be referenced by multiple deltified objects\&. By storing the entire decompressed base objects in a cache Git is able to avoid unpacking and decompressing frequently used base objects multiple times\&.
.sp
Default is 96 MiB on all platforms\&. This should be reasonable for all users/operating systems, except on the largest projects\&. You probably do not need to adjust this value\&.
.sp
Common unit suffixes of
\fIk\fR,
\fIm\fR, or
\fIg\fR
are supported\&.
.RE
.PP
core\&.bigFileThreshold
.RS 4
The size of files considered "big", which as discussed below changes the behavior of numerous git commands, as well as how such files are stored within the repository\&. The default is 512 MiB\&. Common unit suffixes of
\fIk\fR,
\fIm\fR, or
\fIg\fR
are supported\&.
.sp
Files above the configured limit will be:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Stored deflated in packfiles, without attempting delta compression\&.
.sp
The default limit is primarily set with this use\-case in mind\&. With it, most projects will have their source code and other text files delta compressed, but not larger binary media files\&.
.sp
Storing large files without delta compression avoids excessive memory usage, at the slight expense of increased disk usage\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Will be treated as if they were labeled "binary" (see
\fBgitattributes\fR(5))\&. e\&.g\&.
\fBgit-log\fR(1)
and
\fBgit-diff\fR(1)
will not compute diffs for files above this limit\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Will generally be streamed when written, which avoids excessive memory usage, at the cost of some fixed overhead\&. Commands that make use of this include
\fBgit-archive\fR(1),
\fBgit-fast-import\fR(1),
\fBgit-index-pack\fR(1),
\fBgit-unpack-objects\fR(1)
and
\fBgit-fsck\fR(1)\&.
.RE
.RE
.PP
core\&.excludesFile
.RS 4
Specifies the pathname to the file that contains patterns to describe paths that are not meant to be tracked, in addition to \&.\fBgitignore\fR
(per\-directory) and \&.\fBgit/info/exclude\fR\&. Defaults to
\fB$XDG_CONFIG_HOME/git/ignore\fR\&. If
\fB$XDG_CONFIG_HOME\fR
is either not set or empty,
\fB$HOME/\&.config/git/ignore\fR
is used instead\&. See
\fBgitignore\fR(5)\&.
.RE
.PP
core\&.askPass
.RS 4
Some commands (e\&.g\&. svn and http interfaces) that interactively ask for a password can be told to use an external program given via the value of this variable\&. Can be overridden by the
\fBGIT_ASKPASS\fR
environment variable\&. If not set, fall back to the value of the
\fBSSH_ASKPASS\fR
environment variable or, failing that, a simple password prompt\&. The external program shall be given a suitable prompt as command\-line argument and write the password on its STDOUT\&.
.RE
.PP
core\&.attributesFile
.RS 4
In addition to \&.\fBgitattributes\fR
(per\-directory) and \&.\fBgit/info/attributes\fR, Git looks into this file for attributes (see
\fBgitattributes\fR(5))\&. Path expansions are made the same way as for
\fBcore\&.excludesFile\fR\&. Its default value is
\fB$XDG_CONFIG_HOME/git/attributes\fR\&. If
\fB$XDG_CONFIG_HOME\fR
is either not set or empty,
\fB$HOME/\&.config/git/attributes\fR
is used instead\&.
.RE
.PP
core\&.hooksPath
.RS 4
By default Git will look for your hooks in the
\fB$GIT_DIR/hooks\fR
directory\&. Set this to different path, e\&.g\&.
\fB/etc/git/hooks\fR, and Git will try to find your hooks in that directory, e\&.g\&.
\fB/etc/git/hooks/pre\-receive\fR
instead of in
\fB$GIT_DIR/hooks/pre\-receive\fR\&.
.sp
The path can be either absolute or relative\&. A relative path is taken as relative to the directory where the hooks are run (see the "DESCRIPTION" section of
\fBgithooks\fR(5))\&.
.sp
This configuration variable is useful in cases where you\(cqd like to centrally configure your Git hooks instead of configuring them on a per\-repository basis, or as a more flexible and centralized alternative to having an
\fBinit\&.templateDir\fR
where you\(cqve changed default hooks\&.
.sp
You can also disable all hooks entirely by setting
\fBcore\&.hooksPath\fR
to
\fB/dev/null\fR\&. This is usually only advisable for expert users and on a per\-command basis using configuration parameters of the form
\fBgit\fR
\fB\-c\fR
\fBcore\&.hooksPath=/dev/null\fR
\&.\&.\&.\&.
.RE
.PP
core\&.editor
.RS 4
Commands such as
\fBcommit\fR
and
\fBtag\fR
that let you edit messages by launching an editor use the value of this variable when it is set, and the environment variable
\fBGIT_EDITOR\fR
is not set\&. See
\fBgit-var\fR(1)\&.
.RE
.PP
core\&.commentChar, core\&.commentString
.RS 4
Commands such as
\fBcommit\fR
and
\fBtag\fR
that let you edit messages consider a line that begins with this character commented, and removes them after the editor returns (default
\fI#\fR)\&.
.sp
If set to "auto",
\fBgit\-commit\fR
would select a character that is not the beginning character of any line in existing commit messages\&.
.sp
Note that these two variables are aliases of each other, and in modern versions of Git you are free to use a string (e\&.g\&.,
\fB//\fR
or ⁑⁕⁑) with
\fBcommentChar\fR\&. Versions of Git prior to v2\&.45\&.0 will ignore
\fBcommentString\fR
but will reject a value of
\fBcommentChar\fR
that consists of more than a single ASCII byte\&. If you plan to use your config with older and newer versions of Git, you may want to specify both:
.sp
.if n \{\
.RS 4
.\}
.nf
[core]
# single character for older versions
commentChar = "#"
# string for newer versions (which will override commentChar
# because it comes later in the file)
commentString = "//"
.fi
.if n \{\
.RE
.\}
.RE
.PP
core\&.filesRefLockTimeout
.RS 4
The length of time, in milliseconds, to retry when trying to lock an individual reference\&. Value 0 means not to retry at all; \-1 means to try indefinitely\&. Default is 100 (i\&.e\&., retry for 100ms)\&.
.RE
.PP
core\&.packedRefsTimeout
.RS 4
The length of time, in milliseconds, to retry when trying to lock the
\fBpacked\-refs\fR
file\&. Value 0 means not to retry at all; \-1 means to try indefinitely\&. Default is 1000 (i\&.e\&., retry for 1 second)\&.
.RE
.PP
core\&.pager
.RS 4
Text viewer for use by Git commands (e\&.g\&.,
\fIless\fR)\&. The value is meant to be interpreted by the shell\&. The order of preference is the
\fB$GIT_PAGER\fR
environment variable, then
\fBcore\&.pager\fR
configuration, then
\fB$PAGER\fR, and then the default chosen at compile time (usually
\fIless\fR)\&.
.sp
When the
\fBLESS\fR
environment variable is unset, Git sets it to
\fBFRX\fR
(if
\fBLESS\fR
environment variable is set, Git does not change it at all)\&. If you want to selectively override Git\(cqs default setting for
\fBLESS\fR, you can set
\fBcore\&.pager\fR
to e\&.g\&.
\fBless\fR
\fB\-S\fR\&. This will be passed to the shell by Git, which will translate the final command to
\fBLESS=FRX\fR
\fBless\fR
\fB\-S\fR\&. The environment does not set the
\fBS\fR
option but the command line does, instructing less to truncate long lines\&. Similarly, setting
\fBcore\&.pager\fR
to
\fBless\fR
\fB\-+F\fR
will deactivate the
\fBF\fR
option specified by the environment from the command\-line, deactivating the "quit if one screen" behavior of
\fBless\fR\&. One can specifically activate some flags for particular commands: for example, setting
\fBpager\&.blame\fR
to
\fBless\fR
\fB\-S\fR
enables line truncation only for
\fBgit\fR
\fBblame\fR\&.
.sp
Likewise, when the
\fBLV\fR
environment variable is unset, Git sets it to
\fB\-c\fR\&. You can override this setting by exporting
\fBLV\fR
with another value or setting
\fBcore\&.pager\fR
to
\fBlv\fR
\fB+c\fR\&.
.RE
.PP
core\&.whitespace
.RS 4
A comma separated list of common whitespace problems to notice\&.
\fIgit diff\fR
will use
\fBcolor\&.diff\&.whitespace\fR
to highlight them, and
\fIgit apply \-\-whitespace=error\fR
will consider them as errors\&. You can prefix
\fB\-\fR
to disable any of them (e\&.g\&.
\fB\-trailing\-space\fR):
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBblank\-at\-eol\fR
treats trailing whitespaces at the end of the line as an error (enabled by default)\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBspace\-before\-tab\fR
treats a space character that appears immediately before a tab character in the initial indent part of the line as an error (enabled by default)\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBindent\-with\-non\-tab\fR
treats a line that is indented with space characters instead of the equivalent tabs as an error (not enabled by default)\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBtab\-in\-indent\fR
treats a tab character in the initial indent part of the line as an error (not enabled by default)\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBblank\-at\-eof\fR
treats blank lines added at the end of file as an error (enabled by default)\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBtrailing\-space\fR
is a short\-hand to cover both
\fBblank\-at\-eol\fR
and
\fBblank\-at\-eof\fR\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBcr\-at\-eol\fR
treats a carriage\-return at the end of line as part of the line terminator, i\&.e\&. with it,
\fBtrailing\-space\fR
does not trigger if the character before such a carriage\-return is not a whitespace (not enabled by default)\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBtabwidth=\fR\fI<n>\fR
tells how many character positions a tab occupies; this is relevant for
\fBindent\-with\-non\-tab\fR
and when Git fixes
\fBtab\-in\-indent\fR
errors\&. The default tab width is 8\&. Allowed values are 1 to 63\&.
.RE
.RE
.PP
core\&.fsync
.RS 4
A comma\-separated list of components of the repository that should be hardened via the core\&.fsyncMethod when created or modified\&. You can disable hardening of any component by prefixing it with a
\fI\-\fR\&. Items that are not hardened may be lost in the event of an unclean system shutdown\&. Unless you have special requirements, it is recommended that you leave this option empty or pick one of
\fBcommitted\fR,
\fBadded\fR, or
\fBall\fR\&.
.sp
When this configuration is encountered, the set of components starts with the platform default value, disabled components are removed, and additional components are added\&.
\fBnone\fR
resets the state so that the platform default is ignored\&.
.sp
The empty string resets the fsync configuration to the platform default\&. The default on most platforms is equivalent to
\fBcore\&.fsync=committed\fR,\-loose\-object, which has good performance, but risks losing recent work in the event of an unclean system shutdown\&.
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBnone\fR
clears the set of fsynced components\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBloose\-object\fR
hardens objects added to the repo in loose\-object form\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBpack\fR
hardens objects added to the repo in packfile form\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBpack\-metadata\fR
hardens packfile bitmaps and indexes\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBcommit\-graph\fR
hardens the commit\-graph file\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBindex\fR
hardens the index when it is modified\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBobjects\fR
is an aggregate option that is equivalent to
\fBloose\-object\fR,pack\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBreference\fR
hardens references modified in the repo\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBderived\-metadata\fR
is an aggregate option that is equivalent to
\fBpack\-metadata\fR,commit\-graph\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBcommitted\fR
is an aggregate option that is currently equivalent to
\fBobjects\fR\&. This mode sacrifices some performance to ensure that work that is committed to the repository with
\fBgit\fR
\fBcommit\fR
or similar commands is hardened\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBadded\fR
is an aggregate option that is currently equivalent to
\fBcommitted\fR,index\&. This mode sacrifices additional performance to ensure that the results of commands like
\fBgit\fR
\fBadd\fR
and similar operations are hardened\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBall\fR
is an aggregate option that syncs all individual components above\&.
.RE
.RE
.PP
core\&.fsyncMethod
.RS 4
A value indicating the strategy Git will use to harden repository data using fsync and related primitives\&.
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBfsync\fR
uses the fsync() system call or platform equivalents\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBwriteout\-only\fR
issues pagecache writeback requests, but depending on the filesystem and storage hardware, data added to the repository may not be durable in the event of a system crash\&. This is the default mode on macOS\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBbatch\fR
enables a mode that uses writeout\-only flushes to stage multiple updates in the disk writeback cache and then does a single full fsync of a dummy file to trigger the disk cache flush at the end of the operation\&.
.sp
Currently
\fBbatch\fR
mode only applies to loose\-object files\&. Other repository data is made durable as if
\fBfsync\fR
was specified\&. This mode is expected to be as safe as
\fBfsync\fR
on macOS for repos stored on HFS+ or APFS filesystems and on Windows for repos stored on NTFS or ReFS filesystems\&.
.RE
.RE
.PP
core\&.fsyncObjectFiles
.RS 4
This boolean will enable
\fIfsync()\fR
when writing object files\&. This setting is deprecated\&. Use core\&.fsync instead\&.
.sp
This setting affects data added to the Git repository in loose\-object form\&. When set to true, Git will issue an fsync or similar system call to flush caches so that loose\-objects remain consistent in the face of a unclean system shutdown\&.
.RE
.PP
core\&.preloadIndex
.RS 4
Enable parallel index preload for operations like
\fIgit diff\fR
.sp
This can speed up operations like
\fIgit diff\fR
and
\fIgit status\fR
especially on filesystems like NFS that have weak caching semantics and thus relatively high IO latencies\&. When enabled, Git will do the index comparison to the filesystem data in parallel, allowing overlapping IO\(cqs\&. Defaults to true\&.
.RE
.PP
core\&.unsetenvvars
.RS 4
Windows\-only: comma\-separated list of environment variables\*(Aq names that need to be unset before spawning any other process\&. Defaults to
\fBPERL5LIB\fR
to account for the fact that Git for Windows insists on using its own Perl interpreter\&.
.RE
.PP
core\&.createObject
.RS 4
You can set this to
\fIlink\fR, in which case a hardlink followed by a delete of the source are used to make sure that object creation will not overwrite existing objects\&.
.sp
On some file system/operating system combinations, this is unreliable\&. Set this config setting to
\fIrename\fR
there; however, this will remove the check that makes sure that existing object files will not get overwritten\&.
.RE
.PP
core\&.notesRef
.RS 4
When showing commit messages, also show notes which are stored in the given ref\&. The ref must be fully qualified\&. If the given ref does not exist, it is not an error but means that no notes should be printed\&.
.sp
This setting defaults to "refs/notes/commits", and it can be overridden by the
\fBGIT_NOTES_REF\fR
environment variable\&. See
\fBgit-notes\fR(1)\&.
.RE
.PP
core\&.commitGraph
.RS 4
If true, then git will read the commit\-graph file (if it exists) to parse the graph structure of commits\&. Defaults to true\&. See
\fBgit-commit-graph\fR(1)
for more information\&.
.RE
.PP
core\&.useReplaceRefs
.RS 4
If set to
\fBfalse\fR, behave as if the
\fB\-\-no\-replace\-objects\fR
option was given on the command line\&. See
\fBgit\fR(1)
and
\fBgit-replace\fR(1)
for more information\&.
.RE
.PP
core\&.multiPackIndex
.RS 4
Use the multi\-pack\-index file to track multiple packfiles using a single index\&. See
\fBgit-multi-pack-index\fR(1)
for more information\&. Defaults to true\&.
.RE
.PP
core\&.sparseCheckout
.RS 4
Enable "sparse checkout" feature\&. See
\fBgit-sparse-checkout\fR(1)
for more information\&.
.RE
.PP
core\&.sparseCheckoutCone
.RS 4
Enables the "cone mode" of the sparse checkout feature\&. When the sparse\-checkout file contains a limited set of patterns, this mode provides significant performance advantages\&. The "non\-cone mode" can be requested to allow specifying more flexible patterns by setting this variable to
\fIfalse\fR\&. See
\fBgit-sparse-checkout\fR(1)
for more information\&.
.RE
.PP
core\&.abbrev
.RS 4
Set the length object names are abbreviated to\&. If unspecified or set to "auto", an appropriate value is computed based on the approximate number of packed objects in your repository, which hopefully is enough for abbreviated object names to stay unique for some time\&. If set to "no", no abbreviation is made and the object names are shown in their full length\&. The minimum length is 4\&.
.RE
.PP
core\&.maxTreeDepth
.RS 4
The maximum depth Git is willing to recurse while traversing a tree (e\&.g\&., "a/b/cde/f" has a depth of 4)\&. This is a fail\-safe to allow Git to abort cleanly, and should not generally need to be adjusted\&. When Git is compiled with MSVC, the default is 512\&. Otherwise, the default is 2048\&.
.RE
.PP
credential\&.helper
.RS 4
Specify an external helper to be called when a username or password credential is needed; the helper may consult external storage to avoid prompting the user for the credentials\&. This is normally the name of a credential helper with possible arguments, but may also be an absolute path with arguments or, if preceded by !, shell commands\&.
.sp
Note that multiple helpers may be defined\&. See
\fBgitcredentials\fR(7)
for details and examples\&.
.RE
.PP
credential\&.interactive
.RS 4
By default, Git and any configured credential helpers will ask for user input when new credentials are required\&. Many of these helpers will succeed based on stored credentials if those credentials are still valid\&. To avoid the possibility of user interactivity from Git, set
\fBcredential\&.interactive=false\fR\&. Some credential helpers respect this option as well\&.
.RE
.PP
credential\&.useHttpPath
.RS 4
When acquiring credentials, consider the "path" component of an http or https URL to be important\&. Defaults to false\&. See
\fBgitcredentials\fR(7)
for more information\&.
.RE
.PP
credential\&.sanitizePrompt
.RS 4
By default, user names and hosts that are shown as part of the password prompt are not allowed to contain control characters (they will be URL\-encoded by default)\&. Configure this setting to
\fBfalse\fR
to override that behavior\&.
.RE
.PP
credential\&.protectProtocol
.RS 4
By default, Carriage Return characters are not allowed in the protocol that is used when Git talks to a credential helper\&. This setting allows users to override this default\&.
.RE
.PP
credential\&.username
.RS 4
If no username is set for a network authentication, use this username by default\&. See credential\&.<context>\&.* below, and
\fBgitcredentials\fR(7)\&.
.RE
.PP
credential\&.<url>\&.*
.RS 4
Any of the credential\&.* options above can be applied selectively to some credentials\&. For example, "credential\&.https://example\&.com\&.username" would set the default username only for https connections to example\&.com\&. See
\fBgitcredentials\fR(7)
for details on how URLs are matched\&.
.RE
.PP
credentialCache\&.ignoreSIGHUP
.RS 4
Tell git\-credential\-cache\(em\:daemon to ignore SIGHUP, instead of quitting\&.
.RE
.PP
credentialStore\&.lockTimeoutMS
.RS 4
The length of time, in milliseconds, for git\-credential\-store to retry when trying to lock the credentials file\&. A value of 0 means not to retry at all; \-1 means to try indefinitely\&. Default is 1000 (i\&.e\&., retry for 1s)\&.
.RE
.PP
\fBdiff\&.autoRefreshIndex\fR
.RS 4
When using
\fBgit\fR
\fBdiff\fR
to compare with work tree files, do not consider stat\-only changes as changed\&. Instead, silently run
\fBgit\fR
\fBupdate\-index\fR
\fB\-\-refresh\fR
to update the cached stat information for paths whose contents in the work tree match the contents in the index\&. This option defaults to
\fBtrue\fR\&. Note that this affects only
\fBgit\fR
\fBdiff\fR
Porcelain, and not lower level
\fBdiff\fR
commands such as
\fBgit\fR
\fBdiff\-files\fR\&.
.RE
.PP
\fBdiff\&.dirstat\fR
.RS 4
A comma separated list of
\fB\-\-dirstat\fR
parameters specifying the default behavior of the
\fB\-\-dirstat\fR
option to
\fBgit-diff\fR(1)
and friends\&. The defaults can be overridden on the command line (using
\fB\-\-dirstat=\fR\fI<param>\fR\fB,\fR\&.\&.\&.)\&. The fallback defaults (when not changed by
\fBdiff\&.dirstat\fR) are
\fBchanges\fR,noncumulative,3\&. The following parameters are available:
.PP
\fBchanges\fR
.RS 4
Compute the dirstat numbers by counting the lines that have been removed from the source, or added to the destination\&. This ignores the amount of pure code movements within a file\&. In other words, rearranging lines in a file is not counted as much as other changes\&. This is the default behavior when no parameter is given\&.
.RE
.PP
\fBlines\fR
.RS 4
Compute the dirstat numbers by doing the regular line\-based diff analysis, and summing the removed/added line counts\&. (For binary files, count 64\-byte chunks instead, since binary files have no natural concept of lines)\&. This is a more expensive
\fB\-\-dirstat\fR
behavior than the
\fBchanges\fR
behavior, but it does count rearranged lines within a file as much as other changes\&. The resulting output is consistent with what you get from the other
\fB\-\-*stat\fR
options\&.
.RE
.PP
\fBfiles\fR
.RS 4
Compute the dirstat numbers by counting the number of files changed\&. Each changed file counts equally in the dirstat analysis\&. This is the computationally cheapest
\fB\-\-dirstat\fR
behavior, since it does not have to look at the file contents at all\&.
.RE
.PP
\fBcumulative\fR
.RS 4
Count changes in a child directory for the parent directory as well\&. Note that when using
\fBcumulative\fR, the sum of the percentages reported may exceed 100%\&. The default (non\-cumulative) behavior can be specified with the
\fBnoncumulative\fR
parameter\&.
.RE
.PP
\fI<limit>\fR
.RS 4
An integer parameter specifies a cut\-off percent (3% by default)\&. Directories contributing less than this percentage of the changes are not shown in the output\&.
.RE
.sp
Example: The following will count changed files, while ignoring directories with less than 10% of the total amount of changed files, and accumulating child directory counts in the parent directories:
\fBfiles\fR,10,cumulative\&.
.RE
.PP
\fBdiff\&.statNameWidth\fR
.RS 4
Limit the width of the filename part in
\fB\-\-stat\fR
output\&. If set, applies to all commands generating
\fB\-\-stat\fR
output except
\fBformat\-patch\fR\&.
.RE
.PP
\fBdiff\&.statGraphWidth\fR
.RS 4
Limit the width of the graph part in
\fB\-\-stat\fR
output\&. If set, applies to all commands generating
\fB\-\-stat\fR
output except
\fBformat\-patch\fR\&.
.RE
.PP
\fBdiff\&.context\fR
.RS 4
Generate diffs with
\fI<n>\fR
lines of context instead of the default of 3\&. This value is overridden by the
\fB\-U\fR
option\&.
.RE
.PP
\fBdiff\&.interHunkContext\fR
.RS 4
Show the context between diff hunks, up to the specified number of lines, thereby fusing the hunks that are close to each other\&. This value serves as the default for the
\fB\-\-inter\-hunk\-context\fR
command line option\&.
.RE
.PP
\fBdiff\&.external\fR
.RS 4
If this config variable is set, diff generation is not performed using the internal diff machinery, but using the given command\&. Can be overridden with the
\fBGIT_EXTERNAL_DIFF\fR
environment variable\&. The command is called with parameters as described under "git Diffs" in
\fBgit\fR(1)\&. Note: if you want to use an external diff program only on a subset of your files, you might want to use
\fBgitattributes\fR(5)
instead\&.
.RE
.PP
\fBdiff\&.trustExitCode\fR
.RS 4
If this boolean value is set to
\fBtrue\fR
then the
\fBdiff\&.external\fR
command is expected to return exit code 0 if it considers the input files to be equal or 1 if it considers them to be different, like
\fBdiff\fR(1)\&. If it is set to
\fBfalse\fR, which is the default, then the command is expected to return exit code
\fB0\fR
regardless of equality\&. Any other exit code causes Git to report a fatal error\&.
.RE
.PP
\fBdiff\&.ignoreSubmodules\fR
.RS 4
Sets the default value of
\fB\-\-ignore\-submodules\fR\&. Note that this affects only
\fBgit\fR
\fBdiff\fR
Porcelain, and not lower level
\fBdiff\fR
commands such as
\fBgit\fR
\fBdiff\-files\fR\&.
\fBgit\fR
\fBcheckout\fR
and
\fBgit\fR
\fBswitch\fR
also honor this setting when reporting uncommitted changes\&. Setting it to
\fBall\fR
disables the submodule summary normally shown by
\fBgit\fR
\fBcommit\fR
and
\fBgit\fR
\fBstatus\fR
when
\fBstatus\&.submoduleSummary\fR
is set unless it is overridden by using the
\fB\-\-ignore\-submodules\fR
command\-line option\&. The
\fBgit\fR
\fBsubmodule\fR
commands are not affected by this setting\&. By default this is set to untracked so that any untracked submodules are ignored\&.
.RE
.PP
\fBdiff\&.mnemonicPrefix\fR
.RS 4
If set,
\fBgit\fR
\fBdiff\fR
uses a prefix pair that is different from the standard
\fBa/\fR
and
\fBb/\fR
depending on what is being compared\&. When this configuration is in effect, reverse diff output also swaps the order of the prefixes:
.PP
\fBgit\fR \fBdiff\fR
.RS 4
compares the (i)ndex and the (w)ork tree;
.RE
.PP
\fBgit\fR \fBdiff\fR \fBHEAD\fR
.RS 4
compares a (c)ommit and the (w)ork tree;
.RE
.PP
\fBgit\fR \fBdiff\fR \fB\-\-cached\fR
.RS 4
compares a (c)ommit and the (i)ndex;
.RE
.PP
\fBgit\fR \fBdiff\fR \fBHEAD:\fR\fI<file1>\fR \fI<file2>\fR
.RS 4
compares an (o)bject and a (w)ork tree entity;
.RE
.PP
\fBgit\fR \fBdiff\fR \fB\-\-no\-index\fR \fI<a>\fR \fI<b>\fR
.RS 4
compares two non\-git things
\fI<a>\fR
and
\fI<b>\fR\&.
.RE
.RE
.PP
\fBdiff\&.noPrefix\fR
.RS 4
If set,
\fBgit\fR
\fBdiff\fR
does not show any source or destination prefix\&.
.RE
.PP
\fBdiff\&.srcPrefix\fR
.RS 4
If set,
\fBgit\fR
\fBdiff\fR
uses this source prefix\&. Defaults to
\fBa/\fR\&.
.RE
.PP
\fBdiff\&.dstPrefix\fR
.RS 4
If set,
\fBgit\fR
\fBdiff\fR
uses this destination prefix\&. Defaults to
\fBb/\fR\&.
.RE
.PP
\fBdiff\&.relative\fR
.RS 4
If set to
\fBtrue\fR,
\fBgit\fR
\fBdiff\fR
does not show changes outside of the directory and show pathnames relative to the current directory\&.
.RE
.PP
\fBdiff\&.orderFile\fR
.RS 4
File indicating how to order files within a diff\&. See the
\fB\-O\fR
option to
\fBgit-diff\fR(1)
for details\&. If
\fBdiff\&.orderFile\fR
is a relative pathname, it is treated as relative to the top of the working tree\&.
.RE
.PP
\fBdiff\&.renameLimit\fR
.RS 4
The number of files to consider in the exhaustive portion of copy/rename detection; equivalent to the
\fBgit\fR
\fBdiff\fR
option
\fB\-l\fR\&. If not set, the default value is currently 1000\&. This setting has no effect if rename detection is turned off\&.
.RE
.PP
\fBdiff\&.renames\fR
.RS 4
Whether and how Git detects renames\&. If set to
\fBfalse\fR, rename detection is disabled\&. If set to
\fBtrue\fR, basic rename detection is enabled\&. If set to
\fBcopies\fR
or
\fBcopy\fR, Git will detect copies, as well\&. Defaults to
\fBtrue\fR\&. Note that this affects only
\fBgit\fR
\fBdiff\fR
Porcelain like
\fBgit-diff\fR(1)
and
\fBgit-log\fR(1), and not lower level commands such as
\fBgit-diff-files\fR(1)\&.
.RE
.PP
\fBdiff\&.suppressBlankEmpty\fR
.RS 4
A boolean to inhibit the standard behavior of printing a space before each empty output line\&. Defaults to
\fBfalse\fR\&.
.RE
.PP
\fBdiff\&.submodule\fR
.RS 4
Specify the format in which differences in submodules are shown\&. The
\fBshort\fR
format just shows the names of the commits at the beginning and end of the range\&. The
\fBlog\fR
format lists the commits in the range like
\fBgit-submodule\fR(1)
\fBsummary\fR
does\&. The
\fBdiff\fR
format shows an inline diff of the changed contents of the submodule\&. Defaults to
\fBshort\fR\&.
.RE
.PP
\fBdiff\&.wordRegex\fR
.RS 4
A POSIX Extended Regular Expression used to determine what is a "word" when performing word\-by\-word difference calculations\&. Character sequences that match the regular expression are "words", all other characters are
\fBignorable\fR
whitespace\&.
.RE
.PP
\fBdiff\&.\fR\fI<driver>\fR\fB\&.command\fR
.RS 4
The custom diff driver command\&. See
\fBgitattributes\fR(5)
for details\&.
.RE
.PP
\fBdiff\&.\fR\fI<driver>\fR\fB\&.trustExitCode\fR
.RS 4
If this boolean value is set to
\fBtrue\fR
then the
\fBdiff\&.\fR\fI<driver>\fR\fB\&.command\fR
command is expected to return exit code 0 if it considers the input files to be equal or 1 if it considers them to be different, like
\fBdiff\fR(1)\&. If it is set to
\fBfalse\fR, which is the default, then the command is expected to return exit code 0 regardless of equality\&. Any other exit code causes Git to report a fatal error\&.
.RE
.PP
\fBdiff\&.\fR\fI<driver>\fR\fB\&.xfuncname\fR
.RS 4
The regular expression that the diff driver should use to recognize the hunk header\&. A built\-in pattern may also be used\&. See
\fBgitattributes\fR(5)
for details\&.
.RE
.PP
\fBdiff\&.\fR\fI<driver>\fR\fB\&.binary\fR
.RS 4
Set this option to
\fBtrue\fR
to make the diff driver treat files as binary\&. See
\fBgitattributes\fR(5)
for details\&.
.RE
.PP
\fBdiff\&.\fR\fI<driver>\fR\fB\&.textconv\fR
.RS 4
The command that the diff driver should call to generate the text\-converted version of a file\&. The result of the conversion is used to generate a human\-readable diff\&. See
\fBgitattributes\fR(5)
for details\&.
.RE
.PP
\fBdiff\&.\fR\fI<driver>\fR\fB\&.wordRegex\fR
.RS 4
The regular expression that the diff driver should use to split words in a line\&. See
\fBgitattributes\fR(5)
for details\&.
.RE
.PP
\fBdiff\&.\fR\fI<driver>\fR\fB\&.cachetextconv\fR
.RS 4
Set this option to
\fBtrue\fR
to make the diff driver cache the text conversion outputs\&. See
\fBgitattributes\fR(5)
for details\&.
.RE
.PP
\fBdiff\&.indentHeuristic\fR
.RS 4
Set this option to
\fBfalse\fR
to disable the default heuristics that shift diff hunk boundaries to make patches easier to read\&.
.RE
.PP
\fBdiff\&.algorithm\fR
.RS 4
Choose a diff algorithm\&. The variants are as follows:
.PP
\fBdefault\fR, \fBmyers\fR
.RS 4
The basic greedy diff algorithm\&. Currently, this is the default\&.
.RE
.PP
\fBminimal\fR
.RS 4
Spend extra time to make sure the smallest possible diff is produced\&.
.RE
.PP
\fBpatience\fR
.RS 4
Use "patience diff" algorithm when generating patches\&.
.RE
.PP
\fBhistogram\fR
.RS 4
This algorithm extends the patience algorithm to "support low\-occurrence common elements"\&.
.RE
.RE
.PP
\fBdiff\&.wsErrorHighlight\fR
.RS 4
Highlight whitespace errors in the
\fBcontext\fR,
\fBold\fR
or
\fBnew\fR
lines of the diff\&. Multiple values are separated by comma,
\fBnone\fR
resets previous values,
\fBdefault\fR
reset the list to
\fBnew\fR
and
\fBall\fR
is a shorthand for
\fBold\fR,new,context\&. The whitespace errors are colored with
\fBcolor\&.diff\&.whitespace\fR\&. The command line option
\fB\-\-ws\-error\-highlight=\fR\fI<kind>\fR
overrides this setting\&.
.RE
.PP
\fBdiff\&.colorMoved\fR
.RS 4
If set to either a valid
\fI<mode>\fR
or a
\fBtrue\fR
value, moved lines in a diff are colored differently\&. For details of valid modes see
\fB\-\-color\-moved\fR
in
\fBgit-diff\fR(1)\&. If simply set to
\fBtrue\fR
the default color mode will be used\&. When set to
\fBfalse\fR, moved lines are not colored\&.
.RE
.PP
\fBdiff\&.colorMovedWS\fR
.RS 4
When moved lines are colored using e\&.g\&. the
\fBdiff\&.colorMoved\fR
setting, this option controls the mode how spaces are treated\&. For details of valid modes see
\fB\-\-color\-moved\-ws\fR
in
\fBgit-diff\fR(1)\&.
.RE
.PP
diff\&.tool
.RS 4
Controls which diff tool is used by
\fBgit-difftool\fR(1)\&. This variable overrides the value configured in
\fBmerge\&.tool\fR\&. The list below shows the valid built\-in values\&. Any other value is treated as a custom diff tool and requires that a corresponding difftool\&.<tool>\&.cmd variable is defined\&.
.RE
.PP
diff\&.guitool
.RS 4
Controls which diff tool is used by
\fBgit-difftool\fR(1)
when the \-g/\-\-gui flag is specified\&. This variable overrides the value configured in
\fBmerge\&.guitool\fR\&. The list below shows the valid built\-in values\&. Any other value is treated as a custom diff tool and requires that a corresponding difftool\&.<guitool>\&.cmd variable is defined\&.
.PP
\fBaraxis\fR
.RS 4
Use Araxis Merge (requires a graphical session)
.RE
.PP
\fBbc\fR
.RS 4
Use Beyond Compare (requires a graphical session)
.RE
.PP
\fBbc3\fR
.RS 4
Use Beyond Compare (requires a graphical session)
.RE
.PP
\fBbc4\fR
.RS 4
Use Beyond Compare (requires a graphical session)
.RE
.PP
\fBcodecompare\fR
.RS 4
Use Code Compare (requires a graphical session)
.RE
.PP
\fBdeltawalker\fR
.RS 4
Use DeltaWalker (requires a graphical session)
.RE
.PP
\fBdiffmerge\fR
.RS 4
Use DiffMerge (requires a graphical session)
.RE
.PP
\fBdiffuse\fR
.RS 4
Use Diffuse (requires a graphical session)
.RE
.PP
\fBecmerge\fR
.RS 4
Use ECMerge (requires a graphical session)
.RE
.PP
\fBemerge\fR
.RS 4
Use Emacs\*(Aq Emerge
.RE
.PP
\fBexamdiff\fR
.RS 4
Use ExamDiff Pro (requires a graphical session)
.RE
.PP
\fBguiffy\fR
.RS 4
Use Guiffy\(cqs Diff Tool (requires a graphical session)
.RE
.PP
\fBgvimdiff\fR
.RS 4
Use gVim (requires a graphical session)
.RE
.PP
\fBkdiff3\fR
.RS 4
Use KDiff3 (requires a graphical session)
.RE
.PP
\fBkompare\fR
.RS 4
Use Kompare (requires a graphical session)
.RE
.PP
\fBmeld\fR
.RS 4
Use Meld (requires a graphical session)
.RE
.PP
\fBnvimdiff\fR
.RS 4
Use Neovim
.RE
.PP
\fBopendiff\fR
.RS 4
Use FileMerge (requires a graphical session)
.RE
.PP
\fBp4merge\fR
.RS 4
Use HelixCore P4Merge (requires a graphical session)
.RE
.PP
\fBsmerge\fR
.RS 4
Use Sublime Merge (requires a graphical session)
.RE
.PP
\fBtkdiff\fR
.RS 4
Use TkDiff (requires a graphical session)
.RE
.PP
\fBvimdiff\fR
.RS 4
Use Vim
.RE
.PP
\fBvscode\fR
.RS 4
Use Visual Studio Code (requires a graphical session)
.RE
.PP
\fBwinmerge\fR
.RS 4
Use WinMerge (requires a graphical session)
.RE
.PP
\fBxxdiff\fR
.RS 4
Use xxdiff (requires a graphical session)
.RE
.RE
.PP
difftool\&.<tool>\&.cmd
.RS 4
Specify the command to invoke the specified diff tool\&. The specified command is evaluated in shell with the following variables available:
\fILOCAL\fR
is set to the name of the temporary file containing the contents of the diff pre\-image and
\fIREMOTE\fR
is set to the name of the temporary file containing the contents of the diff post\-image\&.
.sp
See the
\fB\-\-tool=\fR\fI<tool>\fR
option in
\fBgit-difftool\fR(1)
for more details\&.
.RE
.PP
difftool\&.<tool>\&.path
.RS 4
Override the path for the given tool\&. This is useful in case your tool is not in the PATH\&.
.RE
.PP
difftool\&.trustExitCode
.RS 4
Exit difftool if the invoked diff tool returns a non\-zero exit status\&.
.sp
See the
\fB\-\-trust\-exit\-code\fR
option in
\fBgit-difftool\fR(1)
for more details\&.
.RE
.PP
difftool\&.prompt
.RS 4
Prompt before each invocation of the diff tool\&.
.RE
.PP
difftool\&.guiDefault
.RS 4
Set
\fBtrue\fR
to use the
\fBdiff\&.guitool\fR
by default (equivalent to specifying the
\fB\-\-gui\fR
argument), or
\fBauto\fR
to select
\fBdiff\&.guitool\fR
or
\fBdiff\&.tool\fR
depending on the presence of a
\fBDISPLAY\fR
environment variable value\&. The default is
\fBfalse\fR, where the
\fB\-\-gui\fR
argument must be provided explicitly for the
\fBdiff\&.guitool\fR
to be used\&.
.RE
.PP
extensions\&.*
.RS 4
Unless otherwise stated, is an error to specify an extension if
\fBcore\&.repositoryFormatVersion\fR
is not
\fB1\fR\&. See
\fBgitrepository-layout\fR(5)\&.
.PP
compatObjectFormat
.RS 4
Specify a compatibility hash algorithm to use\&. The acceptable values are
\fBsha1\fR
and
\fBsha256\fR\&. The value specified must be different from the value of
\fBextensions\&.objectFormat\fR\&. This allows client level interoperability between git repositories whose objectFormat matches this compatObjectFormat\&. In particular when fully implemented the pushes and pulls from a repository in whose objectFormat matches compatObjectFormat\&. As well as being able to use oids encoded in compatObjectFormat in addition to oids encoded with objectFormat to locally specify objects\&.
.sp
Note that the functionality enabled by this extension is incomplete and subject to change\&. It currently exists only to allow development and testing of the underlying feature and is not designed to be enabled by end users\&.
.RE
.PP
noop
.RS 4
This extension does not change git\(cqs behavior at all\&. It is useful only for testing format\-1 compatibility\&.
.sp
For historical reasons, this extension is respected regardless of the
\fBcore\&.repositoryFormatVersion\fR
setting\&.
.RE
.PP
noop\-v1
.RS 4
This extension does not change git\(cqs behavior at all\&. It is useful only for testing format\-1 compatibility\&.
.RE
.PP
objectFormat
.RS 4
Specify the hash algorithm to use\&. The acceptable values are
\fBsha1\fR
and
\fBsha256\fR\&. If not specified,
\fBsha1\fR
is assumed\&.
.sp
Note that this setting should only be set by
\fBgit-init\fR(1)
or
\fBgit-clone\fR(1)\&. Trying to change it after initialization will not work and will produce hard\-to\-diagnose issues\&.
.RE
.PP
partialClone
.RS 4
When enabled, indicates that the repo was created with a partial clone (or later performed a partial fetch) and that the remote may have omitted sending certain unwanted objects\&. Such a remote is called a "promisor remote" and it promises that all such omitted objects can be fetched from it in the future\&.
.sp
The value of this key is the name of the promisor remote\&.
.sp
For historical reasons, this extension is respected regardless of the
\fBcore\&.repositoryFormatVersion\fR
setting\&.
.RE
.PP
preciousObjects
.RS 4
If enabled, indicates that objects in the repository MUST NOT be deleted (e\&.g\&., by
\fBgit\-prune\fR
or
\fBgit\fR
\fBrepack\fR
\fB\-d\fR)\&.
.sp
For historical reasons, this extension is respected regardless of the
\fBcore\&.repositoryFormatVersion\fR
setting\&.
.RE
.PP
refStorage
.RS 4
Specify the ref storage format to use\&. The acceptable values are:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBfiles\fR
for loose files with packed\-refs\&. This is the default\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBreftable\fR
for the reftable format\&. This format is experimental and its internals are subject to change\&.
.RE
.sp
Note that this setting should only be set by
\fBgit-init\fR(1)
or
\fBgit-clone\fR(1)\&. Trying to change it after initialization will not work and will produce hard\-to\-diagnose issues\&.
.RE
.PP
relativeWorktrees
.RS 4
If enabled, indicates at least one worktree has been linked with relative paths\&. Automatically set if a worktree has been created or repaired with either the
\fB\-\-relative\-paths\fR
option or with the
\fBworktree\&.useRelativePaths\fR
config set to
\fBtrue\fR\&.
.RE
.PP
worktreeConfig
.RS 4
If enabled, then worktrees will load config settings from the
\fB$GIT_DIR/config\&.worktree\fR
file in addition to the
\fB$GIT_COMMON_DIR/config\fR
file\&. Note that
\fB$GIT_COMMON_DIR\fR
and
\fB$GIT_DIR\fR
are the same for the main working tree, while other working trees have
\fB$GIT_DIR\fR
equal to
\fB$GIT_COMMON_DIR/worktrees/\fR\fI<id>\fR\fB/\fR\&. The settings in the
\fBconfig\&.worktree\fR
file will override settings from any other config files\&.
.sp
When enabling this extension, you must be careful to move certain values from the common config file to the main working tree\(cqs
\fBconfig\&.worktree\fR
file, if present:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBcore\&.worktree\fR
must be moved from
\fB$GIT_COMMON_DIR/config\fR
to
\fB$GIT_COMMON_DIR/config\&.worktree\fR\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
If
\fBcore\&.bare\fR
is true, then it must be moved from
\fB$GIT_COMMON_DIR/config\fR
to
\fB$GIT_COMMON_DIR/config\&.worktree\fR\&.
.RE
.sp
It may also be beneficial to adjust the locations of
\fBcore\&.sparseCheckout\fR
and
\fBcore\&.sparseCheckoutCone\fR
depending on your desire for customizable sparse\-checkout settings for each worktree\&. By default, the
\fBgit\fR
\fBsparse\-checkout\fR
builtin enables this extension, assigns these config values on a per\-worktree basis, and uses the
\fB$GIT_DIR/info/sparse\-checkout\fR
file to specify the sparsity for each worktree independently\&. See
\fBgit-sparse-checkout\fR(1)
for more details\&.
.sp
+ For historical reasons, this extension is respected regardless of the
\fBcore\&.repositoryFormatVersion\fR
setting\&.
.RE
.RE
.PP
fastimport\&.unpackLimit
.RS 4
If the number of objects imported by
\fBgit-fast-import\fR(1)
is below this limit, then the objects will be unpacked into loose object files\&. However, if the number of imported objects equals or exceeds this limit, then the pack will be stored as a pack\&. Storing the pack from a fast\-import can make the import operation complete faster, especially on slow filesystems\&. If not set, the value of
\fBtransfer\&.unpackLimit\fR
is used instead\&.
.RE
.PP
feature\&.*
.RS 4
The config settings that start with
\fBfeature\&.\fR
modify the defaults of a group of other config settings\&. These groups are created by the Git developer community as recommended defaults and are subject to change\&. In particular, new config options may be added with different defaults\&.
.RE
.PP
feature\&.experimental
.RS 4
Enable config options that are new to Git, and are being considered for future defaults\&. Config settings included here may be added or removed with each release, including minor version updates\&. These settings may have unintended interactions since they are so new\&. Please enable this setting if you are interested in providing feedback on experimental features\&. The new default values are:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBfetch\&.negotiationAlgorithm=skipping\fR
may improve fetch negotiation times by skipping more commits at a time, reducing the number of round trips\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBpack\&.useBitmapBoundaryTraversal=true\fR
may improve bitmap traversal times by walking fewer objects\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBpack\&.allowPackReuse=multi\fR
may improve the time it takes to create a pack by reusing objects from multiple packs instead of just one\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBpack\&.usePathWalk\fR
may speed up packfile creation and make the packfiles be significantly smaller in the presence of certain filename collisions with Git\(cqs default name\-hash\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBinit\&.defaultRefFormat=reftable\fR
causes newly initialized repositories to use the reftable format for storing references\&. This new format solves issues with case\-insensitive filesystems, compresses better and performs significantly better with many use cases\&. Refer to Documentation/technical/reftable\&.adoc for more information on this new storage format\&.
.RE
.RE
.PP
feature\&.manyFiles
.RS 4
Enable config options that optimize for repos with many files in the working directory\&. With many files, commands such as
\fBgit\fR
\fBstatus\fR
and
\fBgit\fR
\fBcheckout\fR
may be slow and these new defaults improve performance:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBindex\&.skipHash=true\fR
speeds up index writes by not computing a trailing checksum\&. Note that this will cause Git versions earlier than 2\&.13\&.0 to refuse to parse the index and Git versions earlier than 2\&.40\&.0 will report a corrupted index during
\fBgit\fR
\fBfsck\fR\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBindex\&.version=4\fR
enables path\-prefix compression in the index\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBcore\&.untrackedCache=true\fR
enables the untracked cache\&. This setting assumes that mtime is working on your machine\&.
.RE
.RE
.PP
fetch\&.recurseSubmodules
.RS 4
This option controls whether
\fBgit\fR
\fBfetch\fR
(and the underlying fetch in
\fBgit\fR
\fBpull\fR) will recursively fetch into populated submodules\&. This option can be set either to a boolean value or to
\fIon\-demand\fR\&. Setting it to a boolean changes the behavior of fetch and pull to recurse unconditionally into submodules when set to true or to not recurse at all when set to false\&. When set to
\fIon\-demand\fR, fetch and pull will only recurse into a populated submodule when its superproject retrieves a commit that updates the submodule\(cqs reference\&. Defaults to
\fIon\-demand\fR, or to the value of
\fIsubmodule\&.recurse\fR
if set\&.
.RE
.PP
fetch\&.fsckObjects
.RS 4
If it is set to true, git\-fetch\-pack will check all fetched objects\&. See
\fBtransfer\&.fsckObjects\fR
for what\(cqs checked\&. Defaults to false\&. If not set, the value of
\fBtransfer\&.fsckObjects\fR
is used instead\&.
.RE
.PP
fetch\&.fsck\&.<msg\-id>
.RS 4
Acts like
\fBfsck\&.\fR\fI<msg\-id>\fR, but is used by
\fBgit-fetch-pack\fR(1)
instead of
\fBgit-fsck\fR(1)\&. See the
\fBfsck\&.\fR\fI<msg\-id>\fR
documentation for details\&.
.RE
.PP
fetch\&.fsck\&.skipList
.RS 4
Acts like
\fBfsck\&.skipList\fR, but is used by
\fBgit-fetch-pack\fR(1)
instead of
\fBgit-fsck\fR(1)\&. See the
\fBfsck\&.skipList\fR
documentation for details\&.
.RE
.PP
fetch\&.unpackLimit
.RS 4
If the number of objects fetched over the Git native transfer is below this limit, then the objects will be unpacked into loose object files\&. However if the number of received objects equals or exceeds this limit then the received pack will be stored as a pack, after adding any missing delta bases\&. Storing the pack from a push can make the push operation complete faster, especially on slow filesystems\&. If not set, the value of
\fBtransfer\&.unpackLimit\fR
is used instead\&.
.RE
.PP
fetch\&.prune
.RS 4
If true, fetch will automatically behave as if the
\fB\-\-prune\fR
option was given on the command line\&. See also
\fBremote\&.\fR\fI<name>\fR\fB\&.prune\fR
and the PRUNING section of
\fBgit-fetch\fR(1)\&.
.RE
.PP
fetch\&.pruneTags
.RS 4
If true, fetch will automatically behave as if the
\fBrefs/tags/*:refs/tags/*\fR
refspec was provided when pruning, if not set already\&. This allows for setting both this option and
\fBfetch\&.prune\fR
to maintain a 1=1 mapping to upstream refs\&. See also
\fBremote\&.\fR\fI<name>\fR\fB\&.pruneTags\fR
and the PRUNING section of
\fBgit-fetch\fR(1)\&.
.RE
.PP
fetch\&.all
.RS 4
If true, fetch will attempt to update all available remotes\&. This behavior can be overridden by passing
\fB\-\-no\-all\fR
or by explicitly specifying one or more remote(s) to fetch from\&. Defaults to false\&.
.RE
.PP
fetch\&.output
.RS 4
Control how ref update status is printed\&. Valid values are
\fBfull\fR
and
\fBcompact\fR\&. Default value is
\fBfull\fR\&. See the OUTPUT section in
\fBgit-fetch\fR(1)
for details\&.
.RE
.PP
fetch\&.negotiationAlgorithm
.RS 4
Control how information about the commits in the local repository is sent when negotiating the contents of the packfile to be sent by the server\&. Set to "consecutive" to use an algorithm that walks over consecutive commits checking each one\&. Set to "skipping" to use an algorithm that skips commits in an effort to converge faster, but may result in a larger\-than\-necessary packfile; or set to "noop" to not send any information at all, which will almost certainly result in a larger\-than\-necessary packfile, but will skip the negotiation step\&. Set to "default" to override settings made previously and use the default behaviour\&. The default is normally "consecutive", but if
\fBfeature\&.experimental\fR
is true, then the default is "skipping"\&. Unknown values will cause
\fIgit fetch\fR
to error out\&.
.sp
See also the
\fB\-\-negotiate\-only\fR
and
\fB\-\-negotiation\-tip\fR
options to
\fBgit-fetch\fR(1)\&.
.RE
.PP
fetch\&.showForcedUpdates
.RS 4
Set to false to enable
\fB\-\-no\-show\-forced\-updates\fR
in
\fBgit-fetch\fR(1)
and
\fBgit-pull\fR(1)
commands\&. Defaults to true\&.
.RE
.PP
fetch\&.parallel
.RS 4
Specifies the maximal number of fetch operations to be run in parallel at a time (submodules, or remotes when the
\fB\-\-multiple\fR
option of
\fBgit-fetch\fR(1)
is in effect)\&.
.sp
A value of 0 will give some reasonable default\&. If unset, it defaults to 1\&.
.sp
For submodules, this setting can be overridden using the
\fBsubmodule\&.fetchJobs\fR
config setting\&.
.RE
.PP
fetch\&.writeCommitGraph
.RS 4
Set to true to write a commit\-graph after every
\fBgit\fR
\fBfetch\fR
command that downloads a pack\-file from a remote\&. Using the
\fB\-\-split\fR
option, most executions will create a very small commit\-graph file on top of the existing commit\-graph file(s)\&. Occasionally, these files will merge and the write may take longer\&. Having an updated commit\-graph file helps performance of many Git commands, including
\fBgit\fR
\fBmerge\-base\fR,
\fBgit\fR
\fBpush\fR
\fB\-f\fR, and
\fBgit\fR
\fBlog\fR
\fB\-\-graph\fR\&. Defaults to false\&.
.RE
.PP
fetch\&.bundleURI
.RS 4
This value stores a URI for downloading Git object data from a bundle URI before performing an incremental fetch from the origin Git server\&. This is similar to how the
\fB\-\-bundle\-uri\fR
option behaves in
\fBgit-clone\fR(1)\&.
\fBgit\fR
\fBclone\fR
\fB\-\-bundle\-uri\fR
will set the
\fBfetch\&.bundleURI\fR
value if the supplied bundle URI contains a bundle list that is organized for incremental fetches\&.
.sp
If you modify this value and your repository has a
\fBfetch\&.bundleCreationToken\fR
value, then remove that
\fBfetch\&.bundleCreationToken\fR
value before fetching from the new bundle URI\&.
.RE
.PP
fetch\&.bundleCreationToken
.RS 4
When using
\fBfetch\&.bundleURI\fR
to fetch incrementally from a bundle list that uses the "creationToken" heuristic, this config value stores the maximum
\fBcreationToken\fR
value of the downloaded bundles\&. This value is used to prevent downloading bundles in the future if the advertised
\fBcreationToken\fR
is not strictly larger than this value\&.
.sp
The creation token values are chosen by the provider serving the specific bundle URI\&. If you modify the URI at
\fBfetch\&.bundleURI\fR, then be sure to remove the value for the
\fBfetch\&.bundleCreationToken\fR
value before fetching\&.
.RE
.PP
filter\&.<driver>\&.clean
.RS 4
The command which is used to convert the content of a worktree file to a blob upon checkin\&. See
\fBgitattributes\fR(5)
for details\&.
.RE
.PP
filter\&.<driver>\&.smudge
.RS 4
The command which is used to convert the content of a blob object to a worktree file upon checkout\&. See
\fBgitattributes\fR(5)
for details\&.
.RE
.PP
format\&.attach
.RS 4
Enable multipart/mixed attachments as the default for
\fIformat\-patch\fR\&. The value can also be a double quoted string which will enable attachments as the default and set the value as the boundary\&. See the \-\-attach option in
\fBgit-format-patch\fR(1)\&. To countermand an earlier value, set it to an empty string\&.
.RE
.PP
format\&.from
.RS 4
Provides the default value for the
\fB\-\-from\fR
option to format\-patch\&. Accepts a boolean value, or a name and email address\&. If false, format\-patch defaults to
\fB\-\-no\-from\fR, using commit authors directly in the "From:" field of patch mails\&. If true, format\-patch defaults to
\fB\-\-from\fR, using your committer identity in the "From:" field of patch mails and including a "From:" field in the body of the patch mail if different\&. If set to a non\-boolean value, format\-patch uses that value instead of your committer identity\&. Defaults to false\&.
.RE
.PP
format\&.forceInBodyFrom
.RS 4
Provides the default value for the
\fB\-\-\fR[\fBno\-\fR]\fBforce\-in\-body\-from\fR
option to format\-patch\&. Defaults to false\&.
.RE
.PP
format\&.numbered
.RS 4
A boolean which can enable or disable sequence numbers in patch subjects\&. It defaults to "auto" which enables it only if there is more than one patch\&. It can be enabled or disabled for all messages by setting it to "true" or "false"\&. See \-\-numbered option in
\fBgit-format-patch\fR(1)\&.
.RE
.PP
format\&.headers
.RS 4
Additional email headers to include in a patch to be submitted by mail\&. See
\fBgit-format-patch\fR(1)\&.
.RE
.PP
format\&.to, format\&.cc
.RS 4
Additional recipients to include in a patch to be submitted by mail\&. See the \-\-to and \-\-cc options in
\fBgit-format-patch\fR(1)\&.
.RE
.PP
format\&.subjectPrefix
.RS 4
The default for format\-patch is to output files with the
\fI[PATCH]\fR
subject prefix\&. Use this variable to change that prefix\&.
.RE
.PP
format\&.coverFromDescription
.RS 4
The default mode for format\-patch to determine which parts of the cover letter will be populated using the branch\(cqs description\&. See the
\fB\-\-cover\-from\-description\fR
option in
\fBgit-format-patch\fR(1)\&.
.RE
.PP
format\&.signature
.RS 4
The default for format\-patch is to output a signature containing the Git version number\&. Use this variable to change that default\&. Set this variable to the empty string ("") to suppress signature generation\&.
.RE
.PP
format\&.signatureFile
.RS 4
Works just like format\&.signature except the contents of the file specified by this variable will be used as the signature\&.
.RE
.PP
format\&.suffix
.RS 4
The default for format\-patch is to output files with the suffix \&.\fBpatch\fR\&. Use this variable to change that suffix (make sure to include the dot if you want it)\&.
.RE
.PP
format\&.encodeEmailHeaders
.RS 4
Encode email headers that have non\-ASCII characters with "Q\-encoding" (described in RFC 2047) for email transmission\&. Defaults to true\&.
.RE
.PP
format\&.pretty
.RS 4
The default pretty format for log/show/whatchanged command\&. See
\fBgit-log\fR(1),
\fBgit-show\fR(1),
\fBgit-whatchanged\fR(1)\&.
.RE
.PP
format\&.thread
.RS 4
The default threading style for
\fIgit format\-patch\fR\&. Can be a boolean value, or
\fBshallow\fR
or
\fBdeep\fR\&.
\fBshallow\fR
threading makes every mail a reply to the head of the series, where the head is chosen from the cover letter, the
\fB\-\-in\-reply\-to\fR, and the first patch mail, in this order\&.
\fBdeep\fR
threading makes every mail a reply to the previous one\&. A true boolean value is the same as
\fBshallow\fR, and a false value disables threading\&.
.RE
.PP
format\&.signOff
.RS 4
A boolean value which lets you enable the
\fB\-s/\-\-signoff\fR
option of format\-patch by default\&.
\fBNote:\fR
Adding the
\fBSigned\-off\-by\fR
trailer to a patch should be a conscious act and means that you certify you have the rights to submit this work under the same open source license\&. Please see the
\fISubmittingPatches\fR
document for further discussion\&.
.RE
.PP
format\&.coverLetter
.RS 4
A boolean that controls whether to generate a cover\-letter when format\-patch is invoked, but in addition can be set to "auto", to generate a cover\-letter only when there\(cqs more than one patch\&. Default is false\&.
.RE
.PP
format\&.outputDirectory
.RS 4
Set a custom directory to store the resulting files instead of the current working directory\&. All directory components will be created\&.
.RE
.PP
format\&.filenameMaxLength
.RS 4
The maximum length of the output filenames generated by the
\fBformat\-patch\fR
command; defaults to 64\&. Can be overridden by the
\fB\-\-filename\-max\-length=\fR\fI<n>\fR
command line option\&.
.RE
.PP
format\&.useAutoBase
.RS 4
A boolean value which lets you enable the
\fB\-\-base=auto\fR
option of format\-patch by default\&. Can also be set to "whenAble" to allow enabling
\fB\-\-base=auto\fR
if a suitable base is available, but to skip adding base info otherwise without the format dying\&.
.RE
.PP
format\&.notes
.RS 4
Provides the default value for the
\fB\-\-notes\fR
option to format\-patch\&. Accepts a boolean value, or a ref which specifies where to get notes\&. If false, format\-patch defaults to
\fB\-\-no\-notes\fR\&. If true, format\-patch defaults to
\fB\-\-notes\fR\&. If set to a non\-boolean value, format\-patch defaults to
\fB\-\-notes=\fR\fI<ref>\fR, where
\fBref\fR
is the non\-boolean value\&. Defaults to false\&.
.sp
If one wishes to use the ref
\fBrefs/notes/true\fR, please use that literal instead\&.
.sp
This configuration can be specified multiple times in order to allow multiple notes refs to be included\&. In that case, it will behave similarly to multiple
\fB\-\-\fR[\fBno\-\fR]\fBnotes\fR[\fB=\fR] options passed in\&. That is, a value of
\fBtrue\fR
will show the default notes, a value of
\fI<ref>\fR
will also show notes from that notes ref and a value of
\fBfalse\fR
will negate previous configurations and not show notes\&.
.sp
For example,
.sp
.if n \{\
.RS 4
.\}
.nf
[format]
        notes = true
        notes = foo
        notes = false
        notes = bar
.fi
.if n \{\
.RE
.\}
.sp
will only show notes from
\fBrefs/notes/bar\fR\&.
.RE
.PP
format\&.mboxrd
.RS 4
A boolean value which enables the robust "mboxrd" format when
\fB\-\-stdout\fR
is in use to escape "^>+From " lines\&.
.RE
.PP
format\&.noprefix
.RS 4
If set, do not show any source or destination prefix in patches\&. This is equivalent to the
\fBdiff\&.noprefix\fR
option used by
\fBgit\fR
\fBdiff\fR
(but which is not respected by
\fBformat\-patch\fR)\&. Note that by setting this, the receiver of any patches you generate will have to apply them using the
\fB\-p0\fR
option\&.
.RE
.PP
fsck\&.<msg\-id>
.RS 4
During fsck git may find issues with legacy data which wouldn\(cqt be generated by current versions of git, and which wouldn\(cqt be sent over the wire if
\fBtransfer\&.fsckObjects\fR
was set\&. This feature is intended to support working with legacy repositories containing such data\&.
.sp
Setting
\fBfsck\&.\fR\fI<msg\-id>\fR
will be picked up by
\fBgit-fsck\fR(1), but to accept pushes of such data set
\fBreceive\&.fsck\&.\fR\fI<msg\-id>\fR
instead, or to clone or fetch it set
\fBfetch\&.fsck\&.\fR\fI<msg\-id>\fR\&.
.sp
The rest of the documentation discusses
\fBfsck\&.*\fR
for brevity, but the same applies for the corresponding
\fBreceive\&.fsck\&.*\fR
and
\fBfetch\&.fsck\&.*\fR\&. variables\&.
.sp
Unlike variables like
\fBcolor\&.ui\fR
and
\fBcore\&.editor\fR, the
\fBreceive\&.fsck\&.\fR\fI<msg\-id>\fR
and
\fBfetch\&.fsck\&.\fR\fI<msg\-id>\fR
variables will not fall back on the
\fBfsck\&.\fR\fI<msg\-id>\fR
configuration if they aren\(cqt set\&. To uniformly configure the same fsck settings in different circumstances, all three of them must be set to the same values\&.
.sp
When
\fBfsck\&.\fR\fI<msg\-id>\fR
is set, errors can be switched to warnings and vice versa by configuring the
\fBfsck\&.\fR\fI<msg\-id>\fR
setting where the
\fI<msg\-id>\fR
is the fsck message ID and the value is one of
\fBerror\fR,
\fBwarn\fR
or
\fBignore\fR\&. For convenience, fsck prefixes the error/warning with the message ID, e\&.g\&. "missingEmail: invalid author/committer line \- missing email" means that setting
\fBfsck\&.missingEmail\fR
\fB=\fR
\fBignore\fR
will hide that issue\&.
.sp
In general, it is better to enumerate existing objects with problems with
\fBfsck\&.skipList\fR, instead of listing the kind of breakages these problematic objects share to be ignored, as doing the latter will allow new instances of the same breakages go unnoticed\&.
.sp
Setting an unknown
\fBfsck\&.\fR\fI<msg\-id>\fR
value will cause fsck to die, but doing the same for
\fBreceive\&.fsck\&.\fR\fI<msg\-id>\fR
and
\fBfetch\&.fsck\&.\fR\fI<msg\-id>\fR
will only cause git to warn\&.
.sp
See the
\fBFsck\fR
\fBMessages\fR
section of
\fBgit-fsck\fR(1)
for supported values of
\fI<msg\-id>\fR\&.
.RE
.PP
fsck\&.skipList
.RS 4
The path to a list of object names (i\&.e\&. one unabbreviated SHA\-1 per line) that are known to be broken in a non\-fatal way and should be ignored\&. On versions of Git 2\&.20 and later, comments (\fI#\fR), empty lines, and any leading and trailing whitespace are ignored\&. Everything but a SHA\-1 per line will error out on older versions\&.
.sp
This feature is useful when an established project should be accepted despite early commits containing errors that can be safely ignored, such as invalid committer email addresses\&. Note: corrupt objects cannot be skipped with this setting\&.
.sp
Like
\fBfsck\&.\fR\fI<msg\-id>\fR
this variable has corresponding
\fBreceive\&.fsck\&.skipList\fR
and
\fBfetch\&.fsck\&.skipList\fR
variants\&.
.sp
Unlike variables like
\fBcolor\&.ui\fR
and
\fBcore\&.editor\fR
the
\fBreceive\&.fsck\&.skipList\fR
and
\fBfetch\&.fsck\&.skipList\fR
variables will not fall back on the
\fBfsck\&.skipList\fR
configuration if they aren\(cqt set\&. To uniformly configure the same fsck settings in different circumstances, all three of them must be set to the same values\&.
.sp
Older versions of Git (before 2\&.20) documented that the object names list should be sorted\&. This was never a requirement; the object names could appear in any order, but when reading the list we tracked whether the list was sorted for the purposes of an internal binary search implementation, which could save itself some work with an already sorted list\&. Unless you had a humongous list there was no reason to go out of your way to pre\-sort the list\&. After Git version 2\&.20 a hash implementation is used instead, so there\(cqs now no reason to pre\-sort the list\&.
.RE
.PP
fsmonitor\&.allowRemote
.RS 4
By default, the fsmonitor daemon refuses to work with network\-mounted repositories\&. Setting
\fBfsmonitor\&.allowRemote\fR
to
\fBtrue\fR
overrides this behavior\&. Only respected when
\fBcore\&.fsmonitor\fR
is set to
\fBtrue\fR\&.
.RE
.PP
fsmonitor\&.socketDir
.RS 4
This Mac OS\-specific option, if set, specifies the directory in which to create the Unix domain socket used for communication between the fsmonitor daemon and various Git commands\&. The directory must reside on a native Mac OS filesystem\&. Only respected when
\fBcore\&.fsmonitor\fR
is set to
\fBtrue\fR\&.
.RE
.PP
gc\&.aggressiveDepth
.RS 4
The depth parameter used in the delta compression algorithm used by
\fIgit gc \-\-aggressive\fR\&. This defaults to 50, which is the default for the
\fB\-\-depth\fR
option when
\fB\-\-aggressive\fR
isn\(cqt in use\&.
.sp
See the documentation for the
\fB\-\-depth\fR
option in
\fBgit-repack\fR(1)
for more details\&.
.RE
.PP
gc\&.aggressiveWindow
.RS 4
The window size parameter used in the delta compression algorithm used by
\fIgit gc \-\-aggressive\fR\&. This defaults to 250, which is a much more aggressive window size than the default
\fB\-\-window\fR
of 10\&.
.sp
See the documentation for the
\fB\-\-window\fR
option in
\fBgit-repack\fR(1)
for more details\&.
.RE
.PP
gc\&.auto
.RS 4
When there are approximately more than this many loose objects in the repository,
\fBgit\fR
\fBgc\fR
\fB\-\-auto\fR
will pack them\&. Some Porcelain commands use this command to perform a light\-weight garbage collection from time to time\&. The default value is 6700\&.
.sp
Setting this to 0 disables not only automatic packing based on the number of loose objects, but also any other heuristic
\fBgit\fR
\fBgc\fR
\fB\-\-auto\fR
will otherwise use to determine if there\(cqs work to do, such as
\fBgc\&.autoPackLimit\fR\&.
.RE
.PP
gc\&.autoPackLimit
.RS 4
When there are more than this many packs that are not marked with
\fB*\&.keep\fR
file in the repository,
\fBgit\fR
\fBgc\fR
\fB\-\-auto\fR
consolidates them into one larger pack\&. The default value is 50\&. Setting this to 0 disables it\&. Setting
\fBgc\&.auto\fR
to 0 will also disable this\&.
.sp
See the
\fBgc\&.bigPackThreshold\fR
configuration variable below\&. When in use, it\(cqll affect how the auto pack limit works\&.
.RE
.PP
gc\&.autoDetach
.RS 4
Make
\fBgit\fR
\fBgc\fR
\fB\-\-auto\fR
return immediately and run in the background if the system supports it\&. Default is true\&. This config variable acts as a fallback in case
\fBmaintenance\&.autoDetach\fR
is not set\&.
.RE
.PP
gc\&.bigPackThreshold
.RS 4
If non\-zero, all non\-cruft packs larger than this limit are kept when
\fBgit\fR
\fBgc\fR
is run\&. This is very similar to
\fB\-\-keep\-largest\-pack\fR
except that all non\-cruft packs that meet the threshold are kept, not just the largest pack\&. Defaults to zero\&. Common unit suffixes of
\fIk\fR,
\fIm\fR, or
\fIg\fR
are supported\&.
.sp
Note that if the number of kept packs is more than gc\&.autoPackLimit, this configuration variable is ignored, all packs except the base pack will be repacked\&. After this the number of packs should go below gc\&.autoPackLimit and gc\&.bigPackThreshold should be respected again\&.
.sp
If the amount of memory estimated for
\fBgit\fR
\fBrepack\fR
to run smoothly is not available and
\fBgc\&.bigPackThreshold\fR
is not set, the largest pack will also be excluded (this is the equivalent of running
\fBgit\fR
\fBgc\fR
with
\fB\-\-keep\-largest\-pack\fR)\&.
.RE
.PP
gc\&.writeCommitGraph
.RS 4
If true, then gc will rewrite the commit\-graph file when
\fBgit-gc\fR(1)
is run\&. When using
\fBgit\fR
\fBgc\fR
\fB\-\-auto\fR
the commit\-graph will be updated if housekeeping is required\&. Default is true\&. See
\fBgit-commit-graph\fR(1)
for details\&.
.RE
.PP
gc\&.logExpiry
.RS 4
If the file gc\&.log exists, then
\fBgit\fR
\fBgc\fR
\fB\-\-auto\fR
will print its content and exit with status zero instead of running unless that file is more than
\fIgc\&.logExpiry\fR
old\&. Default is "1\&.day"\&. See
\fBgc\&.pruneExpire\fR
for more ways to specify its value\&.
.RE
.PP
gc\&.packRefs
.RS 4
Running
\fBgit\fR
\fBpack\-refs\fR
in a repository renders it unclonable by Git versions prior to 1\&.5\&.1\&.2 over dumb transports such as HTTP\&. This variable determines whether
\fIgit gc\fR
runs
\fBgit\fR
\fBpack\-refs\fR\&. This can be set to
\fBnotbare\fR
to enable it within all non\-bare repos or it can be set to a boolean value\&. The default is
\fBtrue\fR\&.
.RE
.PP
gc\&.cruftPacks
.RS 4
Store unreachable objects in a cruft pack (see
\fBgit-repack\fR(1)) instead of as loose objects\&. The default is
\fBtrue\fR\&.
.RE
.PP
gc\&.maxCruftSize
.RS 4
Limit the size of new cruft packs when repacking\&. When specified in addition to
\fB\-\-max\-cruft\-size\fR, the command line option takes priority\&. See the
\fB\-\-max\-cruft\-size\fR
option of
\fBgit-repack\fR(1)\&.
.RE
.PP
gc\&.pruneExpire
.RS 4
When
\fIgit gc\fR
is run, it will call
\fIprune \-\-expire 2\&.weeks\&.ago\fR
(and
\fIrepack \-\-cruft \-\-cruft\-expiration 2\&.weeks\&.ago\fR
if using cruft packs via
\fBgc\&.cruftPacks\fR
or
\fB\-\-cruft\fR)\&. Override the grace period with this config variable\&. The value "now" may be used to disable this grace period and always prune unreachable objects immediately, or "never" may be used to suppress pruning\&. This feature helps prevent corruption when
\fIgit gc\fR
runs concurrently with another process writing to the repository; see the "NOTES" section of
\fBgit-gc\fR(1)\&.
.RE
.PP
gc\&.worktreePruneExpire
.RS 4
When
\fIgit gc\fR
is run, it calls
\fIgit worktree prune \-\-expire 3\&.months\&.ago\fR\&. This config variable can be used to set a different grace period\&. The value "now" may be used to disable the grace period and prune
\fB$GIT_DIR/worktrees\fR
immediately, or "never" may be used to suppress pruning\&.
.RE
.PP
gc\&.reflogExpire, gc\&.<pattern>\&.reflogExpire
.RS 4
\fIgit reflog expire\fR
removes reflog entries older than this time; defaults to 90 days\&. The value "now" expires all entries immediately, and "never" suppresses expiration altogether\&. With "<pattern>" (e\&.g\&. "refs/stash") in the middle the setting applies only to the refs that match the <pattern>\&.
.RE
.PP
gc\&.reflogExpireUnreachable, gc\&.<pattern>\&.reflogExpireUnreachable
.RS 4
\fIgit reflog expire\fR
removes reflog entries older than this time and are not reachable from the current tip; defaults to 30 days\&. The value "now" expires all entries immediately, and "never" suppresses expiration altogether\&. With "<pattern>" (e\&.g\&. "refs/stash") in the middle, the setting applies only to the refs that match the <pattern>\&.
.sp
These types of entries are generally created as a result of using
\fBgit\fR
\fBcommit\fR
\fB\-\-amend\fR
or
\fBgit\fR
\fBrebase\fR
and are the commits prior to the amend or rebase occurring\&. Since these changes are not part of the current project most users will want to expire them sooner, which is why the default is more aggressive than
\fBgc\&.reflogExpire\fR\&.
.RE
.PP
gc\&.recentObjectsHook
.RS 4
When considering whether or not to remove an object (either when generating a cruft pack or storing unreachable objects as loose), use the shell to execute the specified command(s)\&. Interpret their output as object IDs which Git will consider as "recent", regardless of their age\&. By treating their mtimes as "now", any objects (and their descendants) mentioned in the output will be kept regardless of their true age\&.
.sp
Output must contain exactly one hex object ID per line, and nothing else\&. Objects which cannot be found in the repository are ignored\&. Multiple hooks are supported, but all must exit successfully, else the operation (either generating a cruft pack or unpacking unreachable objects) will be halted\&.
.RE
.PP
gc\&.repackFilter
.RS 4
When repacking, use the specified filter to move certain objects into a separate packfile\&. See the
\fB\-\-filter=\fR\fI<filter\-spec>\fR
option of
\fBgit-repack\fR(1)\&.
.RE
.PP
gc\&.repackFilterTo
.RS 4
When repacking and using a filter, see
\fBgc\&.repackFilter\fR, the specified location will be used to create the packfile containing the filtered out objects\&.
\fBWARNING:\fR
The specified location should be accessible, using for example the Git alternates mechanism, otherwise the repo could be considered corrupt by Git as it might not be able to access the objects in that packfile\&. See the
\fB\-\-filter\-to=\fR\fI<dir>\fR
option of
\fBgit-repack\fR(1)
and the
\fBobjects/info/alternates\fR
section of
\fBgitrepository-layout\fR(5)\&.
.RE
.PP
gc\&.rerereResolved
.RS 4
Records of conflicted merge you resolved earlier are kept for this many days when
\fIgit rerere gc\fR
is run\&. You can also use more human\-readable "1\&.month\&.ago", etc\&. The default is 60 days\&. See
\fBgit-rerere\fR(1)\&.
.RE
.PP
gc\&.rerereUnresolved
.RS 4
Records of conflicted merge you have not resolved are kept for this many days when
\fIgit rerere gc\fR
is run\&. You can also use more human\-readable "1\&.month\&.ago", etc\&. The default is 15 days\&. See
\fBgit-rerere\fR(1)\&.
.RE
.PP
gitcvs\&.commitMsgAnnotation
.RS 4
Append this string to each commit message\&. Set to empty string to disable this feature\&. Defaults to "via git\-CVS emulator"\&.
.RE
.PP
gitcvs\&.enabled
.RS 4
Whether the CVS server interface is enabled for this repository\&. See
\fBgit-cvsserver\fR(1)\&.
.RE
.PP
gitcvs\&.logFile
.RS 4
Path to a log file where the CVS server interface well\&...\: logs various stuff\&. See
\fBgit-cvsserver\fR(1)\&.
.RE
.PP
gitcvs\&.usecrlfattr
.RS 4
If true, the server will look up the end\-of\-line conversion attributes for files to determine the
\fB\-k\fR
modes to use\&. If the attributes force Git to treat a file as text, the
\fB\-k\fR
mode will be left blank so CVS clients will treat it as text\&. If they suppress text conversion, the file will be set with
\fI\-kb\fR
mode, which suppresses any newline munging the client might otherwise do\&. If the attributes do not allow the file type to be determined, then
\fBgitcvs\&.allBinary\fR
is used\&. See
\fBgitattributes\fR(5)\&.
.RE
.PP
gitcvs\&.allBinary
.RS 4
This is used if
\fBgitcvs\&.usecrlfattr\fR
does not resolve the correct
\fI\-kb\fR
mode to use\&. If true, all unresolved files are sent to the client in mode
\fI\-kb\fR\&. This causes the client to treat them as binary files, which suppresses any newline munging it otherwise might do\&. Alternatively, if it is set to "guess", then the contents of the file are examined to decide if it is binary, similar to
\fBcore\&.autocrlf\fR\&.
.RE
.PP
gitcvs\&.dbName
.RS 4
Database used by git\-cvsserver to cache revision information derived from the Git repository\&. The exact meaning depends on the used database driver, for SQLite (which is the default driver) this is a filename\&. Supports variable substitution (see
\fBgit-cvsserver\fR(1)
for details)\&. May not contain semicolons (;)\&. Default:
\fI%Ggitcvs\&.%m\&.sqlite\fR
.RE
.PP
gitcvs\&.dbDriver
.RS 4
Used Perl DBI driver\&. You can specify any available driver for this here, but it might not work\&. git\-cvsserver is tested with
\fIDBD::SQLite\fR, reported to work with
\fIDBD::Pg\fR, and reported
\fBnot\fR
to work with
\fIDBD::mysql\fR\&. Experimental feature\&. May not contain double colons (\fB:\fR)\&. Default:
\fISQLite\fR\&. See
\fBgit-cvsserver\fR(1)\&.
.RE
.PP
gitcvs\&.dbUser, gitcvs\&.dbPass
.RS 4
Database user and password\&. Only useful if setting
\fBgitcvs\&.dbDriver\fR, since SQLite has no concept of database users and/or passwords\&.
\fIgitcvs\&.dbUser\fR
supports variable substitution (see
\fBgit-cvsserver\fR(1)
for details)\&.
.RE
.PP
gitcvs\&.dbTableNamePrefix
.RS 4
Database table name prefix\&. Prepended to the names of any database tables used, allowing a single database to be used for several repositories\&. Supports variable substitution (see
\fBgit-cvsserver\fR(1)
for details)\&. Any non\-alphabetic characters will be replaced with underscores\&.
.RE
.sp
All gitcvs variables except for \fBgitcvs\&.usecrlfattr\fR and \fBgitcvs\&.allBinary\fR can also be specified as \fIgitcvs\&.<access_method>\&.<varname>\fR (where \fIaccess_method\fR is one of "ext" and "pserver") to make them apply only for the given access method\&.
.PP
gitweb\&.category, gitweb\&.description, gitweb\&.owner, gitweb\&.url
.RS 4
See
\fBgitweb\fR(1)
for description\&.
.RE
.PP
gitweb\&.avatar, gitweb\&.blame, gitweb\&.grep, gitweb\&.highlight, gitweb\&.patches, gitweb\&.pickaxe, gitweb\&.remote_heads, gitweb\&.showSizes, gitweb\&.snapshot
.RS 4
See
\fBgitweb.conf\fR(5)
for description\&.
.RE
.PP
gpg\&.program
.RS 4
Pathname of the program to use instead of "\fBgpg\fR" when making or verifying a PGP signature\&. The program must support the same command\-line interface as GPG, namely, to verify a detached signature, "\fBgpg\fR
\fB\-\-verify\fR
\fB$signature\fR
\fB\-\fR
<$file" is run, and the program is expected to signal a good signature by exiting with code 0\&. To generate an ASCII\-armored detached signature, the standard input of "\fBgpg\fR
\fB\-bsau\fR
\fB$key\fR" is fed with the contents to be signed, and the program is expected to send the result to its standard output\&.
.RE
.PP
gpg\&.format
.RS 4
Specifies which key format to use when signing with
\fB\-\-gpg\-sign\fR\&. Default is "openpgp"\&. Other possible values are "x509", "ssh"\&.
.sp
See
\fBgitformat-signature\fR(5)
for the signature format, which differs based on the selected
\fBgpg\&.format\fR\&.
.RE
.PP
gpg\&.<format>\&.program
.RS 4
Use this to customize the program used for the signing format you chose\&. (see
\fBgpg\&.program\fR
and
\fBgpg\&.format\fR)
\fBgpg\&.program\fR
can still be used as a legacy synonym for
\fBgpg\&.openpgp\&.program\fR\&. The default value for
\fBgpg\&.x509\&.program\fR
is "gpgsm" and
\fBgpg\&.ssh\&.program\fR
is "ssh\-keygen"\&.
.RE
.PP
gpg\&.minTrustLevel
.RS 4
Specifies a minimum trust level for signature verification\&. If this option is unset, then signature verification for merge operations requires a key with at least
\fBmarginal\fR
trust\&. Other operations that perform signature verification require a key with at least
\fBundefined\fR
trust\&. Setting this option overrides the required trust\-level for all operations\&. Supported values, in increasing order of significance:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBundefined\fR
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBnever\fR
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBmarginal\fR
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBfully\fR
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBultimate\fR
.RE
.RE
.PP
gpg\&.ssh\&.defaultKeyCommand
.RS 4
This command will be run when user\&.signingkey is not set and a ssh signature is requested\&. On successful exit a valid ssh public key prefixed with
\fBkey::\fR
is expected in the first line of its output\&. This allows for a script doing a dynamic lookup of the correct public key when it is impractical to statically configure
\fBuser\&.signingKey\fR\&. For example when keys or SSH Certificates are rotated frequently or selection of the right key depends on external factors unknown to git\&.
.RE
.PP
gpg\&.ssh\&.allowedSignersFile
.RS 4
A file containing ssh public keys which you are willing to trust\&. The file consists of one or more lines of principals followed by an ssh public key\&. e\&.g\&.:
\fBuser1@example\&.com\fR,user2@example\&.\fBcom\fR
\fBssh\-rsa\fR
\fBAAAAX1\&.\&.\fR\&. See ssh\-keygen(1) "ALLOWED SIGNERS" for details\&. The principal is only used to identify the key and is available when verifying a signature\&.
.sp
SSH has no concept of trust levels like gpg does\&. To be able to differentiate between valid signatures and trusted signatures the trust level of a signature verification is set to
\fBfully\fR
when the public key is present in the allowedSignersFile\&. Otherwise the trust level is
\fBundefined\fR
and git verify\-commit/tag will fail\&.
.sp
This file can be set to a location outside of the repository and every developer maintains their own trust store\&. A central repository server could generate this file automatically from ssh keys with push access to verify the code against\&. In a corporate setting this file is probably generated at a global location from automation that already handles developer ssh keys\&.
.sp
A repository that only allows signed commits can store the file in the repository itself using a path relative to the top\-level of the working tree\&. This way only committers with an already valid key can add or change keys in the keyring\&.
.sp
Since OpensSSH 8\&.8 this file allows specifying a key lifetime using valid\-after & valid\-before options\&. Git will mark signatures as valid if the signing key was valid at the time of the signature\(cqs creation\&. This allows users to change a signing key without invalidating all previously made signatures\&.
.sp
Using a SSH CA key with the cert\-authority option (see ssh\-keygen(1) "CERTIFICATES") is also valid\&.
.RE
.PP
gpg\&.ssh\&.revocationFile
.RS 4
Either a SSH KRL or a list of revoked public keys (without the principal prefix)\&. See ssh\-keygen(1) for details\&. If a public key is found in this file then it will always be treated as having trust level "never" and signatures will show as invalid\&.
.RE
.PP
grep\&.lineNumber
.RS 4
If set to true, enable
\fB\-n\fR
option by default\&.
.RE
.PP
grep\&.column
.RS 4
If set to true, enable the
\fB\-\-column\fR
option by default\&.
.RE
.PP
grep\&.patternType
.RS 4
Set the default matching behavior\&. Using a value of
\fIbasic\fR,
\fIextended\fR,
\fIfixed\fR, or
\fIperl\fR
will enable the
\fB\-\-basic\-regexp\fR,
\fB\-\-extended\-regexp\fR,
\fB\-\-fixed\-strings\fR, or
\fB\-\-perl\-regexp\fR
option accordingly, while the value
\fIdefault\fR
will use the
\fBgrep\&.extendedRegexp\fR
option to choose between
\fIbasic\fR
and
\fIextended\fR\&.
.RE
.PP
grep\&.extendedRegexp
.RS 4
If set to true, enable
\fB\-\-extended\-regexp\fR
option by default\&. This option is ignored when the
\fBgrep\&.patternType\fR
option is set to a value other than
\fIdefault\fR\&.
.RE
.PP
grep\&.threads
.RS 4
Number of grep worker threads to use\&. If unset (or set to 0), Git will use as many threads as the number of logical cores available\&.
.RE
.PP
grep\&.fullName
.RS 4
If set to true, enable
\fB\-\-full\-name\fR
option by default\&.
.RE
.PP
grep\&.fallbackToNoIndex
.RS 4
If set to true, fall back to
\fBgit\fR
\fBgrep\fR
\fB\-\-no\-index\fR
if
\fBgit\fR
\fBgrep\fR
is executed outside of a git repository\&. Defaults to false\&.
.RE
.PP
gui\&.commitMsgWidth
.RS 4
Defines how wide the commit message window is in the
\fBgit-gui\fR(1)\&. "75" is the default\&.
.RE
.PP
gui\&.diffContext
.RS 4
Specifies how many context lines should be used in calls to diff made by the
\fBgit-gui\fR(1)\&. The default is "5"\&.
.RE
.PP
gui\&.displayUntracked
.RS 4
Determines if
\fBgit-gui\fR(1)
shows untracked files in the file list\&. The default is "true"\&.
.RE
.PP
gui\&.encoding
.RS 4
Specifies the default character encoding to use for displaying of file contents in
\fBgit-gui\fR(1)
and
\fBgitk\fR(1)\&. It can be overridden by setting the
\fIencoding\fR
attribute for relevant files (see
\fBgitattributes\fR(5))\&. If this option is not set, the tools default to the locale encoding\&.
.RE
.PP
gui\&.matchTrackingBranch
.RS 4
Determines if new branches created with
\fBgit-gui\fR(1)
should default to tracking remote branches with matching names or not\&. Default: "false"\&.
.RE
.PP
gui\&.newBranchTemplate
.RS 4
Is used as a suggested name when creating new branches using the
\fBgit-gui\fR(1)\&.
.RE
.PP
gui\&.pruneDuringFetch
.RS 4
"true" if
\fBgit-gui\fR(1)
should prune remote\-tracking branches when performing a fetch\&. The default value is "false"\&.
.RE
.PP
gui\&.trustmtime
.RS 4
Determines if
\fBgit-gui\fR(1)
should trust the file modification timestamp or not\&. By default the timestamps are not trusted\&.
.RE
.PP
gui\&.spellingDictionary
.RS 4
Specifies the dictionary used for spell checking commit messages in the
\fBgit-gui\fR(1)\&. When set to "none" spell checking is turned off\&.
.RE
.PP
gui\&.fastCopyBlame
.RS 4
If true,
\fIgit gui blame\fR
uses
\fB\-C\fR
instead of
\fB\-C\fR
\fB\-C\fR
for original location detection\&. It makes blame significantly faster on huge repositories at the expense of less thorough copy detection\&.
.RE
.PP
gui\&.copyBlameThreshold
.RS 4
Specifies the threshold to use in
\fIgit gui blame\fR
original location detection, measured in alphanumeric characters\&. See the
\fBgit-blame\fR(1)
manual for more information on copy detection\&.
.RE
.PP
gui\&.blamehistoryctx
.RS 4
Specifies the radius of history context in days to show in
\fBgitk\fR(1)
for the selected commit, when the
\fBShow\fR
\fBHistory\fR
\fBContext\fR
menu item is invoked from
\fIgit gui blame\fR\&. If this variable is set to zero, the whole history is shown\&.
.RE
.PP
guitool\&.<name>\&.cmd
.RS 4
Specifies the shell command line to execute when the corresponding item of the
\fBgit-gui\fR(1)
\fBTools\fR
menu is invoked\&. This option is mandatory for every tool\&. The command is executed from the root of the working directory, and in the environment it receives the name of the tool as
\fBGIT_GUITOOL\fR, the name of the currently selected file as
\fIFILENAME\fR, and the name of the current branch as
\fICUR_BRANCH\fR
(if the head is detached,
\fICUR_BRANCH\fR
is empty)\&.
.RE
.PP
guitool\&.<name>\&.needsFile
.RS 4
Run the tool only if a diff is selected in the GUI\&. It guarantees that
\fIFILENAME\fR
is not empty\&.
.RE
.PP
guitool\&.<name>\&.noConsole
.RS 4
Run the command silently, without creating a window to display its output\&.
.RE
.PP
guitool\&.<name>\&.noRescan
.RS 4
Don\(cqt rescan the working directory for changes after the tool finishes execution\&.
.RE
.PP
guitool\&.<name>\&.confirm
.RS 4
Show a confirmation dialog before actually running the tool\&.
.RE
.PP
guitool\&.<name>\&.argPrompt
.RS 4
Request a string argument from the user, and pass it to the tool through the
\fBARGS\fR
environment variable\&. Since requesting an argument implies confirmation, the
\fIconfirm\fR
option has no effect if this is enabled\&. If the option is set to
\fItrue\fR,
\fIyes\fR, or
\fI1\fR, the dialog uses a built\-in generic prompt; otherwise the exact value of the variable is used\&.
.RE
.PP
guitool\&.<name>\&.revPrompt
.RS 4
Request a single valid revision from the user, and set the
\fBREVISION\fR
environment variable\&. In other aspects this option is similar to
\fIargPrompt\fR, and can be used together with it\&.
.RE
.PP
guitool\&.<name>\&.revUnmerged
.RS 4
Show only unmerged branches in the
\fIrevPrompt\fR
subdialog\&. This is useful for tools similar to merge or rebase, but not for things like checkout or reset\&.
.RE
.PP
guitool\&.<name>\&.title
.RS 4
Specifies the title to use for the prompt dialog\&. The default is the tool name\&.
.RE
.PP
guitool\&.<name>\&.prompt
.RS 4
Specifies the general prompt string to display at the top of the dialog, before subsections for
\fIargPrompt\fR
and
\fIrevPrompt\fR\&. The default value includes the actual command\&.
.RE
.PP
help\&.browser
.RS 4
Specify the browser that will be used to display help in the
\fIweb\fR
format\&. See
\fBgit-help\fR(1)\&.
.RE
.PP
help\&.format
.RS 4
Override the default help format used by
\fBgit-help\fR(1)\&. Values
\fIman\fR,
\fIinfo\fR,
\fIweb\fR
and
\fIhtml\fR
are supported\&.
\fIman\fR
is the default\&.
\fIweb\fR
and
\fIhtml\fR
are the same\&.
.RE
.PP
help\&.autoCorrect
.RS 4
If git detects typos and can identify exactly one valid command similar to the error, git will try to suggest the correct command or even run the suggestion automatically\&. Possible config values are:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
0, "false", "off", "no", "show": show the suggested command (default)\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
1, "true", "on", "yes", "immediate": run the suggested command immediately\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
positive number > 1: run the suggested command after specified deciseconds (0\&.1 sec)\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
"never": don\(cqt run or show any suggested command\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
"prompt": show the suggestion and prompt for confirmation to run the command\&.
.RE
.RE
.PP
help\&.htmlPath
.RS 4
Specify the path where the HTML documentation resides\&. File system paths and URLs are supported\&. HTML pages will be prefixed with this path when help is displayed in the
\fIweb\fR
format\&. This defaults to the documentation path of your Git installation\&.
.RE
.PP
http\&.proxy
.RS 4
Override the HTTP proxy, normally configured using the
\fIhttp_proxy\fR,
\fIhttps_proxy\fR, and
\fIall_proxy\fR
environment variables (see
\fBcurl\fR(\fB1\fR))\&. In addition to the syntax understood by curl, it is possible to specify a proxy string with a user name but no password, in which case git will attempt to acquire one in the same way it does for other credentials\&. See
\fBgitcredentials\fR(7)
for more information\&. The syntax thus is
\fI[protocol://][user[:password]@]proxyhost[:port][/path]\fR\&. This can be overridden on a per\-remote basis; see remote\&.<name>\&.proxy
.sp
Any proxy, however configured, must be completely transparent and must not modify, transform, or buffer the request or response in any way\&. Proxies which are not completely transparent are known to cause various forms of breakage with Git\&.
.RE
.PP
http\&.proxyAuthMethod
.RS 4
Set the method with which to authenticate against the HTTP proxy\&. This only takes effect if the configured proxy string contains a user name part (i\&.e\&. is of the form
\fIuser@host\fR
or
\fIuser@host:port\fR)\&. This can be overridden on a per\-remote basis; see
\fBremote\&.\fR\fI<name>\fR\fB\&.proxyAuthMethod\fR\&. Both can be overridden by the
\fBGIT_HTTP_PROXY_AUTHMETHOD\fR
environment variable\&. Possible values are:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBanyauth\fR
\- Automatically pick a suitable authentication method\&. It is assumed that the proxy answers an unauthenticated request with a 407 status code and one or more Proxy\-authenticate headers with supported authentication methods\&. This is the default\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBbasic\fR
\- HTTP Basic authentication
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBdigest\fR
\- HTTP Digest authentication; this prevents the password from being transmitted to the proxy in clear text
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBnegotiate\fR
\- GSS\-Negotiate authentication (compare the \-\-negotiate option of
\fBcurl\fR(\fB1\fR))
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBntlm\fR
\- NTLM authentication (compare the \-\-ntlm option of
\fBcurl\fR(\fB1\fR))
.RE
.RE
.PP
http\&.proxySSLCert
.RS 4
The pathname of a file that stores a client certificate to use to authenticate with an HTTPS proxy\&. Can be overridden by the
\fBGIT_PROXY_SSL_CERT\fR
environment variable\&.
.RE
.PP
http\&.proxySSLKey
.RS 4
The pathname of a file that stores a private key to use to authenticate with an HTTPS proxy\&. Can be overridden by the
\fBGIT_PROXY_SSL_KEY\fR
environment variable\&.
.RE
.PP
http\&.proxySSLCertPasswordProtected
.RS 4
Enable Git\(cqs password prompt for the proxy SSL certificate\&. Otherwise OpenSSL will prompt the user, possibly many times, if the certificate or private key is encrypted\&. Can be overridden by the
\fBGIT_PROXY_SSL_CERT_PASSWORD_PROTECTED\fR
environment variable\&.
.RE
.PP
http\&.proxySSLCAInfo
.RS 4
Pathname to the file containing the certificate bundle that should be used to verify the proxy with when using an HTTPS proxy\&. Can be overridden by the
\fBGIT_PROXY_SSL_CAINFO\fR
environment variable\&.
.RE
.PP
http\&.emptyAuth
.RS 4
Attempt authentication without seeking a username or password\&. This can be used to attempt GSS\-Negotiate authentication without specifying a username in the URL, as libcurl normally requires a username for authentication\&.
.RE
.PP
http\&.proactiveAuth
.RS 4
Attempt authentication without first making an unauthenticated attempt and receiving a 401 response\&. This can be used to ensure that all requests are authenticated\&. If
\fBhttp\&.emptyAuth\fR
is set to true, this value has no effect\&.
.sp
If the credential helper used specifies an authentication scheme (i\&.e\&., via the
\fBauthtype\fR
field), that value will be used; if a username and password is provided without a scheme, then Basic authentication is used\&. The value of the option determines the scheme requested from the helper\&. Possible values are:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBbasic\fR
\- Request Basic authentication from the helper\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBauto\fR
\- Allow the helper to pick an appropriate scheme\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBnone\fR
\- Disable proactive authentication\&.
.RE
.sp
Note that TLS should always be used with this configuration, since otherwise it is easy to accidentally expose plaintext credentials if Basic authentication is selected\&.
.RE
.PP
http\&.delegation
.RS 4
Control GSSAPI credential delegation\&. The delegation is disabled by default in libcurl since version 7\&.21\&.7\&. Set parameter to tell the server what it is allowed to delegate when it comes to user credentials\&. Used with GSS/kerberos\&. Possible values are:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBnone\fR
\- Don\(cqt allow any delegation\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBpolicy\fR
\- Delegates if and only if the OK\-AS\-DELEGATE flag is set in the Kerberos service ticket, which is a matter of realm policy\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBalways\fR
\- Unconditionally allow the server to delegate\&.
.RE
.RE
.PP
http\&.extraHeader
.RS 4
Pass an additional HTTP header when communicating with a server\&. If more than one such entry exists, all of them are added as extra headers\&. To allow overriding the settings inherited from the system config, an empty value will reset the extra headers to the empty list\&.
.RE
.PP
http\&.cookieFile
.RS 4
The pathname of a file containing previously stored cookie lines, which should be used in the Git http session, if they match the server\&. The file format of the file to read cookies from should be plain HTTP headers or the Netscape/Mozilla cookie file format (see
\fBcurl\fR(\fB1\fR))\&. Set it to an empty string, to accept only new cookies from the server and send them back in successive requests within same connection\&. NOTE that the file specified with http\&.cookieFile is used only as input unless http\&.saveCookies is set\&.
.RE
.PP
http\&.saveCookies
.RS 4
If set, store cookies received during requests to the file specified by http\&.cookieFile\&. Has no effect if http\&.cookieFile is unset, or set to an empty string\&.
.RE
.PP
http\&.version
.RS 4
Use the specified HTTP protocol version when communicating with a server\&. If you want to force the default\&. The available and default version depend on libcurl\&. Currently the possible values of this option are:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
HTTP/2
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
HTTP/1\&.1
.RE
.RE
.PP
http\&.curloptResolve
.RS 4
Hostname resolution information that will be used first by libcurl when sending HTTP requests\&. This information should be in one of the following formats:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
[+]HOST:PORT:ADDRESS[,ADDRESS]
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\-HOST:PORT
.RE
.sp
The first format redirects all requests to the given
\fBHOST:PORT\fR
to the provided
\fBADDRESS\fR(s)\&. The second format clears all previous config values for that
\fBHOST:PORT\fR
combination\&. To allow easy overriding of all the settings inherited from the system config, an empty value will reset all resolution information to the empty list\&.
.RE
.PP
http\&.sslVersion
.RS 4
The SSL version to use when negotiating an SSL connection, if you want to force the default\&. The available and default version depend on whether libcurl was built against NSS or OpenSSL and the particular configuration of the crypto library in use\&. Internally this sets the
\fICURLOPT_SSL_VERSION\fR
option; see the libcurl documentation for more details on the format of this option and for the ssl version supported\&. Currently the possible values of this option are:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
sslv2
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
sslv3
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
tlsv1
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
tlsv1\&.0
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
tlsv1\&.1
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
tlsv1\&.2
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
tlsv1\&.3
.RE
.sp
Can be overridden by the
\fBGIT_SSL_VERSION\fR
environment variable\&. To force git to use libcurl\(cqs default ssl version and ignore any explicit http\&.sslversion option, set
\fBGIT_SSL_VERSION\fR
to the empty string\&.
.RE
.PP
http\&.sslCipherList
.RS 4
A list of SSL ciphers to use when negotiating an SSL connection\&. The available ciphers depend on whether libcurl was built against NSS or OpenSSL and the particular configuration of the crypto library in use\&. Internally this sets the
\fICURLOPT_SSL_CIPHER_LIST\fR
option; see the libcurl documentation for more details on the format of this list\&.
.sp
Can be overridden by the
\fBGIT_SSL_CIPHER_LIST\fR
environment variable\&. To force git to use libcurl\(cqs default cipher list and ignore any explicit http\&.sslCipherList option, set
\fBGIT_SSL_CIPHER_LIST\fR
to the empty string\&.
.RE
.PP
http\&.sslVerify
.RS 4
Whether to verify the SSL certificate when fetching or pushing over HTTPS\&. Defaults to true\&. Can be overridden by the
\fBGIT_SSL_NO_VERIFY\fR
environment variable\&.
.RE
.PP
http\&.sslCert
.RS 4
File containing the SSL certificate when fetching or pushing over HTTPS\&. Can be overridden by the
\fBGIT_SSL_CERT\fR
environment variable\&.
.RE
.PP
http\&.sslKey
.RS 4
File containing the SSL private key when fetching or pushing over HTTPS\&. Can be overridden by the
\fBGIT_SSL_KEY\fR
environment variable\&.
.RE
.PP
http\&.sslCertPasswordProtected
.RS 4
Enable Git\(cqs password prompt for the SSL certificate\&. Otherwise OpenSSL will prompt the user, possibly many times, if the certificate or private key is encrypted\&. Can be overridden by the
\fBGIT_SSL_CERT_PASSWORD_PROTECTED\fR
environment variable\&.
.RE
.PP
http\&.sslCAInfo
.RS 4
File containing the certificates to verify the peer with when fetching or pushing over HTTPS\&. Can be overridden by the
\fBGIT_SSL_CAINFO\fR
environment variable\&.
.RE
.PP
http\&.sslCAPath
.RS 4
Path containing files with the CA certificates to verify the peer with when fetching or pushing over HTTPS\&. Can be overridden by the
\fBGIT_SSL_CAPATH\fR
environment variable\&.
.RE
.PP
http\&.sslBackend
.RS 4
Name of the SSL backend to use (e\&.g\&. "openssl" or "schannel")\&. This option is ignored if cURL lacks support for choosing the SSL backend at runtime\&.
.RE
.PP
http\&.sslCertType
.RS 4
Type of client certificate used when fetching or pushing over HTTPS\&. "PEM", "DER" are supported when using openssl or gnutls backends\&. "P12" is supported on "openssl", "schannel", "securetransport", and gnutls 8\&.11+\&. See also libcurl
\fBCURLOPT_SSLCERTTYPE\fR\&. Can be overridden by the
\fBGIT_SSL_CERT_TYPE\fR
environment variable\&.
.RE
.PP
http\&.sslKeyType
.RS 4
Type of client private key used when fetching or pushing over HTTPS\&. (e\&.g\&. "PEM", "DER", or "ENG")\&. Only applicable when using "openssl" backend\&. "DER" is not supported with openssl\&. Particularly useful when set to "ENG" for authenticating with PKCS#11 tokens, with a PKCS#11 URL in sslCert option\&. See also libcurl
\fBCURLOPT_SSLKEYTYPE\fR\&. Can be overridden by the
\fBGIT_SSL_KEY_TYPE\fR
environment variable\&.
.RE
.PP
http\&.schannelCheckRevoke
.RS 4
Used to enforce or disable certificate revocation checks in cURL when http\&.sslBackend is set to "schannel"\&. Defaults to
\fBtrue\fR
if unset\&. Only necessary to disable this if Git consistently errors and the message is about checking the revocation status of a certificate\&. This option is ignored if cURL lacks support for setting the relevant SSL option at runtime\&.
.RE
.PP
http\&.schannelUseSSLCAInfo
.RS 4
As of cURL v7\&.60\&.0, the Secure Channel backend can use the certificate bundle provided via
\fBhttp\&.sslCAInfo\fR, but that would override the Windows Certificate Store\&. Since this is not desirable by default, Git will tell cURL not to use that bundle by default when the
\fBschannel\fR
backend was configured via
\fBhttp\&.sslBackend\fR, unless
\fBhttp\&.schannelUseSSLCAInfo\fR
overrides this behavior\&.
.RE
.PP
http\&.pinnedPubkey
.RS 4
Public key of the https service\&. It may either be the filename of a PEM or DER encoded public key file or a string starting with
\fIsha256//\fR
followed by the base64 encoded sha256 hash of the public key\&. See also libcurl
\fICURLOPT_PINNEDPUBLICKEY\fR\&. git will exit with an error if this option is set but not supported by cURL\&.
.RE
.PP
http\&.sslTry
.RS 4
Attempt to use AUTH SSL/TLS and encrypted data transfers when connecting via regular FTP protocol\&. This might be needed if the FTP server requires it for security reasons or you wish to connect securely whenever remote FTP server supports it\&. Default is false since it might trigger certificate verification errors on misconfigured servers\&.
.RE
.PP
http\&.maxRequests
.RS 4
How many HTTP requests to launch in parallel\&. Can be overridden by the
\fBGIT_HTTP_MAX_REQUESTS\fR
environment variable\&. Default is 5\&.
.RE
.PP
http\&.minSessions
.RS 4
The number of curl sessions (counted across slots) to be kept across requests\&. They will not be ended with curl_easy_cleanup() until http_cleanup() is invoked\&. If USE_CURL_MULTI is not defined, this value will be capped at 1\&. Defaults to 1\&.
.RE
.PP
http\&.postBuffer
.RS 4
Maximum size in bytes of the buffer used by smart HTTP transports when POSTing data to the remote system\&. For requests larger than this buffer size, HTTP/1\&.1 and Transfer\-Encoding: chunked is used to avoid creating a massive pack file locally\&. Default is 1 MiB, which is sufficient for most requests\&.
.sp
Note that raising this limit is only effective for disabling chunked transfer encoding and therefore should be used only where the remote server or a proxy only supports HTTP/1\&.0 or is noncompliant with the HTTP standard\&. Raising this is not, in general, an effective solution for most push problems, but can increase memory consumption significantly since the entire buffer is allocated even for small pushes\&.
.RE
.PP
http\&.lowSpeedLimit, http\&.lowSpeedTime
.RS 4
If the HTTP transfer speed, in bytes per second, is less than
\fIhttp\&.lowSpeedLimit\fR
for longer than
\fIhttp\&.lowSpeedTime\fR
seconds, the transfer is aborted\&. Can be overridden by the
\fBGIT_HTTP_LOW_SPEED_LIMIT\fR
and
\fBGIT_HTTP_LOW_SPEED_TIME\fR
environment variables\&.
.RE
.PP
http\&.keepAliveIdle
.RS 4
Specifies how long in seconds to wait on an idle connection before sending TCP keepalive probes (if supported by the OS)\&. If unset, curl\(cqs default value is used\&. Can be overridden by the
\fBGIT_HTTP_KEEPALIVE_IDLE\fR
environment variable\&.
.RE
.PP
http\&.keepAliveInterval
.RS 4
Specifies how long in seconds to wait between TCP keepalive probes (if supported by the OS)\&. If unset, curl\(cqs default value is used\&. Can be overridden by the
\fBGIT_HTTP_KEEPALIVE_INTERVAL\fR
environment variable\&.
.RE
.PP
http\&.keepAliveCount
.RS 4
Specifies how many TCP keepalive probes to send before giving up and terminating the connection (if supported by the OS)\&. If unset, curl\(cqs default value is used\&. Can be overridden by the
\fBGIT_HTTP_KEEPALIVE_COUNT\fR
environment variable\&.
.RE
.PP
http\&.noEPSV
.RS 4
A boolean which disables using of EPSV ftp command by curl\&. This can be helpful with some "poor" ftp servers which don\(cqt support EPSV mode\&. Can be overridden by the
\fBGIT_CURL_FTP_NO_EPSV\fR
environment variable\&. Default is false (curl will use EPSV)\&.
.RE
.PP
http\&.userAgent
.RS 4
The HTTP USER_AGENT string presented to an HTTP server\&. The default value represents the version of the Git client such as git/1\&.7\&.1\&. This option allows you to override this value to a more common value such as Mozilla/4\&.0\&. This may be necessary, for instance, if connecting through a firewall that restricts HTTP connections to a set of common USER_AGENT strings (but not including those like git/1\&.7\&.1)\&. Can be overridden by the
\fBGIT_HTTP_USER_AGENT\fR
environment variable\&.
.RE
.PP
http\&.followRedirects
.RS 4
Whether git should follow HTTP redirects\&. If set to
\fBtrue\fR, git will transparently follow any redirect issued by a server it encounters\&. If set to
\fBfalse\fR, git will treat all redirects as errors\&. If set to
\fBinitial\fR, git will follow redirects only for the initial request to a remote, but not for subsequent follow\-up HTTP requests\&. Since git uses the redirected URL as the base for the follow\-up requests, this is generally sufficient\&. The default is
\fBinitial\fR\&.
.RE
.PP
http\&.<url>\&.*
.RS 4
Any of the http\&.* options above can be applied selectively to some URLs\&. For a config key to match a URL, each element of the config key is compared to that of the URL, in the following order:
.sp
.RS 4
.ie n \{\
\h'-04' 1.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  1." 4.2
.\}
Scheme (e\&.g\&.,
\fBhttps\fR
in
\fBhttps://example\&.com/\fR)\&. This field must match exactly between the config key and the URL\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 2.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  2." 4.2
.\}
Host/domain name (e\&.g\&.,
\fBexample\&.com\fR
in
\fBhttps://example\&.com/\fR)\&. This field must match between the config key and the URL\&. It is possible to specify a
\fB*\fR
as part of the host name to match all subdomains at this level\&.
\fBhttps://*\&.example\&.com/\fR
for example would match
\fBhttps://foo\&.example\&.com/\fR, but not
\fBhttps://foo\&.bar\&.example\&.com/\fR\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 3.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  3." 4.2
.\}
Port number (e\&.g\&.,
\fB8080\fR
in
\fBhttp://example\&.com:8080/\fR)\&. This field must match exactly between the config key and the URL\&. Omitted port numbers are automatically converted to the correct default for the scheme before matching\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 4.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  4." 4.2
.\}
Path (e\&.g\&.,
\fBrepo\&.git\fR
in
\fBhttps://example\&.com/repo\&.git\fR)\&. The path field of the config key must match the path field of the URL either exactly or as a prefix of slash\-delimited path elements\&. This means a config key with path
\fBfoo/\fR
matches URL path
\fBfoo/bar\fR\&. A prefix can only match on a slash (\fB/\fR) boundary\&. Longer matches take precedence (so a config key with path
\fBfoo/bar\fR
is a better match to URL path
\fBfoo/bar\fR
than a config key with just path
\fBfoo/\fR)\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 5.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  5." 4.2
.\}
User name (e\&.g\&.,
\fBuser\fR
in
\fBhttps://user@example\&.com/repo\&.git\fR)\&. If the config key has a user name it must match the user name in the URL exactly\&. If the config key does not have a user name, that config key will match a URL with any user name (including none), but at a lower precedence than a config key with a user name\&.
.RE
.sp
The list above is ordered by decreasing precedence; a URL that matches a config key\(cqs path is preferred to one that matches its user name\&. For example, if the URL is
\fBhttps://user@example\&.com/foo/bar\fR
a config key match of
\fBhttps://example\&.com/foo\fR
will be preferred over a config key match of
\fBhttps://user@example\&.com\fR\&.
.sp
All URLs are normalized before attempting any matching (the password part, if embedded in the URL, is always ignored for matching purposes) so that equivalent URLs that are simply spelled differently will match properly\&. Environment variable settings always override any matches\&. The URLs that are matched against are those given directly to Git commands\&. This means any URLs visited as a result of a redirection do not participate in matching\&.
.RE
.PP
i18n\&.commitEncoding
.RS 4
Character encoding the commit messages are stored in; Git itself does not care per se, but this information is necessary e\&.g\&. when importing commits from emails or in the gitk graphical history browser (and possibly in other places in the future or in other porcelains)\&. See e\&.g\&.
\fBgit-mailinfo\fR(1)\&. Defaults to
\fIutf\-8\fR\&.
.RE
.PP
i18n\&.logOutputEncoding
.RS 4
Character encoding the commit messages are converted to when running
\fIgit log\fR
and friends\&.
.RE
.PP
imap\&.folder
.RS 4
The folder to drop the mails into, which is typically the Drafts folder\&. For example:
\fBINBOX\&.Drafts\fR,
\fBINBOX/Drafts\fR
or [\fBGmail\fR]\fB/Drafts\fR\&. The IMAP folder to interact with MUST be specified; the value of this configuration variable is used as the fallback default value when the
\fB\-\-folder\fR
option is not given\&.
.RE
.PP
imap\&.tunnel
.RS 4
Command used to set up a tunnel to the IMAP server through which commands will be piped instead of using a direct network connection to the server\&. Required when imap\&.host is not set\&.
.RE
.PP
imap\&.host
.RS 4
A URL identifying the server\&. Use an
\fBimap://\fR
prefix for non\-secure connections and an
\fBimaps://\fR
prefix for secure connections\&. Ignored when imap\&.tunnel is set, but required otherwise\&.
.RE
.PP
imap\&.user
.RS 4
The username to use when logging in to the server\&.
.RE
.PP
imap\&.pass
.RS 4
The password to use when logging in to the server\&.
.RE
.PP
imap\&.port
.RS 4
An integer port number to connect to on the server\&. Defaults to 143 for imap:// hosts and 993 for imaps:// hosts\&. Ignored when imap\&.tunnel is set\&.
.RE
.PP
imap\&.sslverify
.RS 4
A boolean to enable/disable verification of the server certificate used by the SSL/TLS connection\&. Default is
\fBtrue\fR\&. Ignored when imap\&.tunnel is set\&.
.RE
.PP
imap\&.preformattedHTML
.RS 4
A boolean to enable/disable the use of html encoding when sending a patch\&. An html encoded patch will be bracketed with <pre> and have a content type of text/html\&. Ironically, enabling this option causes Thunderbird to send the patch as a plain/text, format=fixed email\&. Default is
\fBfalse\fR\&.
.RE
.PP
imap\&.authMethod
.RS 4
Specify the authentication method for authenticating with the IMAP server\&. If Git was built with the NO_CURL option, or if your curl version is older than 7\&.34\&.0, or if you\(cqre running git\-imap\-send with the
\fB\-\-no\-curl\fR
option, the only supported methods are
\fBPLAIN\fR,
\fBCRAM\-MD5\fR,
\fBOAUTHBEARER\fR
and
\fBXOAUTH2\fR\&. If this is not set then
\fBgit\fR
\fBimap\-send\fR
uses the basic IMAP plaintext
\fBLOGIN\fR
command\&.
.RE
.PP
include\&.path, includeIf\&.<condition>\&.path
.RS 4
Special variables to include other configuration files\&. See the "CONFIGURATION FILE" section in the main
\fBgit-config\fR(1)
documentation, specifically the "Includes" and "Conditional Includes" subsections\&.
.RE
.PP
index\&.recordEndOfIndexEntries
.RS 4
Specifies whether the index file should include an "End Of Index Entry" section\&. This reduces index load time on multiprocessor machines but produces a message "ignoring EOIE extension" when reading the index using Git versions before 2\&.20\&. Defaults to
\fItrue\fR
if index\&.threads has been explicitly enabled,
\fIfalse\fR
otherwise\&.
.RE
.PP
index\&.recordOffsetTable
.RS 4
Specifies whether the index file should include an "Index Entry Offset Table" section\&. This reduces index load time on multiprocessor machines but produces a message "ignoring IEOT extension" when reading the index using Git versions before 2\&.20\&. Defaults to
\fItrue\fR
if index\&.threads has been explicitly enabled,
\fIfalse\fR
otherwise\&.
.RE
.PP
index\&.sparse
.RS 4
When enabled, write the index using sparse\-directory entries\&. This has no effect unless
\fBcore\&.sparseCheckout\fR
and
\fBcore\&.sparseCheckoutCone\fR
are both enabled\&. Defaults to
\fIfalse\fR\&.
.RE
.PP
index\&.threads
.RS 4
Specifies the number of threads to spawn when loading the index\&. This is meant to reduce index load time on multiprocessor machines\&. Specifying 0 or
\fItrue\fR
will cause Git to auto\-detect the number of CPUs and set the number of threads accordingly\&. Specifying 1 or
\fIfalse\fR
will disable multithreading\&. Defaults to
\fItrue\fR\&.
.RE
.PP
index\&.version
.RS 4
Specify the version with which new index files should be initialized\&. This does not affect existing repositories\&. If
\fBfeature\&.manyFiles\fR
is enabled, then the default is 4\&.
.RE
.PP
index\&.skipHash
.RS 4
When enabled, do not compute the trailing hash for the index file\&. This accelerates Git commands that manipulate the index, such as
\fBgit\fR
\fBadd\fR,
\fBgit\fR
\fBcommit\fR, or
\fBgit\fR
\fBstatus\fR\&. Instead of storing the checksum, write a trailing set of bytes with value zero, indicating that the computation was skipped\&.
.sp
If you enable
\fBindex\&.skipHash\fR, then Git clients older than 2\&.13\&.0 will refuse to parse the index and Git clients older than 2\&.40\&.0 will report an error during
\fBgit\fR
\fBfsck\fR\&.
.RE
.PP
\fBinit\&.templateDir\fR
.RS 4
Specify the directory from which templates will be copied\&. (See the "TEMPLATE DIRECTORY" section of
\fBgit-init\fR(1)\&.)
.RE
.PP
\fBinit\&.defaultBranch\fR
.RS 4
Allows overriding the default branch name e\&.g\&. when initializing a new repository\&.
.RE
.PP
\fBinit\&.defaultObjectFormat\fR
.RS 4
Allows overriding the default object format for new repositories\&. See
\fB\-\-object\-format=\fR
in
\fBgit-init\fR(1)\&. Both the command line option and the
\fBGIT_DEFAULT_HASH\fR
environment variable take precedence over this config\&.
.RE
.PP
\fBinit\&.defaultRefFormat\fR
.RS 4
Allows overriding the default ref storage format for new repositories\&. See
\fB\-\-ref\-format=\fR
in
\fBgit-init\fR(1)\&. Both the command line option and the
\fBGIT_DEFAULT_REF_FORMAT\fR
environment variable take precedence over this config\&.
.RE
.PP
instaweb\&.browser
.RS 4
Specify the program that will be used to browse your working repository in gitweb\&. See
\fBgit-instaweb\fR(1)\&.
.RE
.PP
instaweb\&.httpd
.RS 4
The HTTP daemon command\-line to start gitweb on your working repository\&. See
\fBgit-instaweb\fR(1)\&.
.RE
.PP
instaweb\&.local
.RS 4
If true the web server started by
\fBgit-instaweb\fR(1)
will be bound to the local IP (127\&.0\&.0\&.1)\&.
.RE
.PP
instaweb\&.modulePath
.RS 4
The default module path for
\fBgit-instaweb\fR(1)
to use instead of /usr/lib/apache2/modules\&. Only used if httpd is Apache\&.
.RE
.PP
instaweb\&.port
.RS 4
The port number to bind the gitweb httpd to\&. See
\fBgit-instaweb\fR(1)\&.
.RE
.PP
interactive\&.singleKey
.RS 4
When set to true, allow the user to provide one\-letter input with a single key (i\&.e\&., without hitting the Enter key) in interactive commands\&. This is currently used by the
\fB\-\-patch\fR
mode of
\fBgit-add\fR(1),
\fBgit-checkout\fR(1),
\fBgit-restore\fR(1),
\fBgit-commit\fR(1),
\fBgit-reset\fR(1), and
\fBgit-stash\fR(1)\&.
.RE
.PP
interactive\&.diffFilter
.RS 4
When an interactive command (such as
\fBgit\fR
\fBadd\fR
\fB\-\-patch\fR) shows a colorized diff, git will pipe the diff through the shell command defined by this configuration variable\&. The command may mark up the diff further for human consumption, provided that it retains a one\-to\-one correspondence with the lines in the original diff\&. Defaults to disabled (no filtering)\&.
.RE
.PP
\fBlog\&.abbrevCommit\fR
.RS 4
If
\fBtrue\fR, make
\fBgit-log\fR(1),
\fBgit-show\fR(1), and
\fBgit-whatchanged\fR(1)
assume
\fB\-\-abbrev\-commit\fR\&. You may override this option with
\fB\-\-no\-abbrev\-commit\fR\&.
.RE
.PP
\fBlog\&.date\fR
.RS 4
Set the default date\-time mode for the
\fBlog\fR
command\&. Setting a value for log\&.date is similar to using
\fBgit\fR
\fBlog\fR\*(Aqs
\fB\-\-date\fR
option\&. See
\fBgit-log\fR(1)
for details\&.
.sp
If the format is set to "auto:foo" and the pager is in use, format "foo" will be used for the date format\&. Otherwise, "default" will be used\&.
.RE
.PP
\fBlog\&.decorate\fR
.RS 4
Print out the ref names of any commits that are shown by the log command\&. Possible values are:
.PP
\fBshort\fR
.RS 4
the ref name prefixes
\fBrefs/heads/\fR,
\fBrefs/tags/\fR
and
\fBrefs/remotes/\fR
are not printed\&.
.RE
.PP
\fBfull\fR
.RS 4
the full ref name (including prefix) are printed\&.
.RE
.PP
\fBauto\fR
.RS 4
if the output is going to a terminal, the ref names are shown as if
\fBshort\fR
were given, otherwise no ref names are shown\&.
.RE
.sp
This is the same as the
\fB\-\-decorate\fR
option of the
\fBgit\fR
\fBlog\fR\&.
.RE
.PP
\fBlog\&.initialDecorationSet\fR
.RS 4
By default,
\fBgit\fR
\fBlog\fR
only shows decorations for certain known ref namespaces\&. If
\fIall\fR
is specified, then show all refs as decorations\&.
.RE
.PP
\fBlog\&.excludeDecoration\fR
.RS 4
Exclude the specified patterns from the log decorations\&. This is similar to the
\fB\-\-decorate\-refs\-exclude\fR
command\-line option, but the config option can be overridden by the
\fB\-\-decorate\-refs\fR
option\&.
.RE
.PP
\fBlog\&.diffMerges\fR
.RS 4
Set diff format to be used when
\fB\-\-diff\-merges=on\fR
is specified, see
\fB\-\-diff\-merges\fR
in
\fBgit-log\fR(1)
for details\&. Defaults to
\fBseparate\fR\&.
.RE
.PP
\fBlog\&.follow\fR
.RS 4
If
\fBtrue\fR,
\fBgit\fR
\fBlog\fR
will act as if the
\fB\-\-follow\fR
option was used when a single <path> is given\&. This has the same limitations as
\fB\-\-follow\fR, i\&.e\&. it cannot be used to follow multiple files and does not work well on non\-linear history\&.
.RE
.PP
\fBlog\&.graphColors\fR
.RS 4
A list of colors, separated by commas, that can be used to draw history lines in
\fBgit\fR
\fBlog\fR
\fB\-\-graph\fR\&.
.RE
.PP
\fBlog\&.showRoot\fR
.RS 4
If true, the initial commit will be shown as a big creation event\&. This is equivalent to a diff against an empty tree\&. Tools like
\fBgit-log\fR(1)
or
\fBgit-whatchanged\fR(1), which normally hide the root commit will now show it\&. True by default\&.
.RE
.PP
\fBlog\&.showSignature\fR
.RS 4
If true, makes
\fBgit-log\fR(1),
\fBgit-show\fR(1), and
\fBgit-whatchanged\fR(1)
assume
\fB\-\-show\-signature\fR\&.
.RE
.PP
\fBlog\&.mailmap\fR
.RS 4
If true, makes
\fBgit-log\fR(1),
\fBgit-show\fR(1), and
\fBgit-whatchanged\fR(1)
assume
\fB\-\-use\-mailmap\fR, otherwise assume
\fB\-\-no\-use\-mailmap\fR\&. True by default\&.
.RE
.PP
lsrefs\&.unborn
.RS 4
May be "advertise" (the default), "allow", or "ignore"\&. If "advertise", the server will respond to the client sending "unborn" (as described in
\fBgitprotocol-v2\fR(5)) and will advertise support for this feature during the protocol v2 capability advertisement\&. "allow" is the same as "advertise" except that the server will not advertise support for this feature; this is useful for load\-balanced servers that cannot be updated atomically (for example), since the administrator could configure "allow", then after a delay, configure "advertise"\&.
.RE
.PP
mailinfo\&.scissors
.RS 4
If true, makes
\fBgit-mailinfo\fR(1)
(and therefore
\fBgit-am\fR(1)) act by default as if the \-\-scissors option was provided on the command\-line\&. When active, this feature removes everything from the message body before a scissors line (i\&.e\&. consisting mainly of ">8", "8<" and "\-")\&.
.RE
.PP
mailmap\&.file
.RS 4
The location of an augmenting mailmap file\&. The default mailmap, located in the root of the repository, is loaded first, then the mailmap file pointed to by this variable\&. The location of the mailmap file may be in a repository subdirectory, or somewhere outside of the repository itself\&. See
\fBgit-shortlog\fR(1)
and
\fBgit-blame\fR(1)\&.
.RE
.PP
mailmap\&.blob
.RS 4
Like
\fBmailmap\&.file\fR, but consider the value as a reference to a blob in the repository\&. If both
\fBmailmap\&.file\fR
and
\fBmailmap\&.blob\fR
are given, both are parsed, with entries from
\fBmailmap\&.file\fR
taking precedence\&. In a bare repository, this defaults to
\fBHEAD:\&.mailmap\fR\&. In a non\-bare repository, it defaults to empty\&.
.RE
.PP
maintenance\&.auto
.RS 4
This boolean config option controls whether some commands run
\fBgit\fR
\fBmaintenance\fR
\fBrun\fR
\fB\-\-auto\fR
after doing their normal work\&. Defaults to true\&.
.RE
.PP
maintenance\&.autoDetach
.RS 4
Many Git commands trigger automatic maintenance after they have written data into the repository\&. This boolean config option controls whether this automatic maintenance shall happen in the foreground or whether the maintenance process shall detach and continue to run in the background\&.
.sp
If unset, the value of
\fBgc\&.autoDetach\fR
is used as a fallback\&. Defaults to true if both are unset, meaning that the maintenance process will detach\&.
.RE
.PP
maintenance\&.strategy
.RS 4
This string config option provides a way to specify one of a few recommended schedules for background maintenance\&. This only affects which tasks are run during
\fBgit\fR
\fBmaintenance\fR
\fBrun\fR
\fB\-\-schedule=X\fR
commands, provided no
\fB\-\-task=\fR\fI<task>\fR
arguments are provided\&. Further, if a
\fBmaintenance\&.\fR\fI<task>\fR\fB\&.schedule\fR
config value is set, then that value is used instead of the one provided by
\fBmaintenance\&.strategy\fR\&. The possible strategy strings are:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBnone\fR: This default setting implies no tasks are run at any schedule\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBincremental\fR: This setting optimizes for performing small maintenance activities that do not delete any data\&. This does not schedule the
\fBgc\fR
task, but runs the
\fBprefetch\fR
and
\fBcommit\-graph\fR
tasks hourly, the
\fBloose\-objects\fR
and
\fBincremental\-repack\fR
tasks daily, and the
\fBpack\-refs\fR
task weekly\&.
.RE
.RE
.PP
maintenance\&.<task>\&.enabled
.RS 4
This boolean config option controls whether the maintenance task with name
\fI<task>\fR
is run when no
\fB\-\-task\fR
option is specified to
\fBgit\fR
\fBmaintenance\fR
\fBrun\fR\&. These config values are ignored if a
\fB\-\-task\fR
option exists\&. By default, only
\fBmaintenance\&.gc\&.enabled\fR
is true\&.
.RE
.PP
maintenance\&.<task>\&.schedule
.RS 4
This config option controls whether or not the given
\fI<task>\fR
runs during a
\fBgit\fR
\fBmaintenance\fR
\fBrun\fR
\fB\-\-schedule=\fR\fI<frequency>\fR
command\&. The value must be one of "hourly", "daily", or "weekly"\&.
.RE
.PP
maintenance\&.commit\-graph\&.auto
.RS 4
This integer config option controls how often the
\fBcommit\-graph\fR
task should be run as part of
\fBgit\fR
\fBmaintenance\fR
\fBrun\fR
\fB\-\-auto\fR\&. If zero, then the
\fBcommit\-graph\fR
task will not run with the
\fB\-\-auto\fR
option\&. A negative value will force the task to run every time\&. Otherwise, a positive value implies the command should run when the number of reachable commits that are not in the commit\-graph file is at least the value of
\fBmaintenance\&.commit\-graph\&.auto\fR\&. The default value is 100\&.
.RE
.PP
maintenance\&.loose\-objects\&.auto
.RS 4
This integer config option controls how often the
\fBloose\-objects\fR
task should be run as part of
\fBgit\fR
\fBmaintenance\fR
\fBrun\fR
\fB\-\-auto\fR\&. If zero, then the
\fBloose\-objects\fR
task will not run with the
\fB\-\-auto\fR
option\&. A negative value will force the task to run every time\&. Otherwise, a positive value implies the command should run when the number of loose objects is at least the value of
\fBmaintenance\&.loose\-objects\&.auto\fR\&. The default value is 100\&.
.RE
.PP
maintenance\&.loose\-objects\&.batchSize
.RS 4
This integer config option controls the maximum number of loose objects written into a packfile during the
\fBloose\-objects\fR
task\&. The default is fifty thousand\&. Use value
\fB0\fR
to indicate no limit\&.
.RE
.PP
maintenance\&.incremental\-repack\&.auto
.RS 4
This integer config option controls how often the
\fBincremental\-repack\fR
task should be run as part of
\fBgit\fR
\fBmaintenance\fR
\fBrun\fR
\fB\-\-auto\fR\&. If zero, then the
\fBincremental\-repack\fR
task will not run with the
\fB\-\-auto\fR
option\&. A negative value will force the task to run every time\&. Otherwise, a positive value implies the command should run when the number of pack\-files not in the multi\-pack\-index is at least the value of
\fBmaintenance\&.incremental\-repack\&.auto\fR\&. The default value is 10\&.
.RE
.PP
maintenance\&.reflog\-expire\&.auto
.RS 4
This integer config option controls how often the
\fBreflog\-expire\fR
task should be run as part of
\fBgit\fR
\fBmaintenance\fR
\fBrun\fR
\fB\-\-auto\fR\&. If zero, then the
\fBreflog\-expire\fR
task will not run with the
\fB\-\-auto\fR
option\&. A negative value will force the task to run every time\&. Otherwise, a positive value implies the command should run when the number of expired reflog entries in the "HEAD" reflog is at least the value of
\fBmaintenance\&.loose\-objects\&.auto\fR\&. The default value is 100\&.
.RE
.PP
maintenance\&.rerere\-gc\&.auto
.RS 4
This integer config option controls how often the
\fBrerere\-gc\fR
task should be run as part of
\fBgit\fR
\fBmaintenance\fR
\fBrun\fR
\fB\-\-auto\fR\&. If zero, then the
\fBrerere\-gc\fR
task will not run with the
\fB\-\-auto\fR
option\&. A negative value will force the task to run every time\&. Otherwise, any positive value implies the command will run when the "rr\-cache" directory exists and has at least one entry, regardless of whether it is stale or not\&. This heuristic may be refined in the future\&. The default value is 1\&.
.RE
.PP
maintenance\&.worktree\-prune\&.auto
.RS 4
This integer config option controls how often the
\fBworktree\-prune\fR
task should be run as part of
\fBgit\fR
\fBmaintenance\fR
\fBrun\fR
\fB\-\-auto\fR\&. If zero, then the
\fBworktree\-prune\fR
task will not run with the
\fB\-\-auto\fR
option\&. A negative value will force the task to run every time\&. Otherwise, a positive value implies the command should run when the number of prunable worktrees exceeds the value\&. The default value is 1\&.
.RE
.PP
man\&.viewer
.RS 4
Specify the programs that may be used to display help in the
\fIman\fR
format\&. See
\fBgit-help\fR(1)\&.
.RE
.PP
man\&.<tool>\&.cmd
.RS 4
Specify the command to invoke the specified man viewer\&. The specified command is evaluated in shell with the man page passed as an argument\&. (See
\fBgit-help\fR(1)\&.)
.RE
.PP
man\&.<tool>\&.path
.RS 4
Override the path for the given tool that may be used to display help in the
\fIman\fR
format\&. See
\fBgit-help\fR(1)\&.
.RE
.PP
\fBmerge\&.conflictStyle\fR
.RS 4
Specify the style in which conflicted hunks are written out to working tree files upon merge\&. The default is "merge", which shows a <<<<<<< conflict marker, changes made by one side, a
\fB=======\fR
marker, changes made by the other side, and then a >>>>>>> marker\&. An alternate style, "diff3", adds a ||||||| marker and the original text before the
\fB=======\fR
marker\&. The "merge" style tends to produce smaller conflict regions than diff3, both because of the exclusion of the original text, and because when a subset of lines match on the two sides, they are just pulled out of the conflict region\&. Another alternate style, "zdiff3", is similar to diff3 but removes matching lines on the two sides from the conflict region when those matching lines appear near either the beginning or end of a conflict region\&.
.RE
.PP
\fBmerge\&.defaultToUpstream\fR
.RS 4
If merge is called without any commit argument, merge the upstream branches configured for the current branch by using their last observed values stored in their remote\-tracking branches\&. The values of the
\fBbranch\&.\fR<current
\fBbranch\fR>\fB\&.merge\fR
that name the branches at the remote named by
\fBbranch\&.\fR\fI<current\-branch>\fR\fB\&.remote\fR
are consulted, and then they are mapped via
\fBremote\&.\fR\fI<remote>\fR\fB\&.fetch\fR
to their corresponding remote\-tracking branches, and the tips of these tracking branches are merged\&. Defaults to true\&.
.RE
.PP
\fBmerge\&.ff\fR
.RS 4
By default, Git does not create an extra merge commit when merging a commit that is a descendant of the current commit\&. Instead, the tip of the current branch is fast\-forwarded\&. When set to
\fBfalse\fR, this variable tells Git to create an extra merge commit in such a case (equivalent to giving the
\fB\-\-no\-ff\fR
option from the command line)\&. When set to
\fBonly\fR, only such fast\-forward merges are allowed (equivalent to giving the
\fB\-\-ff\-only\fR
option from the command line)\&.
.RE
.PP
\fBmerge\&.verifySignatures\fR
.RS 4
If true, this is equivalent to the
\fB\-\-verify\-signatures\fR
command line option\&. See
\fBgit-merge\fR(1)
for details\&.
.RE
.PP
\fBmerge\&.branchdesc\fR
.RS 4
In addition to branch names, populate the log message with the branch description text associated with them\&. Defaults to false\&.
.RE
.PP
\fBmerge\&.log\fR
.RS 4
In addition to branch names, populate the log message with at most the specified number of one\-line descriptions from the actual commits that are being merged\&. Defaults to false, and true is a synonym for 20\&.
.RE
.PP
\fBmerge\&.suppressDest\fR
.RS 4
By adding a glob that matches the names of integration branches to this multi\-valued configuration variable, the default merge message computed for merges into these integration branches will omit "into
\fI<branch\-name>\fR" from its title\&.
.sp
An element with an empty value can be used to clear the list of globs accumulated from previous configuration entries\&. When there is no
\fBmerge\&.suppressDest\fR
variable defined, the default value of
\fBmaster\fR
is used for backward compatibility\&.
.RE
.PP
\fBmerge\&.renameLimit\fR
.RS 4
The number of files to consider in the exhaustive portion of rename detection during a merge\&. If not specified, defaults to the value of
\fBdiff\&.renameLimit\fR\&. If neither
\fBmerge\&.renameLimit\fR
nor
\fBdiff\&.renameLimit\fR
are specified, currently defaults to 7000\&. This setting has no effect if rename detection is turned off\&.
.RE
.PP
\fBmerge\&.renames\fR
.RS 4
Whether Git detects renames\&. If set to
\fBfalse\fR, rename detection is disabled\&. If set to
\fBtrue\fR, basic rename detection is enabled\&. Defaults to the value of diff\&.renames\&.
.RE
.PP
\fBmerge\&.directoryRenames\fR
.RS 4
Whether Git detects directory renames, affecting what happens at merge time to new files added to a directory on one side of history when that directory was renamed on the other side of history\&. Possible values are:
.PP
\fBfalse\fR
.RS 4
Directory rename detection is disabled, meaning that such new files will be left behind in the old directory\&.
.RE
.PP
\fBtrue\fR
.RS 4
Directory rename detection is enabled, meaning that such new files will be moved into the new directory\&.
.RE
.PP
\fBconflict\fR
.RS 4
A conflict will be reported for such paths\&.
.RE
.sp
If
\fBmerge\&.renames\fR
is
\fBfalse\fR,
\fBmerge\&.directoryRenames\fR
is ignored and treated as
\fBfalse\fR\&. Defaults to
\fBconflict\fR\&.
.RE
.PP
\fBmerge\&.renormalize\fR
.RS 4
Tell Git that canonical representation of files in the repository has changed over time (e\&.g\&. earlier commits record text files with
\fICRLF\fR
line endings, but recent ones use
\fILF\fR
line endings)\&. In such a repository, for each file where a three\-way content merge is needed, Git can convert the data recorded in commits to a canonical form before performing a merge to reduce unnecessary conflicts\&. For more information, see section "Merging branches with differing checkin/checkout attributes" in
\fBgitattributes\fR(5)\&.
.RE
.PP
\fBmerge\&.stat\fR
.RS 4
What, if anything, to print between
\fBORIG_HEAD\fR
and the merge result at the end of the merge\&. Possible values are:
.PP
\fBfalse\fR
.RS 4
Show nothing\&.
.RE
.PP
\fBtrue\fR
.RS 4
Show
\fBgit\fR
\fBdiff\fR
\fB\-\-diffstat\fR
\fB\-\-summary\fR
\fBORIG_HEAD\fR\&.
.RE
.PP
\fBcompact\fR
.RS 4
Show
\fBgit\fR
\fBdiff\fR
\fB\-\-compact\-summary\fR
\fBORIG_HEAD\fR\&.
.RE
.sp
but any unrecognised value (e\&.g\&., a value added by a future version of Git) is taken as
\fBtrue\fR
instead of triggering an error\&. Defaults to
\fBtrue\fR\&.
.RE
.PP
\fBmerge\&.autoStash\fR
.RS 4
When set to
\fBtrue\fR, automatically create a temporary stash entry before the operation begins, and apply it after the operation ends\&. This means that you can run merge on a dirty worktree\&. However, use with care: the final stash application after a successful merge might result in non\-trivial conflicts\&. This option can be overridden by the
\fB\-\-no\-autostash\fR
and
\fB\-\-autostash\fR
options of
\fBgit-merge\fR(1)\&. Defaults to
\fBfalse\fR\&.
.RE
.PP
\fBmerge\&.tool\fR
.RS 4
Controls which merge tool is used by
\fBgit-mergetool\fR(1)\&. The list below shows the valid built\-in values\&. Any other value is treated as a custom merge tool and requires that a corresponding
\fBmergetool\&.\fR\fI<tool>\fR\fB\&.cmd\fR
variable is defined\&.
.RE
.PP
\fBmerge\&.guitool\fR
.RS 4
Controls which merge tool is used by
\fBgit-mergetool\fR(1)
when the
\fB\-g\fR/\fB\-\-gui\fR
flag is specified\&. The list below shows the valid built\-in values\&. Any other value is treated as a custom merge tool and requires that a corresponding
\fBmergetool\&.\fR\fI<guitool>\fR\fB\&.cmd\fR
variable is defined\&.
.PP
\fBaraxis\fR
.RS 4
Use Araxis Merge (requires a graphical session)
.RE
.PP
\fBbc\fR
.RS 4
Use Beyond Compare (requires a graphical session)
.RE
.PP
\fBbc3\fR
.RS 4
Use Beyond Compare (requires a graphical session)
.RE
.PP
\fBbc4\fR
.RS 4
Use Beyond Compare (requires a graphical session)
.RE
.PP
\fBcodecompare\fR
.RS 4
Use Code Compare (requires a graphical session)
.RE
.PP
\fBdeltawalker\fR
.RS 4
Use DeltaWalker (requires a graphical session)
.RE
.PP
\fBdiffmerge\fR
.RS 4
Use DiffMerge (requires a graphical session)
.RE
.PP
\fBdiffuse\fR
.RS 4
Use Diffuse (requires a graphical session)
.RE
.PP
\fBecmerge\fR
.RS 4
Use ECMerge (requires a graphical session)
.RE
.PP
\fBemerge\fR
.RS 4
Use Emacs\*(Aq Emerge
.RE
.PP
\fBexamdiff\fR
.RS 4
Use ExamDiff Pro (requires a graphical session)
.RE
.PP
\fBguiffy\fR
.RS 4
Use Guiffy\(cqs Diff Tool (requires a graphical session)
.RE
.PP
\fBgvimdiff\fR
.RS 4
Use gVim (requires a graphical session) with a custom layout (see
\fBgit\fR
\fBhelp\fR
\fBmergetool\fR\*(Aqs
\fBBACKEND\fR
\fBSPECIFIC\fR
\fBHINTS\fR
section)
.RE
.PP
\fBgvimdiff1\fR
.RS 4
Use gVim (requires a graphical session) with a 2 panes layout (LOCAL and REMOTE)
.RE
.PP
\fBgvimdiff2\fR
.RS 4
Use gVim (requires a graphical session) with a 3 panes layout (LOCAL, MERGED and REMOTE)
.RE
.PP
\fBgvimdiff3\fR
.RS 4
Use gVim (requires a graphical session) where only the MERGED file is shown
.RE
.PP
\fBkdiff3\fR
.RS 4
Use KDiff3 (requires a graphical session)
.RE
.PP
\fBmeld\fR
.RS 4
Use Meld (requires a graphical session) with optional
\fBauto\fR
\fBmerge\fR
(see
\fBgit\fR
\fBhelp\fR
\fBmergetool\fR\*(Aqs
\fBCONFIGURATION\fR
section)
.RE
.PP
\fBnvimdiff\fR
.RS 4
Use Neovim with a custom layout (see
\fBgit\fR
\fBhelp\fR
\fBmergetool\fR\*(Aqs
\fBBACKEND\fR
\fBSPECIFIC\fR
\fBHINTS\fR
section)
.RE
.PP
\fBnvimdiff1\fR
.RS 4
Use Neovim with a 2 panes layout (LOCAL and REMOTE)
.RE
.PP
\fBnvimdiff2\fR
.RS 4
Use Neovim with a 3 panes layout (LOCAL, MERGED and REMOTE)
.RE
.PP
\fBnvimdiff3\fR
.RS 4
Use Neovim where only the MERGED file is shown
.RE
.PP
\fBopendiff\fR
.RS 4
Use FileMerge (requires a graphical session)
.RE
.PP
\fBp4merge\fR
.RS 4
Use HelixCore P4Merge (requires a graphical session)
.RE
.PP
\fBsmerge\fR
.RS 4
Use Sublime Merge (requires a graphical session)
.RE
.PP
\fBtkdiff\fR
.RS 4
Use TkDiff (requires a graphical session)
.RE
.PP
\fBtortoisemerge\fR
.RS 4
Use TortoiseMerge (requires a graphical session)
.RE
.PP
\fBvimdiff\fR
.RS 4
Use Vim with a custom layout (see
\fBgit\fR
\fBhelp\fR
\fBmergetool\fR\*(Aqs
\fBBACKEND\fR
\fBSPECIFIC\fR
\fBHINTS\fR
section)
.RE
.PP
\fBvimdiff1\fR
.RS 4
Use Vim with a 2 panes layout (LOCAL and REMOTE)
.RE
.PP
\fBvimdiff2\fR
.RS 4
Use Vim with a 3 panes layout (LOCAL, MERGED and REMOTE)
.RE
.PP
\fBvimdiff3\fR
.RS 4
Use Vim where only the MERGED file is shown
.RE
.PP
\fBvscode\fR
.RS 4
Use Visual Studio Code (requires a graphical session)
.RE
.PP
\fBwinmerge\fR
.RS 4
Use WinMerge (requires a graphical session)
.RE
.PP
\fBxxdiff\fR
.RS 4
Use xxdiff (requires a graphical session)
.RE
.RE
.PP
\fBmerge\&.verbosity\fR
.RS 4
Controls the amount of output shown by the recursive merge strategy\&. Level 0 outputs nothing except a final error message if conflicts were detected\&. Level 1 outputs only conflicts, 2 outputs conflicts and file changes\&. Level 5 and above outputs debugging information\&. The default is level 2\&. Can be overridden by the
\fBGIT_MERGE_VERBOSITY\fR
environment variable\&.
.RE
.PP
\fBmerge\&.\fR\fI<driver>\fR\fB\&.name\fR
.RS 4
Defines a human\-readable name for a custom low\-level merge driver\&. See
\fBgitattributes\fR(5)
for details\&.
.RE
.PP
\fBmerge\&.\fR\fI<driver>\fR\fB\&.driver\fR
.RS 4
Defines the command that implements a custom low\-level merge driver\&. See
\fBgitattributes\fR(5)
for details\&.
.RE
.PP
\fBmerge\&.\fR\fI<driver>\fR\fB\&.recursive\fR
.RS 4
Names a low\-level merge driver to be used when performing an internal merge between common ancestors\&. See
\fBgitattributes\fR(5)
for details\&.
.RE
.PP
\fBmergetool\&.\fR\fI<tool>\fR\fB\&.path\fR
.RS 4
Override the path for the given tool\&. This is useful in case your tool is not in the
\fB$PATH\fR\&.
.RE
.PP
\fBmergetool\&.\fR\fI<tool>\fR\fB\&.cmd\fR
.RS 4
Specify the command to invoke the specified merge tool\&. The specified command is evaluated in shell with the following variables available:
\fBBASE\fR
is the name of a temporary file containing the common base of the files to be merged, if available;
\fBLOCAL\fR
is the name of a temporary file containing the contents of the file on the current branch;
\fBREMOTE\fR
is the name of a temporary file containing the contents of the file from the branch being merged;
\fBMERGED\fR
contains the name of the file to which the merge tool should write the results of a successful merge\&.
.RE
.PP
\fBmergetool\&.\fR\fI<tool>\fR\fB\&.hideResolved\fR
.RS 4
Allows the user to override the global
\fBmergetool\&.hideResolved\fR
value for a specific tool\&. See
\fBmergetool\&.hideResolved\fR
for the full description\&.
.RE
.PP
\fBmergetool\&.\fR\fI<tool>\fR\fB\&.trustExitCode\fR
.RS 4
For a custom merge command, specify whether the exit code of the merge command can be used to determine whether the merge was successful\&. If this is not set to true then the merge target file timestamp is checked, and the merge is assumed to have been successful if the file has been updated; otherwise, the user is prompted to indicate the success of the merge\&.
.RE
.PP
\fBmergetool\&.meld\&.hasOutput\fR
.RS 4
Older versions of
\fBmeld\fR
do not support the
\fB\-\-output\fR
option\&. Git will attempt to detect whether
\fBmeld\fR
supports
\fB\-\-output\fR
by inspecting the output of
\fBmeld\fR
\fB\-\-help\fR\&. Configuring
\fBmergetool\&.meld\&.hasOutput\fR
will make Git skip these checks and use the configured value instead\&. Setting
\fBmergetool\&.meld\&.hasOutput\fR
to
\fBtrue\fR
tells Git to unconditionally use the
\fB\-\-output\fR
option, and
\fBfalse\fR
avoids using
\fB\-\-output\fR\&.
.RE
.PP
\fBmergetool\&.meld\&.useAutoMerge\fR
.RS 4
When the
\fB\-\-auto\-merge\fR
is given, meld will merge all non\-conflicting parts automatically, highlight the conflicting parts, and wait for user decision\&. Setting
\fBmergetool\&.meld\&.useAutoMerge\fR
to
\fBtrue\fR
tells Git to unconditionally use the
\fB\-\-auto\-merge\fR
option with
\fBmeld\fR\&. Setting this value to
\fBauto\fR
makes git detect whether
\fB\-\-auto\-merge\fR
is supported and will only use
\fB\-\-auto\-merge\fR
when available\&. A value of
\fBfalse\fR
avoids using
\fB\-\-auto\-merge\fR
altogether, and is the default value\&.
.RE
.PP
\fBmergetool\&.\fR\fI<variant>\fR\fB\&.layout\fR
.RS 4
Configure the split window layout for vimdiff\(cqs
\fI<variant>\fR, which is any of
\fBvimdiff\fR,
\fBnvimdiff\fR,
\fBgvimdiff\fR\&. Upon launching
\fBgit\fR
\fBmergetool\fR
with
\fB\-\-tool=\fR\fI<variant>\fR
(or without
\fB\-\-tool\fR
if
\fBmerge\&.tool\fR
is configured as
\fI<variant>\fR), Git will consult
\fBmergetool\&.\fR\fI<variant>\fR\fB\&.layout\fR
to determine the tool\(cqs layout\&. If the variant\-specific configuration is not available,
\fBvimdiff\fR
\*(Aq s is used as fallback\&. If that too is not available, a default layout with 4 windows will be used\&. To configure the layout, see the
\fIBACKEND SPECIFIC HINTS\fR
section in
\fBgit-mergetool\fR(1)\&.
.RE
.PP
\fBmergetool\&.hideResolved\fR
.RS 4
During a merge, Git will automatically resolve as many conflicts as possible and write the
\fB$MERGED\fR
file containing conflict markers around any conflicts that it cannot resolve;
\fB$LOCAL\fR
and
\fB$REMOTE\fR
normally are the versions of the file from before Git\(cqs conflict resolution\&. This flag causes
\fB$LOCAL\fR
and
\fB$REMOTE\fR
to be overwritten so that only the unresolved conflicts are presented to the merge tool\&. Can be configured per\-tool via the
\fBmergetool\&.\fR\fI<tool>\fR\fB\&.hideResolved\fR
configuration variable\&. Defaults to
\fBfalse\fR\&.
.RE
.PP
\fBmergetool\&.keepBackup\fR
.RS 4
After performing a merge, the original file with conflict markers can be saved as a file with a \&.\fBorig\fR
extension\&. If this variable is set to
\fBfalse\fR
then this file is not preserved\&. Defaults to
\fBtrue\fR
(i\&.e\&. keep the backup files)\&.
.RE
.PP
\fBmergetool\&.keepTemporaries\fR
.RS 4
When invoking a custom merge tool, Git uses a set of temporary files to pass to the tool\&. If the tool returns an error and this variable is set to
\fBtrue\fR, then these temporary files will be preserved; otherwise, they will be removed after the tool has exited\&. Defaults to
\fBfalse\fR\&.
.RE
.PP
\fBmergetool\&.writeToTemp\fR
.RS 4
Git writes temporary
\fBBASE\fR,
\fBLOCAL\fR, and
\fBREMOTE\fR
versions of conflicting files in the worktree by default\&. Git will attempt to use a temporary directory for these files when set
\fBtrue\fR\&. Defaults to
\fBfalse\fR\&.
.RE
.PP
\fBmergetool\&.prompt\fR
.RS 4
Prompt before each invocation of the merge resolution program\&.
.RE
.PP
\fBmergetool\&.guiDefault\fR
.RS 4
Set
\fBtrue\fR
to use the
\fBmerge\&.guitool\fR
by default (equivalent to specifying the
\fB\-\-gui\fR
argument), or
\fBauto\fR
to select
\fBmerge\&.guitool\fR
or
\fBmerge\&.tool\fR
depending on the presence of a
\fBDISPLAY\fR
environment variable value\&. The default is
\fBfalse\fR, where the
\fB\-\-gui\fR
argument must be provided explicitly for the
\fBmerge\&.guitool\fR
to be used\&.
.RE
.PP
\fBnotes\&.mergeStrategy\fR
.RS 4
Which merge strategy to choose by default when resolving notes conflicts\&. Must be one of
\fBmanual\fR,
\fBours\fR,
\fBtheirs\fR,
\fBunion\fR, or
\fBcat_sort_uniq\fR\&. Defaults to
\fBmanual\fR\&. See the "NOTES MERGE STRATEGIES" section of
\fBgit-notes\fR(1)
for more information on each strategy\&.
.sp
This setting can be overridden by passing the
\fB\-\-strategy\fR
option to
\fBgit-notes\fR(1)\&.
.RE
.PP
\fBnotes\&.\fR\fI<name>\fR\fB\&.mergeStrategy\fR
.RS 4
Which merge strategy to choose when doing a notes merge into
\fBrefs/notes/\fR\fI<name>\fR\&. This overrides the more general
\fBnotes\&.mergeStrategy\fR\&. See the "NOTES MERGE STRATEGIES" section in
\fBgit-notes\fR(1)
for more information on the available strategies\&.
.RE
.PP
\fBnotes\&.displayRef\fR
.RS 4
Which ref (or refs, if a glob or specified more than once), in addition to the default set by
\fBcore\&.notesRef\fR
or
\fBGIT_NOTES_REF\fR, to read notes from when showing commit messages with the
\fBgit\fR
\fBlog\fR
family of commands\&.
.sp
This setting can be overridden with the
\fBGIT_NOTES_DISPLAY_REF\fR
environment variable, which must be a colon separated list of refs or globs\&.
.sp
A warning will be issued for refs that do not exist, but a glob that does not match any refs is silently ignored\&.
.sp
This setting can be disabled by the
\fB\-\-no\-notes\fR
option to the
\fBgit-log\fR(1)
family of commands, or by the
\fB\-\-notes=\fR\fI<ref>\fR
option accepted by those commands\&.
.sp
The effective value of
\fBcore\&.notesRef\fR
(possibly overridden by
\fBGIT_NOTES_REF\fR) is also implicitly added to the list of refs to be displayed\&.
.RE
.PP
\fBnotes\&.rewrite\&.\fR\fI<command>\fR
.RS 4
When rewriting commits with
\fI<command>\fR
(currently
\fBamend\fR
or
\fBrebase\fR), if this variable is
\fBfalse\fR, git will not copy notes from the original to the rewritten commit\&. Defaults to
\fBtrue\fR\&. See also
\fBnotes\&.rewriteRef\fR
below\&.
.sp
This setting can be overridden with the
\fBGIT_NOTES_REWRITE_REF\fR
environment variable, which must be a colon separated list of refs or globs\&.
.RE
.PP
\fBnotes\&.rewriteMode\fR
.RS 4
When copying notes during a rewrite (see the
\fBnotes\&.rewrite\&.\fR\fI<command>\fR
option), determines what to do if the target commit already has a note\&. Must be one of
\fBoverwrite\fR,
\fBconcatenate\fR,
\fBcat_sort_uniq\fR, or
\fBignore\fR\&. Defaults to
\fBconcatenate\fR\&.
.sp
This setting can be overridden with the
\fBGIT_NOTES_REWRITE_MODE\fR
environment variable\&.
.RE
.PP
\fBnotes\&.rewriteRef\fR
.RS 4
When copying notes during a rewrite, specifies the (fully qualified) ref whose notes should be copied\&. May be a glob, in which case notes in all matching refs will be copied\&. You may also specify this configuration several times\&.
.sp
Does not have a default value; you must configure this variable to enable note rewriting\&. Set it to
\fBrefs/notes/commits\fR
to enable rewriting for the default commit notes\&.
.sp
Can be overridden with the
\fBGIT_NOTES_REWRITE_REF\fR
environment variable\&. See
\fBnotes\&.rewrite\&.\fR\fI<command>\fR
above for a further description of its format\&.
.RE
.PP
pack\&.window
.RS 4
The size of the window used by
\fBgit-pack-objects\fR(1)
when no window size is given on the command line\&. Defaults to 10\&.
.RE
.PP
pack\&.depth
.RS 4
The maximum delta depth used by
\fBgit-pack-objects\fR(1)
when no maximum depth is given on the command line\&. Defaults to 50\&. Maximum value is 4095\&.
.RE
.PP
pack\&.windowMemory
.RS 4
The maximum size of memory that is consumed by each thread in
\fBgit-pack-objects\fR(1)
for pack window memory when no limit is given on the command line\&. The value can be suffixed with "k", "m", or "g"\&. When left unconfigured (or set explicitly to 0), there will be no limit\&.
.RE
.PP
pack\&.compression
.RS 4
An integer \-1\&.\&.9, indicating the compression level for objects in a pack file\&. \-1 is the zlib default\&. 0 means no compression, and 1\&.\&.9 are various speed/size tradeoffs, 9 being slowest\&. If not set, defaults to core\&.compression\&. If that is not set, defaults to \-1, the zlib default, which is "a default compromise between speed and compression (currently equivalent to level 6)\&."
.sp
Note that changing the compression level will not automatically recompress all existing objects\&. You can force recompression by passing the \-F option to
\fBgit-repack\fR(1)\&.
.RE
.PP
pack\&.allowPackReuse
.RS 4
When true or "single", and when reachability bitmaps are enabled, pack\-objects will try to send parts of the bitmapped packfile verbatim\&. When "multi", and when a multi\-pack reachability bitmap is available, pack\-objects will try to send parts of all packs in the MIDX\&.
.sp
If only a single pack bitmap is available, and
\fBpack\&.allowPackReuse\fR
is set to "multi", reuse parts of just the bitmapped packfile\&. This can reduce memory and CPU usage to serve fetches, but might result in sending a slightly larger pack\&. Defaults to true\&.
.RE
.PP
pack\&.island
.RS 4
An extended regular expression configuring a set of delta islands\&. See "DELTA ISLANDS" in
\fBgit-pack-objects\fR(1)
for details\&.
.RE
.PP
pack\&.islandCore
.RS 4
Specify an island name which gets to have its objects be packed first\&. This creates a kind of pseudo\-pack at the front of one pack, so that the objects from the specified island are hopefully faster to copy into any pack that should be served to a user requesting these objects\&. In practice this means that the island specified should likely correspond to what is the most commonly cloned in the repo\&. See also "DELTA ISLANDS" in
\fBgit-pack-objects\fR(1)\&.
.RE
.PP
pack\&.deltaCacheSize
.RS 4
The maximum memory in bytes used for caching deltas in
\fBgit-pack-objects\fR(1)
before writing them out to a pack\&. This cache is used to speed up the writing object phase by not having to recompute the final delta result once the best match for all objects is found\&. Repacking large repositories on machines which are tight with memory might be badly impacted by this though, especially if this cache pushes the system into swapping\&. A value of 0 means no limit\&. The smallest size of 1 byte may be used to virtually disable this cache\&. Defaults to 256 MiB\&.
.RE
.PP
pack\&.deltaCacheLimit
.RS 4
The maximum size of a delta, that is cached in
\fBgit-pack-objects\fR(1)\&. This cache is used to speed up the writing object phase by not having to recompute the final delta result once the best match for all objects is found\&. Defaults to 1000\&. Maximum value is 65535\&.
.RE
.PP
pack\&.threads
.RS 4
Specifies the number of threads to spawn when searching for best delta matches\&. This requires that
\fBgit-pack-objects\fR(1)
be compiled with pthreads otherwise this option is ignored with a warning\&. This is meant to reduce packing time on multiprocessor machines\&. The required amount of memory for the delta search window is however multiplied by the number of threads\&. Specifying 0 will cause Git to auto\-detect the number of CPUs and set the number of threads accordingly\&.
.RE
.PP
pack\&.indexVersion
.RS 4
Specify the default pack index version\&. Valid values are 1 for legacy pack index used by Git versions prior to 1\&.5\&.2, and 2 for the new pack index with capabilities for packs larger than 4 GB as well as proper protection against the repacking of corrupted packs\&. Version 2 is the default\&. Note that version 2 is enforced and this config option is ignored whenever the corresponding pack is larger than 2 GB\&.
.sp
If you have an old Git that does not understand the version 2
\fB*\&.idx\fR
file, cloning or fetching over a non\-native protocol (e\&.g\&. "http") that will copy both
\fB*\&.pack\fR
file and corresponding
\fB*\&.idx\fR
file from the other side may give you a repository that cannot be accessed with your older version of Git\&. If the
\fB*\&.pack\fR
file is smaller than 2 GB, however, you can use
\fBgit-index-pack\fR(1)
on the *\&.pack file to regenerate the
\fB*\&.idx\fR
file\&.
.RE
.PP
pack\&.packSizeLimit
.RS 4
The maximum size of a pack\&. This setting only affects packing to a file when repacking, i\&.e\&. the git:// protocol is unaffected\&. It can be overridden by the
\fB\-\-max\-pack\-size\fR
option of
\fBgit-repack\fR(1)\&. Reaching this limit results in the creation of multiple packfiles\&.
.sp
Note that this option is rarely useful, and may result in a larger total on\-disk size (because Git will not store deltas between packs) and worse runtime performance (object lookup within multiple packs is slower than a single pack, and optimizations like reachability bitmaps cannot cope with multiple packs)\&.
.sp
If you need to actively run Git using smaller packfiles (e\&.g\&., because your filesystem does not support large files), this option may help\&. But if your goal is to transmit a packfile over a medium that supports limited sizes (e\&.g\&., removable media that cannot store the whole repository), you are likely better off creating a single large packfile and splitting it using a generic multi\-volume archive tool (e\&.g\&., Unix
\fBsplit\fR)\&.
.sp
The minimum size allowed is limited to 1 MiB\&. The default is unlimited\&. Common unit suffixes of
\fIk\fR,
\fIm\fR, or
\fIg\fR
are supported\&.
.RE
.PP
pack\&.useBitmaps
.RS 4
When true, git will use pack bitmaps (if available) when packing to stdout (e\&.g\&., during the server side of a fetch)\&. Defaults to true\&. You should not generally need to turn this off unless you are debugging pack bitmaps\&.
.RE
.PP
pack\&.useBitmapBoundaryTraversal
.RS 4
When true, Git will use an experimental algorithm for computing reachability queries with bitmaps\&. Instead of building up complete bitmaps for all of the negated tips and then OR\-ing them together, consider negated tips with existing bitmaps as additive (i\&.e\&. OR\-ing them into the result if they exist, ignoring them otherwise), and build up a bitmap at the boundary instead\&.
.sp
When using this algorithm, Git may include too many objects as a result of not opening up trees belonging to certain UNINTERESTING commits\&. This inexactness matches the non\-bitmap traversal algorithm\&.
.sp
In many cases, this can provide a speed\-up over the exact algorithm, particularly when there is poor bitmap coverage of the negated side of the query\&.
.RE
.PP
pack\&.useSparse
.RS 4
When true, git will default to using the
\fI\-\-sparse\fR
option in
\fIgit pack\-objects\fR
when the
\fI\-\-revs\fR
option is present\&. This algorithm only walks trees that appear in paths that introduce new objects\&. This can have significant performance benefits when computing a pack to send a small change\&. However, it is possible that extra objects are added to the pack\-file if the included commits contain certain types of direct renames\&. Default is
\fBtrue\fR\&.
.RE
.PP
pack\&.usePathWalk
.RS 4
Enable the
\fB\-\-path\-walk\fR
option by default for
\fBgit\fR
\fBpack\-objects\fR
processes\&. See
\fBgit-pack-objects\fR(1)
for full details\&.
.RE
.PP
pack\&.preferBitmapTips
.RS 4
When selecting which commits will receive bitmaps, prefer a commit at the tip of any reference that is a suffix of any value of this configuration over any other commits in the "selection window"\&.
.sp
Note that setting this configuration to
\fBrefs/foo\fR
does not mean that the commits at the tips of
\fBrefs/foo/bar\fR
and
\fBrefs/foo/baz\fR
will necessarily be selected\&. This is because commits are selected for bitmaps from within a series of windows of variable length\&.
.sp
If a commit at the tip of any reference which is a suffix of any value of this configuration is seen in a window, it is immediately given preference over any other commit in that window\&.
.RE
.PP
pack\&.writeBitmaps (deprecated)
.RS 4
This is a deprecated synonym for
\fBrepack\&.writeBitmaps\fR\&.
.RE
.PP
pack\&.writeBitmapHashCache
.RS 4
When true, git will include a "hash cache" section in the bitmap index (if one is written)\&. This cache can be used to feed git\(cqs delta heuristics, potentially leading to better deltas between bitmapped and non\-bitmapped objects (e\&.g\&., when serving a fetch between an older, bitmapped pack and objects that have been pushed since the last gc)\&. The downside is that it consumes 4 bytes per object of disk space\&. Defaults to true\&.
.sp
When writing a multi\-pack reachability bitmap, no new namehashes are computed; instead, any namehashes stored in an existing bitmap are permuted into their appropriate location when writing a new bitmap\&.
.RE
.PP
pack\&.writeBitmapLookupTable
.RS 4
When true, Git will include a "lookup table" section in the bitmap index (if one is written)\&. This table is used to defer loading individual bitmaps as late as possible\&. This can be beneficial in repositories that have relatively large bitmap indexes\&. Defaults to false\&.
.RE
.PP
pack\&.readReverseIndex
.RS 4
When true, git will read any \&.rev file(s) that may be available (see:
\fBgitformat-pack\fR(5))\&. When false, the reverse index will be generated from scratch and stored in memory\&. Defaults to true\&.
.RE
.PP
pack\&.writeReverseIndex
.RS 4
When true, git will write a corresponding \&.rev file (see:
\fBgitformat-pack\fR(5)) for each new packfile that it writes in all places except for
\fBgit-fast-import\fR(1)
and in the bulk checkin mechanism\&. Defaults to true\&.
.RE
.PP
pager\&.<cmd>
.RS 4
If the value is boolean, turns on or off pagination of the output of a particular Git subcommand when writing to a tty\&. Otherwise, turns on pagination for the subcommand using the pager specified by the value of
\fBpager\&.\fR\fI<cmd>\fR\&. If
\fB\-\-paginate\fR
or
\fB\-\-no\-pager\fR
is specified on the command line, it takes precedence over this option\&. To disable pagination for all commands, set
\fBcore\&.pager\fR
or
\fBGIT_PAGER\fR
to
\fBcat\fR\&.
.RE
.PP
pretty\&.<name>
.RS 4
Alias for a \-\-pretty= format string, as specified in
\fBgit-log\fR(1)\&. Any aliases defined here can be used just as the built\-in pretty formats could\&. For example, running
\fBgit\fR
\fBconfig\fR
\fBpretty\&.changelog\fR
"format:*
\fB%H\fR
\fB%s\fR" would cause the invocation
\fBgit\fR
\fBlog\fR
\fB\-\-pretty=changelog\fR
to be equivalent to running
\fBgit\fR
\fBlog\fR
"\-\-pretty=format:*
\fB%H\fR
\fB%s\fR"\&. Note that an alias with the same name as a built\-in format will be silently ignored\&.
.RE
.PP
promisor\&.quiet
.RS 4
If set to "true" assume
\fB\-\-quiet\fR
when fetching additional objects for a partial clone\&.
.RE
.PP
promisor\&.advertise
.RS 4
If set to "true", a server will use the "promisor\-remote" capability, see
\fBgitprotocol-v2\fR(5), to advertise the promisor remotes it is using, if it uses some\&. Default is "false", which means the "promisor\-remote" capability is not advertised\&.
.RE
.PP
promisor\&.acceptFromServer
.RS 4
If set to "all", a client will accept all the promisor remotes a server might advertise using the "promisor\-remote" capability\&. If set to "knownName" the client will accept promisor remotes which are already configured on the client and have the same name as those advertised by the client\&. This is not very secure, but could be used in a corporate setup where servers and clients are trusted to not switch name and URLs\&. If set to "knownUrl", the client will accept promisor remotes which have both the same name and the same URL configured on the client as the name and URL advertised by the server\&. This is more secure than "all" or "knownName", so it should be used if possible instead of those options\&. Default is "none", which means no promisor remote advertised by a server will be accepted\&. By accepting a promisor remote, the client agrees that the server might omit objects that are lazily fetchable from this promisor remote from its responses to "fetch" and "clone" requests from the client\&. Name and URL comparisons are case sensitive\&. See
\fBgitprotocol-v2\fR(5)\&.
.RE
.PP
protocol\&.allow
.RS 4
If set, provide a user defined default policy for all protocols which don\(cqt explicitly have a policy (\fBprotocol\&.\fR\fI<name>\fR\fB\&.allow\fR)\&. By default, if unset, known\-safe protocols (http, https, git, ssh) have a default policy of
\fBalways\fR, known\-dangerous protocols (ext) have a default policy of
\fBnever\fR, and all other protocols (including file) have a default policy of
\fBuser\fR\&. Supported policies:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBalways\fR
\- protocol is always able to be used\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBnever\fR
\- protocol is never able to be used\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBuser\fR
\- protocol is only able to be used when
\fBGIT_PROTOCOL_FROM_USER\fR
is either unset or has a value of 1\&. This policy should be used when you want a protocol to be directly usable by the user but don\(cqt want it used by commands which execute clone/fetch/push commands without user input, e\&.g\&. recursive submodule initialization\&.
.RE
.RE
.PP
protocol\&.<name>\&.allow
.RS 4
Set a policy to be used by protocol
\fI<name>\fR
with clone/fetch/push commands\&. See
\fBprotocol\&.allow\fR
above for the available policies\&.
.sp
The protocol names currently used by git are:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBfile\fR: any local file\-based path (including
\fBfile://\fR
URLs, or local paths)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBgit\fR: the anonymous git protocol over a direct TCP connection (or proxy, if configured)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBssh\fR: git over ssh (including
\fBhost:path\fR
syntax,
\fBssh://\fR, etc)\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBhttp\fR: git over http, both "smart http" and "dumb http"\&. Note that this does
\fInot\fR
include
\fBhttps\fR; if you want to configure both, you must do so individually\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
any external helpers are named by their protocol (e\&.g\&., use
\fBhg\fR
to allow the
\fBgit\-remote\-hg\fR
helper)
.RE
.RE
.PP
protocol\&.version
.RS 4
If set, clients will attempt to communicate with a server using the specified protocol version\&. If the server does not support it, communication falls back to version 0\&. If unset, the default is
\fB2\fR\&. Supported versions:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fB0\fR
\- the original wire protocol\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fB1\fR
\- the original wire protocol with the addition of a version string in the initial response from the server\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fB2\fR
\- Wire protocol version 2, see
\fBgitprotocol-v2\fR(5)\&.
.RE
.RE
.PP
pull\&.ff
.RS 4
By default, Git does not create an extra merge commit when merging a commit that is a descendant of the current commit\&. Instead, the tip of the current branch is fast\-forwarded\&. When set to
\fBfalse\fR, this variable tells Git to create an extra merge commit in such a case (equivalent to giving the
\fB\-\-no\-ff\fR
option from the command line)\&. When set to
\fBonly\fR, only such fast\-forward merges are allowed (equivalent to giving the
\fB\-\-ff\-only\fR
option from the command line)\&. This setting overrides
\fBmerge\&.ff\fR
when pulling\&.
.RE
.PP
pull\&.rebase
.RS 4
When true, rebase branches on top of the fetched branch, instead of merging the default branch from the default remote when "git pull" is run\&. See "branch\&.<name>\&.rebase" for setting this on a per\-branch basis\&.
.sp
When
\fBmerges\fR
(or just
\fIm\fR), pass the
\fB\-\-rebase\-merges\fR
option to
\fIgit rebase\fR
so that the local merge commits are included in the rebase (see
\fBgit-rebase\fR(1)
for details)\&.
.sp
When the value is
\fBinteractive\fR
(or just
\fIi\fR), the rebase is run in interactive mode\&.
.sp
\fBNOTE\fR: this is a possibly dangerous operation; do
\fBnot\fR
use it unless you understand the implications (see
\fBgit-rebase\fR(1)
for details)\&.
.RE
.PP
pull\&.octopus
.RS 4
The default merge strategy to use when pulling multiple branches at once\&.
.RE
.PP
pull\&.autoStash
.RS 4
When set to true, automatically create a temporary stash entry to record the local changes before the operation begins, and restore them after the operation completes\&. When your "git pull" rebases (instead of merges), this may be convenient, since unlike merging pull that tolerates local changes that do not interfere with the merge, rebasing pull refuses to work with any local changes\&.
.sp
If
\fBpull\&.autostash\fR
is set (either to true or false),
\fBmerge\&.autostash\fR
and
\fBrebase\&.autostash\fR
are ignored\&. If
\fBpull\&.autostash\fR
is not set at all, depending on the value of
\fBpull\&.rebase\fR,
\fBmerge\&.autostash\fR
or
\fBrebase\&.autostash\fR
is used instead\&. Can be overridden by the
\fB\-\-\fR[\fBno\-\fR]\fBautostash\fR
command line option\&.
.RE
.PP
pull\&.twohead
.RS 4
The default merge strategy to use when pulling a single branch\&.
.RE
.PP
push\&.autoSetupRemote
.RS 4
If set to "true" assume
\fB\-\-set\-upstream\fR
on default push when no upstream tracking exists for the current branch; this option takes effect with push\&.default options
\fIsimple\fR,
\fIupstream\fR, and
\fIcurrent\fR\&. It is useful if by default you want new branches to be pushed to the default remote (like the behavior of
\fIpush\&.default=current\fR) and you also want the upstream tracking to be set\&. Workflows most likely to benefit from this option are
\fIsimple\fR
central workflows where all branches are expected to have the same name on the remote\&.
.RE
.PP
push\&.default
.RS 4
Defines the action
\fBgit\fR
\fBpush\fR
should take if no refspec is given (whether from the command\-line, config, or elsewhere)\&. Different values are well\-suited for specific workflows; for instance, in a purely central workflow (i\&.e\&. the fetch source is equal to the push destination),
\fBupstream\fR
is probably what you want\&. Possible values are:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBnothing\fR
\- do not push anything (error out) unless a refspec is given\&. This is primarily meant for people who want to avoid mistakes by always being explicit\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBcurrent\fR
\- push the current branch to update a branch with the same name on the receiving end\&. Works in both central and non\-central workflows\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBupstream\fR
\- push the current branch back to the branch whose changes are usually integrated into the current branch (which is called
\fB@\fR{upstream})\&. This mode only makes sense if you are pushing to the same repository you would normally pull from (i\&.e\&. central workflow)\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBtracking\fR
\- This is a deprecated synonym for
\fBupstream\fR\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBsimple\fR
\- push the current branch with the same name on the remote\&.
.sp
If you are working on a centralized workflow (pushing to the same repository you pull from, which is typically
\fBorigin\fR), then you need to configure an upstream branch with the same name\&.
.sp
This mode is the default since Git 2\&.0, and is the safest option suited for beginners\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBmatching\fR
\- push all branches having the same name on both ends\&. This makes the repository you are pushing to remember the set of branches that will be pushed out (e\&.g\&. if you always push
\fImaint\fR
and
\fImaster\fR
there and no other branches, the repository you push to will have these two branches, and your local
\fImaint\fR
and
\fImaster\fR
will be pushed there)\&.
.sp
To use this mode effectively, you have to make sure
\fIall\fR
the branches you would push out are ready to be pushed out before running
\fIgit push\fR, as the whole point of this mode is to allow you to push all of the branches in one go\&. If you usually finish work on only one branch and push out the result, while other branches are unfinished, this mode is not for you\&. Also this mode is not suitable for pushing into a shared central repository, as other people may add new branches there, or update the tip of existing branches outside your control\&.
.sp
This used to be the default, but not since Git 2\&.0 (\fBsimple\fR
is the new default)\&.
.RE
.RE
.PP
push\&.followTags
.RS 4
If set to true, enable
\fB\-\-follow\-tags\fR
option by default\&. You may override this configuration at time of push by specifying
\fB\-\-no\-follow\-tags\fR\&.
.RE
.PP
push\&.gpgSign
.RS 4
May be set to a boolean value, or the string
\fIif\-asked\fR\&. A true value causes all pushes to be GPG signed, as if
\fB\-\-signed\fR
is passed to
\fBgit-push\fR(1)\&. The string
\fIif\-asked\fR
causes pushes to be signed if the server supports it, as if
\fB\-\-signed=if\-asked\fR
is passed to
\fIgit push\fR\&. A false value may override a value from a lower\-priority config file\&. An explicit command\-line flag always overrides this config option\&.
.RE
.PP
push\&.pushOption
.RS 4
When no
\fB\-\-push\-option=\fR\fI<option>\fR
argument is given from the command line,
\fBgit\fR
\fBpush\fR
behaves as if each <value> of this variable is given as
\fB\-\-push\-option=\fR\fI<value>\fR\&.
.sp
This is a multi\-valued variable, and an empty value can be used in a higher priority configuration file (e\&.g\&. \&.\fBgit/config\fR
in a repository) to clear the values inherited from a lower priority configuration files (e\&.g\&.
\fB$HOME/\&.gitconfig\fR)\&.
.sp
.if n \{\
.RS 4
.\}
.nf
Example:

/etc/gitconfig
  push\&.pushoption = a
  push\&.pushoption = b

~/\&.gitconfig
  push\&.pushoption = c

repo/\&.git/config
  push\&.pushoption =
  push\&.pushoption = b

This will result in only b (a and c are cleared)\&.
.fi
.if n \{\
.RE
.\}
.RE
.PP
push\&.recurseSubmodules
.RS 4
May be "check", "on\-demand", "only", or "no", with the same behavior as that of "push \-\-recurse\-submodules"\&. If not set,
\fIno\fR
is used by default, unless
\fIsubmodule\&.recurse\fR
is set (in which case a
\fItrue\fR
value means
\fIon\-demand\fR)\&.
.RE
.PP
push\&.useForceIfIncludes
.RS 4
If set to "true", it is equivalent to specifying
\fB\-\-force\-if\-includes\fR
as an option to
\fBgit-push\fR(1)
in the command line\&. Adding
\fB\-\-no\-force\-if\-includes\fR
at the time of push overrides this configuration setting\&.
.RE
.PP
push\&.negotiate
.RS 4
If set to "true", attempt to reduce the size of the packfile sent by rounds of negotiation in which the client and the server attempt to find commits in common\&. If "false", Git will rely solely on the server\(cqs ref advertisement to find commits in common\&.
.RE
.PP
push\&.useBitmaps
.RS 4
If set to "false", disable use of bitmaps for "git push" even if
\fBpack\&.useBitmaps\fR
is "true", without preventing other git operations from using bitmaps\&. Default is true\&.
.RE
.PP
rebase\&.backend
.RS 4
Default backend to use for rebasing\&. Possible choices are
\fIapply\fR
or
\fImerge\fR\&. In the future, if the merge backend gains all remaining capabilities of the apply backend, this setting may become unused\&.
.RE
.PP
rebase\&.stat
.RS 4
Whether to show a diffstat of what changed upstream since the last rebase\&. False by default\&.
.RE
.PP
rebase\&.autoSquash
.RS 4
If set to true, enable the
\fB\-\-autosquash\fR
option of
\fBgit-rebase\fR(1)
by default for interactive mode\&. This can be overridden with the
\fB\-\-no\-autosquash\fR
option\&.
.RE
.PP
rebase\&.autoStash
.RS 4
When set to true, automatically create a temporary stash entry before the operation begins, and apply it after the operation ends\&. This means that you can run rebase on a dirty worktree\&. However, use with care: the final stash application after a successful rebase might result in non\-trivial conflicts\&. This option can be overridden by the
\fB\-\-no\-autostash\fR
and
\fB\-\-autostash\fR
options of
\fBgit-rebase\fR(1)\&. Defaults to false\&.
.RE
.PP
rebase\&.updateRefs
.RS 4
If set to true enable
\fB\-\-update\-refs\fR
option by default\&.
.RE
.PP
rebase\&.missingCommitsCheck
.RS 4
If set to "warn", git rebase \-i will print a warning if some commits are removed (e\&.g\&. a line was deleted), however the rebase will still proceed\&. If set to "error", it will print the previous warning and stop the rebase,
\fIgit rebase \-\-edit\-todo\fR
can then be used to correct the error\&. If set to "ignore", no checking is done\&. To drop a commit without warning or error, use the
\fBdrop\fR
command in the todo list\&. Defaults to "ignore"\&.
.RE
.PP
rebase\&.instructionFormat
.RS 4
A format string, as specified in
\fBgit-log\fR(1), to be used for the todo list during an interactive rebase\&. The format will automatically have the commit hash prepended to the format\&.
.RE
.PP
rebase\&.abbreviateCommands
.RS 4
If set to true,
\fBgit\fR
\fBrebase\fR
will use abbreviated command names in the todo list resulting in something like this:
.sp
.if n \{\
.RS 4
.\}
.nf
        p deadbee The oneline of the commit
        p fa1afe1 The oneline of the next commit
        \&.\&.\&.
.fi
.if n \{\
.RE
.\}
.sp
instead of:
.sp
.if n \{\
.RS 4
.\}
.nf
        pick deadbee The oneline of the commit
        pick fa1afe1 The oneline of the next commit
        \&.\&.\&.
.fi
.if n \{\
.RE
.\}
.sp
Defaults to false\&.
.RE
.PP
rebase\&.rescheduleFailedExec
.RS 4
Automatically reschedule
\fBexec\fR
commands that failed\&. This only makes sense in interactive mode (or when an
\fB\-\-exec\fR
option was provided)\&. This is the same as specifying the
\fB\-\-reschedule\-failed\-exec\fR
option\&.
.RE
.PP
rebase\&.forkPoint
.RS 4
If set to false set
\fB\-\-no\-fork\-point\fR
option by default\&.
.RE
.PP
rebase\&.rebaseMerges
.RS 4
Whether and how to set the
\fB\-\-rebase\-merges\fR
option by default\&. Can be
\fBrebase\-cousins\fR,
\fBno\-rebase\-cousins\fR, or a boolean\&. Setting to true or to
\fBno\-rebase\-cousins\fR
is equivalent to
\fB\-\-rebase\-merges=no\-rebase\-cousins\fR, setting to
\fBrebase\-cousins\fR
is equivalent to
\fB\-\-rebase\-merges=rebase\-cousins\fR, and setting to false is equivalent to
\fB\-\-no\-rebase\-merges\fR\&. Passing
\fB\-\-rebase\-merges\fR
on the command line, with or without an argument, overrides any
\fBrebase\&.rebaseMerges\fR
configuration\&.
.RE
.PP
rebase\&.maxLabelLength
.RS 4
When generating label names from commit subjects, truncate the names to this length\&. By default, the names are truncated to a little less than
\fBNAME_MAX\fR
(to allow e\&.g\&. \&.\fBlock\fR
files to be written for the corresponding loose refs)\&.
.RE
.PP
receive\&.advertiseAtomic
.RS 4
By default, git\-receive\-pack will advertise the atomic push capability to its clients\&. If you don\(cqt want to advertise this capability, set this variable to false\&.
.RE
.PP
receive\&.advertisePushOptions
.RS 4
When set to true, git\-receive\-pack will advertise the push options capability to its clients\&. False by default\&.
.RE
.PP
receive\&.autogc
.RS 4
By default, git\-receive\-pack will run "git maintenance run \-\-auto" after receiving data from git\-push and updating refs\&. You can stop it by setting this variable to false\&.
.RE
.PP
receive\&.certNonceSeed
.RS 4
By setting this variable to a string,
\fBgit\fR
\fBreceive\-pack\fR
will accept a
\fBgit\fR
\fBpush\fR
\fB\-\-signed\fR
and verify it by using a "nonce" protected by HMAC using this string as a secret key\&.
.RE
.PP
receive\&.certNonceSlop
.RS 4
When a
\fBgit\fR
\fBpush\fR
\fB\-\-signed\fR
sends a push certificate with a "nonce" that was issued by a receive\-pack serving the same repository within this many seconds, export the "nonce" found in the certificate to
\fBGIT_PUSH_CERT_NONCE\fR
to the hooks (instead of what the receive\-pack asked the sending side to include)\&. This may allow writing checks in
\fBpre\-receive\fR
and
\fBpost\-receive\fR
a bit easier\&. Instead of checking
\fBGIT_PUSH_CERT_NONCE_SLOP\fR
environment variable that records by how many seconds the nonce is stale to decide if they want to accept the certificate, they only can check
\fBGIT_PUSH_CERT_NONCE_STATUS\fR
is
\fBOK\fR\&.
.RE
.PP
receive\&.fsckObjects
.RS 4
If it is set to true, git\-receive\-pack will check all received objects\&. See
\fBtransfer\&.fsckObjects\fR
for what\(cqs checked\&. Defaults to false\&. If not set, the value of
\fBtransfer\&.fsckObjects\fR
is used instead\&.
.RE
.PP
receive\&.fsck\&.<msg\-id>
.RS 4
Acts like
\fBfsck\&.\fR\fI<msg\-id>\fR, but is used by
\fBgit-receive-pack\fR(1)
instead of
\fBgit-fsck\fR(1)\&. See the
\fBfsck\&.\fR\fI<msg\-id>\fR
documentation for details\&.
.RE
.PP
receive\&.fsck\&.skipList
.RS 4
Acts like
\fBfsck\&.skipList\fR, but is used by
\fBgit-receive-pack\fR(1)
instead of
\fBgit-fsck\fR(1)\&. See the
\fBfsck\&.skipList\fR
documentation for details\&.
.RE
.PP
receive\&.keepAlive
.RS 4
After receiving the pack from the client,
\fBreceive\-pack\fR
may produce no output (if
\fB\-\-quiet\fR
was specified) while processing the pack, causing some networks to drop the TCP connection\&. With this option set, if
\fBreceive\-pack\fR
does not transmit any data in this phase for
\fBreceive\&.keepAlive\fR
seconds, it will send a short keepalive packet\&. The default is 5 seconds; set to 0 to disable keepalives entirely\&.
.RE
.PP
receive\&.unpackLimit
.RS 4
If the number of objects received in a push is below this limit then the objects will be unpacked into loose object files\&. However if the number of received objects equals or exceeds this limit then the received pack will be stored as a pack, after adding any missing delta bases\&. Storing the pack from a push can make the push operation complete faster, especially on slow filesystems\&. If not set, the value of
\fBtransfer\&.unpackLimit\fR
is used instead\&.
.RE
.PP
receive\&.maxInputSize
.RS 4
If the size of the incoming pack stream is larger than this limit, then git\-receive\-pack will error out, instead of accepting the pack file\&. If not set or set to 0, then the size is unlimited\&.
.RE
.PP
receive\&.denyDeletes
.RS 4
If set to true, git\-receive\-pack will deny a ref update that deletes the ref\&. Use this to prevent such a ref deletion via a push\&.
.RE
.PP
receive\&.denyDeleteCurrent
.RS 4
If set to true, git\-receive\-pack will deny a ref update that deletes the currently checked out branch of a non\-bare repository\&.
.RE
.PP
receive\&.denyCurrentBranch
.RS 4
If set to true or "refuse", git\-receive\-pack will deny a ref update to the currently checked out branch of a non\-bare repository\&. Such a push is potentially dangerous because it brings the HEAD out of sync with the index and working tree\&. If set to "warn", print a warning of such a push to stderr, but allow the push to proceed\&. If set to false or "ignore", allow such pushes with no message\&. Defaults to "refuse"\&.
.sp
Another option is "updateInstead" which will update the working tree if pushing into the current branch\&. This option is intended for synchronizing working directories when one side is not easily accessible via interactive ssh (e\&.g\&. a live web site, hence the requirement that the working directory be clean)\&. This mode also comes in handy when developing inside a VM to test and fix code on different Operating Systems\&.
.sp
By default, "updateInstead" will refuse the push if the working tree or the index have any difference from the HEAD, but the
\fBpush\-to\-checkout\fR
hook can be used to customize this\&. See
\fBgithooks\fR(5)\&.
.RE
.PP
receive\&.denyNonFastForwards
.RS 4
If set to true, git\-receive\-pack will deny a ref update which is not a fast\-forward\&. Use this to prevent such an update via a push, even if that push is forced\&. This configuration variable is set when initializing a shared repository\&.
.RE
.PP
receive\&.hideRefs
.RS 4
This variable is the same as
\fBtransfer\&.hideRefs\fR, but applies only to
\fBreceive\-pack\fR
(and so affects pushes, but not fetches)\&. An attempt to update or delete a hidden ref by
\fBgit\fR
\fBpush\fR
is rejected\&.
.RE
.PP
receive\&.procReceiveRefs
.RS 4
This is a multi\-valued variable that defines reference prefixes to match the commands in
\fBreceive\-pack\fR\&. Commands matching the prefixes will be executed by an external hook "proc\-receive", instead of the internal
\fBexecute_commands\fR
function\&. If this variable is not defined, the "proc\-receive" hook will never be used, and all commands will be executed by the internal
\fBexecute_commands\fR
function\&.
.sp
For example, if this variable is set to "refs/for", pushing to reference such as "refs/for/master" will not create or update a reference named "refs/for/master", but may create or update a pull request directly by running the hook "proc\-receive"\&.
.sp
Optional modifiers can be provided in the beginning of the value to filter commands for specific actions: create (a), modify (m), delete (d)\&. A ! can be included in the modifiers to negate the reference prefix entry\&. E\&.g\&.:
.sp
.if n \{\
.RS 4
.\}
.nf
git config \-\-system \-\-add receive\&.procReceiveRefs ad:refs/heads
git config \-\-system \-\-add receive\&.procReceiveRefs !:refs/heads
.fi
.if n \{\
.RE
.\}
.RE
.PP
receive\&.updateServerInfo
.RS 4
If set to true, git\-receive\-pack will run git\-update\-server\-info after receiving data from git\-push and updating refs\&.
.RE
.PP
receive\&.shallowUpdate
.RS 4
If set to true, \&.git/shallow can be updated when new refs require new shallow roots\&. Otherwise those refs are rejected\&.
.RE
.PP
reftable\&.blockSize
.RS 4
The size in bytes used by the reftable backend when writing blocks\&. The block size is determined by the writer, and does not have to be a power of 2\&. The block size must be larger than the longest reference name or log entry used in the repository, as references cannot span blocks\&.
.sp
Powers of two that are friendly to the virtual memory system or filesystem (such as 4kB or 8kB) are recommended\&. Larger sizes (64kB) can yield better compression, with a possible increased cost incurred by readers during access\&.
.sp
The largest block size is
\fB16777215\fR
bytes (15\&.99 MiB)\&. The default value is
\fB4096\fR
bytes (4kB)\&. A value of
\fB0\fR
will use the default value\&.
.RE
.PP
reftable\&.restartInterval
.RS 4
The interval at which to create restart points\&. The reftable backend determines the restart points at file creation\&. Every 16 may be more suitable for smaller block sizes (4k or 8k), every 64 for larger block sizes (64k)\&.
.sp
More frequent restart points reduces prefix compression and increases space consumed by the restart table, both of which increase file size\&.
.sp
Less frequent restart points makes prefix compression more effective, decreasing overall file size, with increased penalties for readers walking through more records after the binary search step\&.
.sp
A maximum of
\fB65535\fR
restart points per block is supported\&.
.sp
The default value is to create restart points every 16 records\&. A value of
\fB0\fR
will use the default value\&.
.RE
.PP
reftable\&.indexObjects
.RS 4
Whether the reftable backend shall write object blocks\&. Object blocks are a reverse mapping of object ID to the references pointing to them\&.
.sp
The default value is
\fBtrue\fR\&.
.RE
.PP
reftable\&.geometricFactor
.RS 4
Whenever the reftable backend appends a new table to the stack, it performs auto compaction to ensure that there is only a handful of tables\&. The backend does this by ensuring that tables form a geometric sequence regarding the respective sizes of each table\&.
.sp
By default, the geometric sequence uses a factor of 2, meaning that for any table, the next\-biggest table must at least be twice as big\&. A maximum factor of 256 is supported\&.
.RE
.PP
reftable\&.lockTimeout
.RS 4
Whenever the reftable backend appends a new table to the stack, it has to lock the central "tables\&.list" file before updating it\&. This config controls how long the process will wait to acquire the lock in case another process has already acquired it\&. Value 0 means not to retry at all; \-1 means to try indefinitely\&. Default is 100 (i\&.e\&., retry for 100ms)\&.
.RE
.PP
remote\&.pushDefault
.RS 4
The remote to push to by default\&. Overrides
\fBbranch\&.\fR\fI<name>\fR\fB\&.remote\fR
for all branches, and is overridden by
\fBbranch\&.\fR\fI<name>\fR\fB\&.pushRemote\fR
for specific branches\&.
.RE
.PP
remote\&.<name>\&.url
.RS 4
The URL of a remote repository\&. See
\fBgit-fetch\fR(1)
or
\fBgit-push\fR(1)\&. A configured remote can have multiple URLs; in this case the first is used for fetching, and all are used for pushing (assuming no
\fBremote\&.\fR\fI<name>\fR\fB\&.pushurl\fR
is defined)\&. Setting this key to the empty string clears the list of urls, allowing you to override earlier config\&.
.RE
.PP
remote\&.<name>\&.pushurl
.RS 4
The push URL of a remote repository\&. See
\fBgit-push\fR(1)\&. If a
\fBpushurl\fR
option is present in a configured remote, it is used for pushing instead of
\fBremote\&.\fR\fI<name>\fR\fB\&.url\fR\&. A configured remote can have multiple push URLs; in this case a push goes to all of them\&. Setting this key to the empty string clears the list of urls, allowing you to override earlier config\&.
.RE
.PP
remote\&.<name>\&.proxy
.RS 4
For remotes that require curl (http, https and ftp), the URL to the proxy to use for that remote\&. Set to the empty string to disable proxying for that remote\&.
.RE
.PP
remote\&.<name>\&.proxyAuthMethod
.RS 4
For remotes that require curl (http, https and ftp), the method to use for authenticating against the proxy in use (probably set in
\fBremote\&.\fR\fI<name>\fR\fB\&.proxy\fR)\&. See
\fBhttp\&.proxyAuthMethod\fR\&.
.RE
.PP
remote\&.<name>\&.fetch
.RS 4
The default set of "refspec" for
\fBgit-fetch\fR(1)\&. See
\fBgit-fetch\fR(1)\&.
.RE
.PP
remote\&.<name>\&.push
.RS 4
The default set of "refspec" for
\fBgit-push\fR(1)\&. See
\fBgit-push\fR(1)\&.
.RE
.PP
remote\&.<name>\&.mirror
.RS 4
If true, pushing to this remote will automatically behave as if the
\fB\-\-mirror\fR
option was given on the command line\&.
.RE
.PP
remote\&.<name>\&.skipDefaultUpdate
.RS 4
A deprecated synonym to
\fBremote\&.\fR\fI<name>\fR\fB\&.skipFetchAll\fR
(if both are set in the configuration files with different values, the value of the last occurrence will be used)\&.
.RE
.PP
remote\&.<name>\&.skipFetchAll
.RS 4
If true, this remote will be skipped when updating using
\fBgit-fetch\fR(1), the
\fBupdate\fR
subcommand of
\fBgit-remote\fR(1), and ignored by the prefetch task of
\fBgit\fR
\fBmaintenance\fR\&.
.RE
.PP
remote\&.<name>\&.receivepack
.RS 4
The default program to execute on the remote side when pushing\&. See option \-\-receive\-pack of
\fBgit-push\fR(1)\&.
.RE
.PP
remote\&.<name>\&.uploadpack
.RS 4
The default program to execute on the remote side when fetching\&. See option \-\-upload\-pack of
\fBgit-fetch-pack\fR(1)\&.
.RE
.PP
remote\&.<name>\&.tagOpt
.RS 4
Setting this value to \-\-no\-tags disables automatic tag following when fetching from remote <name>\&. Setting it to \-\-tags will fetch every tag from remote <name>, even if they are not reachable from remote branch heads\&. Passing these flags directly to
\fBgit-fetch\fR(1)
can override this setting\&. See options \-\-tags and \-\-no\-tags of
\fBgit-fetch\fR(1)\&.
.RE
.PP
remote\&.<name>\&.vcs
.RS 4
Setting this to a value <vcs> will cause Git to interact with the remote with the git\-remote\-<vcs> helper\&.
.RE
.PP
remote\&.<name>\&.prune
.RS 4
When set to true, fetching from this remote by default will also remove any remote\-tracking references that no longer exist on the remote (as if the
\fB\-\-prune\fR
option was given on the command line)\&. Overrides
\fBfetch\&.prune\fR
settings, if any\&.
.RE
.PP
remote\&.<name>\&.pruneTags
.RS 4
When set to true, fetching from this remote by default will also remove any local tags that no longer exist on the remote if pruning is activated in general via
\fBremote\&.\fR\fI<name>\fR\fB\&.prune\fR,
\fBfetch\&.prune\fR
or
\fB\-\-prune\fR\&. Overrides
\fBfetch\&.pruneTags\fR
settings, if any\&.
.sp
See also
\fBremote\&.\fR\fI<name>\fR\fB\&.prune\fR
and the PRUNING section of
\fBgit-fetch\fR(1)\&.
.RE
.PP
remote\&.<name>\&.promisor
.RS 4
When set to true, this remote will be used to fetch promisor objects\&.
.RE
.PP
remote\&.<name>\&.partialclonefilter
.RS 4
The filter that will be applied when fetching from this promisor remote\&. Changing or clearing this value will only affect fetches for new commits\&. To fetch associated objects for commits already present in the local object database, use the
\fB\-\-refetch\fR
option of
\fBgit-fetch\fR(1)\&.
.RE
.PP
remote\&.<name>\&.serverOption
.RS 4
The default set of server options used when fetching from this remote\&. These server options can be overridden by the
\fB\-\-server\-option=\fR
command line arguments\&.
.sp
This is a multi\-valued variable, and an empty value can be used in a higher priority configuration file (e\&.g\&. \&.\fBgit/config\fR
in a repository) to clear the values inherited from a lower priority configuration files (e\&.g\&.
\fB$HOME/\&.gitconfig\fR)\&.
.RE
.PP
remote\&.<name>\&.followRemoteHEAD
.RS 4
How
\fBgit-fetch\fR(1)
should handle updates to
\fBremotes/\fR\fI<name>\fR\fB/HEAD\fR
when fetching using the configured refspecs of a remote\&. The default value is "create", which will create
\fBremotes/\fR\fI<name>\fR\fB/HEAD\fR
if it exists on the remote, but not locally; this will not touch an already existing local reference\&. Setting it to "warn" will print a message if the remote has a different value than the local one; in case there is no local reference, it behaves like "create"\&. A variant on "warn" is "warn\-if\-not\-$branch", which behaves like "warn", but if
\fBHEAD\fR
on the remote is
\fB$branch\fR
it will be silent\&. Setting it to "always" will silently update
\fBremotes/\fR\fI<name>\fR\fB/HEAD\fR
to the value on the remote\&. Finally, setting it to "never" will never change or create the local reference\&.
.RE
.PP
remotes\&.<group>
.RS 4
The list of remotes which are fetched by "git remote update <group>"\&. See
\fBgit-remote\fR(1)\&.
.RE
.PP
repack\&.useDeltaBaseOffset
.RS 4
By default,
\fBgit-repack\fR(1)
creates packs that use delta\-base offset\&. If you need to share your repository with Git older than version 1\&.4\&.4, either directly or via a dumb protocol such as http, then you need to set this option to "false" and repack\&. Access from old Git versions over the native protocol are unaffected by this option\&.
.RE
.PP
repack\&.packKeptObjects
.RS 4
If set to true, makes
\fBgit\fR
\fBrepack\fR
act as if
\fB\-\-pack\-kept\-objects\fR
was passed\&. See
\fBgit-repack\fR(1)
for details\&. Defaults to
\fBfalse\fR
normally, but
\fBtrue\fR
if a bitmap index is being written (either via
\fB\-\-write\-bitmap\-index\fR
or
\fBrepack\&.writeBitmaps\fR)\&.
.RE
.PP
repack\&.useDeltaIslands
.RS 4
If set to true, makes
\fBgit\fR
\fBrepack\fR
act as if
\fB\-\-delta\-islands\fR
was passed\&. Defaults to
\fBfalse\fR\&.
.RE
.PP
repack\&.writeBitmaps
.RS 4
When true, git will write a bitmap index when packing all objects to disk (e\&.g\&., when
\fBgit\fR
\fBrepack\fR
\fB\-a\fR
is run)\&. This index can speed up the "counting objects" phase of subsequent packs created for clones and fetches, at the cost of some disk space and extra time spent on the initial repack\&. This has no effect if multiple packfiles are created\&. Defaults to true on bare repos, false otherwise\&.
.RE
.PP
repack\&.updateServerInfo
.RS 4
If set to false,
\fBgit-repack\fR(1)
will not run
\fBgit-update-server-info\fR(1)\&. Defaults to true\&. Can be overridden when true by the
\fB\-n\fR
option of
\fBgit-repack\fR(1)\&.
.RE
.PP
repack\&.cruftWindow, repack\&.cruftWindowMemory, repack\&.cruftDepth, repack\&.cruftThreads
.RS 4
Parameters used by
\fBgit-pack-objects\fR(1)
when generating a cruft pack and the respective parameters are not given over the command line\&. See similarly named
\fBpack\&.*\fR
configuration variables for defaults and meaning\&.
.RE
.PP
repack\&.midxMustContainCruft
.RS 4
When set to true,
\fBgit-repack\fR(1)
will unconditionally include cruft pack(s), if any, in the multi\-pack index when invoked with
\fB\-\-write\-midx\fR\&. When false, cruft packs are only included in the MIDX when necessary (e\&.g\&., because they might be required to form a reachability closure with MIDX bitmaps)\&. Defaults to true\&.
.RE
.PP
rerere\&.autoUpdate
.RS 4
When set to true,
\fBgit\-rerere\fR
updates the index with the resulting contents after it cleanly resolves conflicts using previously recorded resolutions\&. Defaults to false\&.
.RE
.PP
rerere\&.enabled
.RS 4
Activate recording of resolved conflicts, so that identical conflict hunks can be resolved automatically, should they be encountered again\&. By default,
\fBgit-rerere\fR(1)
is enabled if there is an
\fBrr\-cache\fR
directory under the
\fB$GIT_DIR\fR, e\&.g\&. if "rerere" was previously used in the repository\&.
.RE
.PP
revert\&.reference
.RS 4
Setting this variable to true makes
\fBgit\fR
\fBrevert\fR
behave as if the
\fB\-\-reference\fR
option is given\&.
.RE
.PP
safe\&.bareRepository
.RS 4
Specifies which bare repositories Git will work with\&. The currently supported values are:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBall\fR: Git works with all bare repositories\&. This is the default\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBexplicit\fR: Git only works with bare repositories specified via the top\-level
\fB\-\-git\-dir\fR
command\-line option, or the
\fBGIT_DIR\fR
environment variable (see
\fBgit\fR(1))\&.
.sp
If you do not use bare repositories in your workflow, then it may be beneficial to set
\fBsafe\&.bareRepository\fR
to
\fBexplicit\fR
in your global config\&. This will protect you from attacks that involve cloning a repository that contains a bare repository and running a Git command within that directory\&.
.sp
This config setting is only respected in protected configuration (see
the section called \(lqSCOPES\(rq)\&. This prevents untrusted repositories from tampering with this value\&.
.RE
.RE
.PP
safe\&.directory
.RS 4
These config entries specify Git\-tracked directories that are considered safe even if they are owned by someone other than the current user\&. By default, Git will refuse to even parse a Git config of a repository owned by someone else, let alone run its hooks, and this config setting allows users to specify exceptions, e\&.g\&. for intentionally shared repositories (see the
\fB\-\-shared\fR
option in
\fBgit-init\fR(1))\&.
.sp
This is a multi\-valued setting, i\&.e\&. you can add more than one directory via
\fBgit\fR
\fBconfig\fR
\fB\-\-add\fR\&. To reset the list of safe directories (e\&.g\&. to override any such directories specified in the system config), add a
\fBsafe\&.directory\fR
entry with an empty value\&.
.sp
This config setting is only respected in protected configuration (see
the section called \(lqSCOPES\(rq)\&. This prevents untrusted repositories from tampering with this value\&.
.sp
The value of this setting is interpolated, i\&.e\&.
\fB~/\fR\fI<path>\fR
expands to a path relative to the home directory and
\fB%\fR(\fBprefix\fR)\fB/\fR\fI<path>\fR
expands to a path relative to Git\(cqs (runtime) prefix\&.
.sp
To completely opt\-out of this security check, set
\fBsafe\&.directory\fR
to the string
\fB*\fR\&. This will allow all repositories to be treated as if their directory was listed in the
\fBsafe\&.directory\fR
list\&. If
\fBsafe\&.directory=*\fR
is set in system config and you want to re\-enable this protection, then initialize your list with an empty value before listing the repositories that you deem safe\&. Giving a directory with
\fB/*\fR
appended to it will allow access to all repositories under the named directory\&.
.sp
As explained, Git only allows you to access repositories owned by yourself, i\&.e\&. the user who is running Git, by default\&. When Git is running as
\fIroot\fR
in a non Windows platform that provides sudo, however, git checks the SUDO_UID environment variable that sudo creates and will allow access to the uid recorded as its value in addition to the id from
\fIroot\fR\&. This is to make it easy to perform a common sequence during installation "make && sudo make install"\&. A git process running under
\fIsudo\fR
runs as
\fIroot\fR
but the
\fIsudo\fR
command exports the environment variable to record which id the original user has\&. If that is not what you would prefer and want git to only trust repositories that are owned by root instead, then you can remove the
\fBSUDO_UID\fR
variable from root\(cqs environment before invoking git\&.
.RE
.PP
sendemail\&.identity
.RS 4
A configuration identity\&. When given, causes values in the
\fBsendemail\&.\fR\fI<identity>\fR
subsection to take precedence over values in the
\fBsendemail\fR
section\&. The default identity is the value of
\fBsendemail\&.identity\fR\&.
.RE
.PP
sendemail\&.smtpEncryption
.RS 4
See
\fBgit-send-email\fR(1)
for description\&. Note that this setting is not subject to the
\fBidentity\fR
mechanism\&.
.RE
.PP
sendemail\&.smtpSSLCertPath
.RS 4
Path to ca\-certificates (either a directory or a single file)\&. Set it to an empty string to disable certificate verification\&.
.RE
.PP
sendemail\&.<identity>\&.*
.RS 4
Identity\-specific versions of the
\fBsendemail\&.*\fR
parameters found below, taking precedence over those when this identity is selected, through either the command\-line or
\fBsendemail\&.identity\fR\&.
.RE
.PP
sendemail\&.multiEdit
.RS 4
If
\fBtrue\fR
(default), a single editor instance will be spawned to edit files you have to edit (patches when
\fB\-\-annotate\fR
is used, and the summary when
\fB\-\-compose\fR
is used)\&. If
\fBfalse\fR, files will be edited one after the other, spawning a new editor each time\&.
.RE
.PP
sendemail\&.confirm
.RS 4
Sets the default for whether to confirm before sending\&. Must be one of
\fBalways\fR,
\fBnever\fR,
\fBcc\fR,
\fBcompose\fR, or
\fBauto\fR\&. See
\fB\-\-confirm\fR
in the
\fBgit-send-email\fR(1)
documentation for the meaning of these values\&.
.RE
.PP
sendemail\&.mailmap
.RS 4
If
\fBtrue\fR, makes
\fBgit-send-email\fR(1)
assume
\fB\-\-mailmap\fR, otherwise assume
\fB\-\-no\-mailmap\fR\&.
\fBFalse\fR
by default\&.
.RE
.PP
sendemail\&.mailmap\&.file
.RS 4
The location of a
\fBgit-send-email\fR(1)
specific augmenting mailmap file\&. The default mailmap and
\fBmailmap\&.file\fR
are loaded first\&. Thus, entries in this file take precedence over entries in the default mailmap locations\&. See
\fBgitmailmap\fR(5)\&.
.RE
.PP
sendemail\&.mailmap\&.blob
.RS 4
Like
\fBsendemail\&.mailmap\&.file\fR, but consider the value as a reference to a blob in the repository\&. Entries in
\fBsendemail\&.mailmap\&.file\fR
take precedence over entries here\&. See
\fBgitmailmap\fR(5)\&.
.RE
.PP
sendemail\&.aliasesFile
.RS 4
To avoid typing long email addresses, point this to one or more email aliases files\&. You must also supply
\fBsendemail\&.aliasFileType\fR\&.
.RE
.PP
sendemail\&.aliasFileType
.RS 4
Format of the file(s) specified in sendemail\&.aliasesFile\&. Must be one of
\fBmutt\fR,
\fBmailrc\fR,
\fBpine\fR,
\fBelm\fR,
\fBgnus\fR, or
\fBsendmail\fR\&.
.sp
What an alias file in each format looks like can be found in the documentation of the email program of the same name\&. The differences and limitations from the standard formats are described below:
.PP
sendmail
.RS 4
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Quoted aliases and quoted addresses are not supported: lines that contain a " symbol are ignored\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Redirection to a file (\fB/path/name\fR) or pipe (|\fBcommand\fR) is not supported\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
File inclusion (\fB:include:\fR
\fB/path/name\fR) is not supported\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Warnings are printed on the standard error output for any explicitly unsupported constructs, and any other lines that are not recognized by the parser\&.
.RE
.RE
.RE
.PP
sendemail\&.annotate, sendemail\&.bcc, sendemail\&.cc, sendemail\&.ccCmd, sendemail\&.chainReplyTo, sendemail\&.envelopeSender, sendemail\&.from, sendemail\&.headerCmd, sendemail\&.signedOffByCc, sendemail\&.smtpPass, sendemail\&.suppressCc, sendemail\&.suppressFrom, sendemail\&.to, sendemail\&.toCmd, sendemail\&.smtpDomain, sendemail\&.smtpServer, sendemail\&.smtpServerPort, sendemail\&.smtpServerOption, sendemail\&.smtpUser, sendemail\&.thread, sendemail\&.transferEncoding, sendemail\&.validate, sendemail\&.xmailer
.RS 4
These configuration variables all provide a default for
\fBgit-send-email\fR(1)
command\-line options\&. See its documentation for details\&.
.RE
.PP
sendemail\&.outlookidfix
.RS 4
If
\fBtrue\fR, makes
\fBgit-send-email\fR(1)
assume
\fB\-\-outlook\-id\-fix\fR, and if
\fBfalse\fR
assume
\fB\-\-no\-outlook\-id\-fix\fR\&. If not specified, it will behave the same way as if
\fB\-\-outlook\-id\-fix\fR
is not specified\&.
.RE
.PP
sendemail\&.signedOffCc (deprecated)
.RS 4
Deprecated alias for
\fBsendemail\&.signedOffByCc\fR\&.
.RE
.PP
sendemail\&.smtpBatchSize
.RS 4
Number of messages to be sent per connection, after that a relogin will happen\&. If the value is
\fB0\fR
or undefined, send all messages in one connection\&. See also the
\fB\-\-batch\-size\fR
option of
\fBgit-send-email\fR(1)\&.
.RE
.PP
sendemail\&.smtpReloginDelay
.RS 4
Seconds to wait before reconnecting to the smtp server\&. See also the
\fB\-\-relogin\-delay\fR
option of
\fBgit-send-email\fR(1)\&.
.RE
.PP
sendemail\&.forbidSendmailVariables
.RS 4
To avoid common misconfiguration mistakes,
\fBgit-send-email\fR(1)
will abort with a warning if any configuration options for
\fBsendmail\fR
exist\&. Set this variable to bypass the check\&.
.RE
.PP
sequence\&.editor
.RS 4
Text editor used by
\fBgit\fR
\fBrebase\fR
\fB\-i\fR
for editing the rebase instruction file\&. The value is meant to be interpreted by the shell when it is used\&. It can be overridden by the
\fBGIT_SEQUENCE_EDITOR\fR
environment variable\&. When not configured, the default commit message editor is used instead\&.
.RE
.PP
showBranch\&.default
.RS 4
The default set of branches for
\fBgit-show-branch\fR(1)\&. See
\fBgit-show-branch\fR(1)\&.
.RE
.PP
sparse\&.expectFilesOutsideOfPatterns
.RS 4
Typically with sparse checkouts, files not matching any sparsity patterns are marked with a SKIP_WORKTREE bit in the index and are missing from the working tree\&. Accordingly, Git will ordinarily check whether files with the SKIP_WORKTREE bit are in fact present in the working tree contrary to expectations\&. If Git finds any, it marks those paths as present by clearing the relevant SKIP_WORKTREE bits\&. This option can be used to tell Git that such present\-despite\-skipped files are expected and to stop checking for them\&.
.sp
The default is
\fBfalse\fR, which allows Git to automatically recover from the list of files in the index and working tree falling out of sync\&.
.sp
Set this to
\fBtrue\fR
if you are in a setup where some external factor relieves Git of the responsibility for maintaining the consistency between the presence of working tree files and sparsity patterns\&. For example, if you have a Git\-aware virtual file system that has a robust mechanism for keeping the working tree and the sparsity patterns up to date based on access patterns\&.
.sp
Regardless of this setting, Git does not check for present\-despite\-skipped files unless sparse checkout is enabled, so this config option has no effect unless
\fBcore\&.sparseCheckout\fR
is
\fBtrue\fR\&.
.RE
.PP
splitIndex\&.maxPercentChange
.RS 4
When the split index feature is used, this specifies the percent of entries the split index can contain compared to the total number of entries in both the split index and the shared index before a new shared index is written\&. The value should be between 0 and 100\&. If the value is 0, then a new shared index is always written; if it is 100, a new shared index is never written\&. By default, the value is 20, so a new shared index is written if the number of entries in the split index would be greater than 20 percent of the total number of entries\&. See
\fBgit-update-index\fR(1)\&.
.RE
.PP
splitIndex\&.sharedIndexExpire
.RS 4
When the split index feature is used, shared index files that were not modified since the time this variable specifies will be removed when a new shared index file is created\&. The value "now" expires all entries immediately, and "never" suppresses expiration altogether\&. The default value is "2\&.weeks\&.ago"\&. Note that a shared index file is considered modified (for the purpose of expiration) each time a new split\-index file is either created based on it or read from it\&. See
\fBgit-update-index\fR(1)\&.
.RE
.PP
ssh\&.variant
.RS 4
By default, Git determines the command line arguments to use based on the basename of the configured SSH command (configured using the environment variable
\fBGIT_SSH\fR
or
\fBGIT_SSH_COMMAND\fR
or the config setting
\fBcore\&.sshCommand\fR)\&. If the basename is unrecognized, Git will attempt to detect support of OpenSSH options by first invoking the configured SSH command with the
\fB\-G\fR
(print configuration) option and will subsequently use OpenSSH options (if that is successful) or no options besides the host and remote command (if it fails)\&.
.sp
The config variable
\fBssh\&.variant\fR
can be set to override this detection\&. Valid values are
\fBssh\fR
(to use OpenSSH options),
\fBplink\fR,
\fBputty\fR,
\fBtortoiseplink\fR,
\fBsimple\fR
(no options except the host and remote command)\&. The default auto\-detection can be explicitly requested using the value
\fBauto\fR\&. Any other value is treated as
\fBssh\fR\&. This setting can also be overridden via the environment variable
\fBGIT_SSH_VARIANT\fR\&.
.sp
The current command\-line parameters used for each variant are as follows:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBssh\fR
\- [\-p port] [\-4] [\-6] [\-o option] [username@]host command
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBsimple\fR
\- [username@]host command
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBplink\fR
or
\fBputty\fR
\- [\-P port] [\-4] [\-6] [username@]host command
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBtortoiseplink\fR
\- [\-P port] [\-4] [\-6] \-batch [username@]host command
.RE
.sp
Except for the
\fBsimple\fR
variant, command\-line parameters are likely to change as git gains new features\&.
.RE
.PP
stash\&.showIncludeUntracked
.RS 4
If this is set to true, the
\fBgit\fR
\fBstash\fR
\fBshow\fR
command will show the untracked files of a stash entry\&. Defaults to false\&. See the description of the
\fIshow\fR
command in
\fBgit-stash\fR(1)\&.
.RE
.PP
stash\&.showPatch
.RS 4
If this is set to true, the
\fBgit\fR
\fBstash\fR
\fBshow\fR
command without an option will show the stash entry in patch form\&. Defaults to false\&. See the description of the
\fIshow\fR
command in
\fBgit-stash\fR(1)\&.
.RE
.PP
stash\&.showStat
.RS 4
If this is set to true, the
\fBgit\fR
\fBstash\fR
\fBshow\fR
command without an option will show a diffstat of the stash entry\&. Defaults to true\&. See the description of the
\fIshow\fR
command in
\fBgit-stash\fR(1)\&.
.RE
.PP
status\&.relativePaths
.RS 4
By default,
\fBgit-status\fR(1)
shows paths relative to the current directory\&. Setting this variable to
\fBfalse\fR
shows paths relative to the repository root (this was the default for Git prior to v1\&.5\&.4)\&.
.RE
.PP
status\&.short
.RS 4
Set to true to enable \-\-short by default in
\fBgit-status\fR(1)\&. The option \-\-no\-short takes precedence over this variable\&.
.RE
.PP
status\&.branch
.RS 4
Set to true to enable \-\-branch by default in
\fBgit-status\fR(1)\&. The option \-\-no\-branch takes precedence over this variable\&.
.RE
.PP
status\&.aheadBehind
.RS 4
Set to true to enable
\fB\-\-ahead\-behind\fR
and false to enable
\fB\-\-no\-ahead\-behind\fR
by default in
\fBgit-status\fR(1)
for non\-porcelain status formats\&. Defaults to true\&.
.RE
.PP
status\&.displayCommentPrefix
.RS 4
If set to true,
\fBgit-status\fR(1)
will insert a comment prefix before each output line (starting with
\fBcore\&.commentChar\fR, i\&.e\&. # by default)\&. This was the behavior of
\fBgit-status\fR(1)
in Git 1\&.8\&.4 and previous\&. Defaults to false\&.
.RE
.PP
status\&.renameLimit
.RS 4
The number of files to consider when performing rename detection in
\fBgit-status\fR(1)
and
\fBgit-commit\fR(1)\&. Defaults to the value of diff\&.renameLimit\&.
.RE
.PP
status\&.renames
.RS 4
Whether and how Git detects renames in
\fBgit-status\fR(1)
and
\fBgit-commit\fR(1)
\&. If set to "false", rename detection is disabled\&. If set to "true", basic rename detection is enabled\&. If set to "copies" or "copy", Git will detect copies, as well\&. Defaults to the value of diff\&.renames\&.
.RE
.PP
status\&.showStash
.RS 4
If set to true,
\fBgit-status\fR(1)
will display the number of entries currently stashed away\&. Defaults to false\&.
.RE
.PP
status\&.showUntrackedFiles
.RS 4
By default,
\fBgit-status\fR(1)
and
\fBgit-commit\fR(1)
show files which are not currently tracked by Git\&. Directories which contain only untracked files, are shown with the directory name only\&. Showing untracked files means that Git needs to lstat() all the files in the whole repository, which might be slow on some systems\&. So, this variable controls how the commands display the untracked files\&. Possible values are:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBno\fR
\- Show no untracked files\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBnormal\fR
\- Show untracked files and directories\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBall\fR
\- Show also individual files in untracked directories\&.
.RE
.sp
If this variable is not specified, it defaults to
\fInormal\fR\&. All usual spellings for Boolean value
\fBtrue\fR
are taken as
\fBnormal\fR
and
\fBfalse\fR
as
\fBno\fR\&. This variable can be overridden with the \-u|\-\-untracked\-files option of
\fBgit-status\fR(1)
and
\fBgit-commit\fR(1)\&.
.RE
.PP
status\&.submoduleSummary
.RS 4
Defaults to false\&. If this is set to a non\-zero number or true (identical to \-1 or an unlimited number), the submodule summary will be enabled and a summary of commits for modified submodules will be shown (see \-\-summary\-limit option of
\fBgit-submodule\fR(1))\&. Please note that the summary output command will be suppressed for all submodules when
\fBdiff\&.ignoreSubmodules\fR
is set to
\fIall\fR
or only for those submodules where
\fBsubmodule\&.\fR\fI<name>\fR\fB\&.ignore=all\fR\&. The only exception to that rule is that status and commit will show staged submodule changes\&. To also view the summary for ignored submodules you can either use the \-\-ignore\-submodules=dirty command\-line option or the
\fIgit submodule summary\fR
command, which shows a similar output but does not honor these settings\&.
.RE
.PP
submodule\&.<name>\&.url
.RS 4
The URL for a submodule\&. This variable is copied from the \&.gitmodules file to the git config via
\fIgit submodule init\fR\&. The user can change the configured URL before obtaining the submodule via
\fIgit submodule update\fR\&. If neither submodule\&.<name>\&.active nor submodule\&.active are set, the presence of this variable is used as a fallback to indicate whether the submodule is of interest to git commands\&. See
\fBgit-submodule\fR(1)
and
\fBgitmodules\fR(5)
for details\&.
.RE
.PP
submodule\&.<name>\&.update
.RS 4
The method by which a submodule is updated by
\fIgit submodule update\fR, which is the only affected command, others such as
\fIgit checkout \-\-recurse\-submodules\fR
are unaffected\&. It exists for historical reasons, when
\fIgit submodule\fR
was the only command to interact with submodules; settings like
\fBsubmodule\&.active\fR
and
\fBpull\&.rebase\fR
are more specific\&. It is populated by
\fBgit\fR
\fBsubmodule\fR
\fBinit\fR
from the
\fBgitmodules\fR(5)
file\&. See description of
\fIupdate\fR
command in
\fBgit-submodule\fR(1)\&.
.RE
.PP
submodule\&.<name>\&.branch
.RS 4
The remote branch name for a submodule, used by
\fBgit\fR
\fBsubmodule\fR
\fBupdate\fR
\fB\-\-remote\fR\&. Set this option to override the value found in the \&.\fBgitmodules\fR
file\&. See
\fBgit-submodule\fR(1)
and
\fBgitmodules\fR(5)
for details\&.
.RE
.PP
submodule\&.<name>\&.fetchRecurseSubmodules
.RS 4
This option can be used to control recursive fetching of this submodule\&. It can be overridden by using the \-\-[no\-]recurse\-submodules command\-line option to "git fetch" and "git pull"\&. This setting will override that from in the
\fBgitmodules\fR(5)
file\&.
.RE
.PP
submodule\&.<name>\&.ignore
.RS 4
Defines under what circumstances "git status" and the diff family show a submodule as modified\&. When set to "all", it will never be considered modified (but it will nonetheless show up in the output of status and commit when it has been staged), "dirty" will ignore all changes to the submodule\(cqs work tree and takes only differences between the HEAD of the submodule and the commit recorded in the superproject into account\&. "untracked" will additionally let submodules with modified tracked files in their work tree show up\&. Using "none" (the default when this option is not set) also shows submodules that have untracked files in their work tree as changed\&. This setting overrides any setting made in \&.gitmodules for this submodule, both settings can be overridden on the command line by using the "\-\-ignore\-submodules" option\&. The
\fIgit submodule\fR
commands are not affected by this setting\&.
.RE
.PP
submodule\&.<name>\&.active
.RS 4
Boolean value indicating if the submodule is of interest to git commands\&. This config option takes precedence over the submodule\&.active config option\&. See
\fBgitsubmodules\fR(7)
for details\&.
.RE
.PP
submodule\&.active
.RS 4
A repeated field which contains a pathspec used to match against a submodule\(cqs path to determine if the submodule is of interest to git commands\&. See
\fBgitsubmodules\fR(7)
for details\&.
.RE
.PP
submodule\&.recurse
.RS 4
A boolean indicating if commands should enable the
\fB\-\-recurse\-submodules\fR
option by default\&. Defaults to false\&.
.sp
When set to true, it can be deactivated via the
\fB\-\-no\-recurse\-submodules\fR
option\&. Note that some Git commands lacking this option may call some of the above commands affected by
\fBsubmodule\&.recurse\fR; for instance
\fBgit\fR
\fBremote\fR
\fBupdate\fR
will call
\fBgit\fR
\fBfetch\fR
but does not have a
\fB\-\-no\-recurse\-submodules\fR
option\&. For these commands a workaround is to temporarily change the configuration value by using
\fBgit\fR
\fB\-c\fR
\fBsubmodule\&.recurse=0\fR\&.
.sp
The following list shows the commands that accept
\fB\-\-recurse\-submodules\fR
and whether they are supported by this setting\&.
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBcheckout\fR,
\fBfetch\fR,
\fBgrep\fR,
\fBpull\fR,
\fBpush\fR,
\fBread\-tree\fR,
\fBreset\fR,
\fBrestore\fR
and
\fBswitch\fR
are always supported\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBclone\fR
and
\fBls\-files\fR
are not supported\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBbranch\fR
is supported only if
\fBsubmodule\&.propagateBranches\fR
is enabled
.RE
.RE
.PP
submodule\&.propagateBranches
.RS 4
[EXPERIMENTAL] A boolean that enables branching support when using
\fB\-\-recurse\-submodules\fR
or
\fBsubmodule\&.recurse=true\fR\&. Enabling this will allow certain commands to accept
\fB\-\-recurse\-submodules\fR
and certain commands that already accept
\fB\-\-recurse\-submodules\fR
will now consider branches\&. Defaults to false\&.
.RE
.PP
submodule\&.fetchJobs
.RS 4
Specifies how many submodules are fetched/cloned at the same time\&. A positive integer allows up to that number of submodules fetched in parallel\&. A value of 0 will give some reasonable default\&. If unset, it defaults to 1\&.
.RE
.PP
submodule\&.alternateLocation
.RS 4
Specifies how the submodules obtain alternates when submodules are cloned\&. Possible values are
\fBno\fR,
\fBsuperproject\fR\&. By default
\fBno\fR
is assumed, which doesn\(cqt add references\&. When the value is set to
\fBsuperproject\fR
the submodule to be cloned computes its alternates location relative to the superprojects alternate\&.
.RE
.PP
submodule\&.alternateErrorStrategy
.RS 4
Specifies how to treat errors with the alternates for a submodule as computed via
\fBsubmodule\&.alternateLocation\fR\&. Possible values are
\fBignore\fR,
\fBinfo\fR,
\fBdie\fR\&. Default is
\fBdie\fR\&. Note that if set to
\fBignore\fR
or
\fBinfo\fR, and if there is an error with the computed alternate, the clone proceeds as if no alternate was specified\&.
.RE
.PP
tag\&.forceSignAnnotated
.RS 4
A boolean to specify whether annotated tags created should be GPG signed\&. If
\fB\-\-annotate\fR
is specified on the command line, it takes precedence over this option\&.
.RE
.PP
tag\&.sort
.RS 4
This variable controls the sort ordering of tags when displayed by
\fBgit-tag\fR(1)\&. Without the "\-\-sort=<value>" option provided, the value of this variable will be used as the default\&.
.RE
.PP
tag\&.gpgSign
.RS 4
A boolean to specify whether all tags should be GPG signed\&. Use of this option when running in an automated script can result in a large number of tags being signed\&. It is therefore convenient to use an agent to avoid typing your gpg passphrase several times\&. Note that this option doesn\(cqt affect tag signing behavior enabled by "\-u <keyid>" or "\-\-local\-user=<keyid>" options\&.
.RE
.PP
tar\&.umask
.RS 4
This variable can be used to restrict the permission bits of tar archive entries\&. The default is 0002, which turns off the world write bit\&. The special value "user" indicates that the archiving user\(cqs umask will be used instead\&. See umask(2) and
\fBgit-archive\fR(1)\&.
.RE
.sp
Trace2 config settings are only read from the system and global config files; repository local and worktree config files and \fB\-c\fR command line arguments are not respected\&.
.PP
trace2\&.normalTarget
.RS 4
This variable controls the normal target destination\&. It may be overridden by the
\fBGIT_TRACE2\fR
environment variable\&. The following table shows possible values\&.
.RE
.PP
trace2\&.perfTarget
.RS 4
This variable controls the performance target destination\&. It may be overridden by the
\fBGIT_TRACE2_PERF\fR
environment variable\&. The following table shows possible values\&.
.RE
.PP
trace2\&.eventTarget
.RS 4
This variable controls the event target destination\&. It may be overridden by the
\fBGIT_TRACE2_EVENT\fR
environment variable\&. The following table shows possible values\&.
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fB0\fR
or
\fBfalse\fR
\- Disables the target\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fB1\fR
or
\fBtrue\fR
\- Writes to
\fBSTDERR\fR\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
[\fB2\-9\fR] \- Writes to the already opened file descriptor\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI<absolute\-pathname>\fR
\- Writes to the file in append mode\&. If the target already exists and is a directory, the traces will be written to files (one per process) underneath the given directory\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBaf_unix:\fR[\fI<socket\-type>\fR\fB:\fR]\fI<absolute\-pathname>\fR
\- Write to a Unix DomainSocket (on platforms that support them)\&. Socket type can be either
\fBstream\fR
or
\fBdgram\fR; if omitted Git will try both\&.
.RE
.RE
.PP
trace2\&.normalBrief
.RS 4
Boolean\&. When true
\fBtime\fR,
\fBfilename\fR, and
\fBline\fR
fields are omitted from normal output\&. May be overridden by the
\fBGIT_TRACE2_BRIEF\fR
environment variable\&. Defaults to false\&.
.RE
.PP
trace2\&.perfBrief
.RS 4
Boolean\&. When true
\fBtime\fR,
\fBfilename\fR, and
\fBline\fR
fields are omitted from PERF output\&. May be overridden by the
\fBGIT_TRACE2_PERF_BRIEF\fR
environment variable\&. Defaults to false\&.
.RE
.PP
trace2\&.eventBrief
.RS 4
Boolean\&. When true
\fBtime\fR,
\fBfilename\fR, and
\fBline\fR
fields are omitted from event output\&. May be overridden by the
\fBGIT_TRACE2_EVENT_BRIEF\fR
environment variable\&. Defaults to false\&.
.RE
.PP
trace2\&.eventNesting
.RS 4
Integer\&. Specifies desired depth of nested regions in the event output\&. Regions deeper than this value will be omitted\&. May be overridden by the
\fBGIT_TRACE2_EVENT_NESTING\fR
environment variable\&. Defaults to 2\&.
.RE
.PP
trace2\&.configParams
.RS 4
A comma\-separated list of patterns of "important" config settings that should be recorded in the trace2 output\&. For example,
\fBcore\&.*\fR,remote\&.\fB*\&.url\fR
would cause the trace2 output to contain events listing each configured remote\&. May be overridden by the
\fBGIT_TRACE2_CONFIG_PARAMS\fR
environment variable\&. Unset by default\&.
.RE
.PP
trace2\&.envVars
.RS 4
A comma\-separated list of "important" environment variables that should be recorded in the trace2 output\&. For example,
\fBGIT_HTTP_USER_AGENT\fR,GIT_CONFIG would cause the trace2 output to contain events listing the overrides for HTTP user agent and the location of the Git configuration file (assuming any are set)\&. May be overridden by the
\fBGIT_TRACE2_ENV_VARS\fR
environment variable\&. Unset by default\&.
.RE
.PP
trace2\&.destinationDebug
.RS 4
Boolean\&. When true Git will print error messages when a trace target destination cannot be opened for writing\&. By default, these errors are suppressed and tracing is silently disabled\&. May be overridden by the
\fBGIT_TRACE2_DST_DEBUG\fR
environment variable\&.
.RE
.PP
trace2\&.maxFiles
.RS 4
Integer\&. When writing trace files to a target directory, do not write additional traces if doing so would exceed this many files\&. Instead, write a sentinel file that will block further tracing to this directory\&. Defaults to 0, which disables this check\&.
.RE
.PP
trailer\&.separators
.RS 4
This option tells which characters are recognized as trailer separators\&. By default only
\fI:\fR
is recognized as a trailer separator, except that
\fI=\fR
is always accepted on the command line for compatibility with other git commands\&.
.sp
The first character given by this option will be the default character used when another separator is not specified in the config for this trailer\&.
.sp
For example, if the value for this option is "%=$", then only lines using the format
\fI<key><sep><value>\fR
with <sep> containing
\fI%\fR,
\fI=\fR
or
\fI$\fR
and then spaces will be considered trailers\&. And
\fI%\fR
will be the default separator used, so by default trailers will appear like:
\fI<key>% <value>\fR
(one percent sign and one space will appear between the key and the value)\&.
.RE
.PP
trailer\&.where
.RS 4
This option tells where a new trailer will be added\&.
.sp
This can be
\fBend\fR, which is the default,
\fBstart\fR,
\fBafter\fR
or
\fBbefore\fR\&.
.sp
If it is
\fBend\fR, then each new trailer will appear at the end of the existing trailers\&.
.sp
If it is
\fBstart\fR, then each new trailer will appear at the start, instead of the end, of the existing trailers\&.
.sp
If it is
\fBafter\fR, then each new trailer will appear just after the last trailer with the same <key>\&.
.sp
If it is
\fBbefore\fR, then each new trailer will appear just before the first trailer with the same <key>\&.
.RE
.PP
trailer\&.ifexists
.RS 4
This option makes it possible to choose what action will be performed when there is already at least one trailer with the same <key> in the input\&.
.sp
The valid values for this option are:
\fBaddIfDifferentNeighbor\fR
(this is the default),
\fBaddIfDifferent\fR,
\fBadd\fR,
\fBreplace\fR
or
\fBdoNothing\fR\&.
.sp
With
\fBaddIfDifferentNeighbor\fR, a new trailer will be added only if no trailer with the same (<key>, <value>) pair is above or below the line where the new trailer will be added\&.
.sp
With
\fBaddIfDifferent\fR, a new trailer will be added only if no trailer with the same (<key>, <value>) pair is already in the input\&.
.sp
With
\fBadd\fR, a new trailer will be added, even if some trailers with the same (<key>, <value>) pair are already in the input\&.
.sp
With
\fBreplace\fR, an existing trailer with the same <key> will be deleted and the new trailer will be added\&. The deleted trailer will be the closest one (with the same <key>) to the place where the new one will be added\&.
.sp
With
\fBdoNothing\fR, nothing will be done; that is no new trailer will be added if there is already one with the same <key> in the input\&.
.RE
.PP
trailer\&.ifmissing
.RS 4
This option makes it possible to choose what action will be performed when there is not yet any trailer with the same <key> in the input\&.
.sp
The valid values for this option are:
\fBadd\fR
(this is the default) and
\fBdoNothing\fR\&.
.sp
With
\fBadd\fR, a new trailer will be added\&.
.sp
With
\fBdoNothing\fR, nothing will be done\&.
.RE
.PP
trailer\&.<keyAlias>\&.key
.RS 4
Defines a <keyAlias> for the <key>\&. The <keyAlias> must be a prefix (case does not matter) of the <key>\&. For example, in
\fBgit\fR
\fBconfig\fR
\fBtrailer\&.ack\&.key\fR
"Acked\-by" the "Acked\-by" is the <key> and the "ack" is the <keyAlias>\&. This configuration allows the shorter
\fB\-\-trailer\fR
"ack:\fB\&.\&.\&.\fR" invocation on the command line using the "ack" <keyAlias> instead of the longer
\fB\-\-trailer\fR
"Acked\-by:\fB\&.\&.\&.\fR"\&.
.sp
At the end of the <key>, a separator can appear and then some space characters\&. By default the only valid separator is
\fI:\fR, but this can be changed using the
\fBtrailer\&.separators\fR
config variable\&.
.sp
If there is a separator in the key, then it overrides the default separator when adding the trailer\&.
.RE
.PP
trailer\&.<keyAlias>\&.where
.RS 4
This option takes the same values as the
\fItrailer\&.where\fR
configuration variable and it overrides what is specified by that option for trailers with the specified <keyAlias>\&.
.RE
.PP
trailer\&.<keyAlias>\&.ifexists
.RS 4
This option takes the same values as the
\fItrailer\&.ifexists\fR
configuration variable and it overrides what is specified by that option for trailers with the specified <keyAlias>\&.
.RE
.PP
trailer\&.<keyAlias>\&.ifmissing
.RS 4
This option takes the same values as the
\fItrailer\&.ifmissing\fR
configuration variable and it overrides what is specified by that option for trailers with the specified <keyAlias>\&.
.RE
.PP
trailer\&.<keyAlias>\&.command
.RS 4
Deprecated in favor of
\fItrailer\&.<keyAlias>\&.cmd\fR\&. This option behaves in the same way as
\fItrailer\&.<keyAlias>\&.cmd\fR, except that it doesn\(cqt pass anything as argument to the specified command\&. Instead the first occurrence of substring $ARG is replaced by the <value> that would be passed as argument\&.
.sp
Note that $ARG in the user\(cqs command is only replaced once and that the original way of replacing $ARG is not safe\&.
.sp
When both
\fItrailer\&.<keyAlias>\&.cmd\fR
and
\fItrailer\&.<keyAlias>\&.command\fR
are given for the same <keyAlias>,
\fItrailer\&.<keyAlias>\&.cmd\fR
is used and
\fItrailer\&.<keyAlias>\&.command\fR
is ignored\&.
.RE
.PP
trailer\&.<keyAlias>\&.cmd
.RS 4
This option can be used to specify a shell command that will be called once to automatically add a trailer with the specified <keyAlias>, and then called each time a
\fI\-\-trailer <keyAlias>=<value>\fR
argument is specified to modify the <value> of the trailer that this option would produce\&.
.sp
When the specified command is first called to add a trailer with the specified <keyAlias>, the behavior is as if a special
\fI\-\-trailer <keyAlias>=<value>\fR
argument was added at the beginning of the "git interpret\-trailers" command, where <value> is taken to be the standard output of the command with any leading and trailing whitespace trimmed off\&.
.sp
If some
\fI\-\-trailer <keyAlias>=<value>\fR
arguments are also passed on the command line, the command is called again once for each of these arguments with the same <keyAlias>\&. And the <value> part of these arguments, if any, will be passed to the command as its first argument\&. This way the command can produce a <value> computed from the <value> passed in the
\fI\-\-trailer <keyAlias>=<value>\fR
argument\&.
.RE
.PP
transfer\&.credentialsInUrl
.RS 4
A configured URL can contain plaintext credentials in the form
\fI<protocol>\fR\fB://\fR\fI<user>\fR\fB:\fR\fI<password>\fR\fB@\fR\fI<domain>\fR\fB/\fR\fI<path>\fR\&. You may want to warn or forbid the use of such configuration (in favor of using
\fBgit-credential\fR(1))\&. This will be used on
\fBgit-clone\fR(1),
\fBgit-fetch\fR(1),
\fBgit-push\fR(1), and any other direct use of the configured URL\&.
.sp
Note that this is currently limited to detecting credentials in
\fBremote\&.\fR\fI<name>\fR\fB\&.url\fR
configuration; it won\(cqt detect credentials in
\fBremote\&.\fR\fI<name>\fR\fB\&.pushurl\fR
configuration\&.
.sp
You might want to enable this to prevent inadvertent credentials exposure, e\&.g\&. because:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The OS or system where you\(cqre running git may not provide a way or otherwise allow you to configure the permissions of the configuration file where the username and/or password are stored\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Even if it does, having such data stored "at rest" might expose you in other ways, e\&.g\&. a backup process might copy the data to another system\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The git programs will pass the full URL to one another as arguments on the command\-line, meaning the credentials will be exposed to other unprivileged users on systems that allow them to see the full process list of other users\&. On linux the "hidepid" setting documented in procfs(5) allows for configuring this behavior\&.
.sp
If such concerns don\(cqt apply to you then you probably don\(cqt need to be concerned about credentials exposure due to storing sensitive data in git\(cqs configuration files\&. If you do want to use this, set
\fBtransfer\&.credentialsInUrl\fR
to one of these values:
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBallow\fR
(default): Git will proceed with its activity without warning\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBwarn\fR: Git will write a warning message to
\fBstderr\fR
when parsing a URL with a plaintext credential\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBdie\fR: Git will write a failure message to
\fBstderr\fR
when parsing a URL with a plaintext credential\&.
.RE
.RE
.PP
transfer\&.fsckObjects
.RS 4
When
\fBfetch\&.fsckObjects\fR
or
\fBreceive\&.fsckObjects\fR
are not set, the value of this variable is used instead\&. Defaults to false\&.
.sp
When set, the fetch or receive will abort in the case of a malformed object or a link to a nonexistent object\&. In addition, various other issues are checked for, including legacy issues (see
\fBfsck\&.\fR\fI<msg\-id>\fR), and potential security issues like the existence of a \&.\fBGIT\fR
directory or a malicious \&.\fBgitmodules\fR
file (see the release notes for v2\&.2\&.1 and v2\&.17\&.1 for details)\&. Other sanity and security checks may be added in future releases\&.
.sp
On the receiving side, failing fsckObjects will make those objects unreachable, see "QUARANTINE ENVIRONMENT" in
\fBgit-receive-pack\fR(1)\&. On the fetch side, malformed objects will instead be left unreferenced in the repository\&.
.sp
Due to the non\-quarantine nature of the
\fBfetch\&.fsckObjects\fR
implementation it cannot be relied upon to leave the object store clean like
\fBreceive\&.fsckObjects\fR
can\&.
.sp
As objects are unpacked they\(cqre written to the object store, so there can be cases where malicious objects get introduced even though the "fetch" failed, only to have a subsequent "fetch" succeed because only new incoming objects are checked, not those that have already been written to the object store\&. That difference in behavior should not be relied upon\&. In the future, such objects may be quarantined for "fetch" as well\&.
.sp
For now, the paranoid need to find some way to emulate the quarantine environment if they\(cqd like the same protection as "push"\&. E\&.g\&. in the case of an internal mirror do the mirroring in two steps, one to fetch the untrusted objects, and then do a second "push" (which will use the quarantine) to another internal repo, and have internal clients consume this pushed\-to repository, or embargo internal fetches and only allow them once a full "fsck" has run (and no new fetches have happened in the meantime)\&.
.RE
.PP
transfer\&.hideRefs
.RS 4
String(s)
\fBreceive\-pack\fR
and
\fBupload\-pack\fR
use to decide which refs to omit from their initial advertisements\&. Use more than one definition to specify multiple prefix strings\&. A ref that is under the hierarchies listed in the value of this variable is excluded, and is hidden when responding to
\fBgit\fR
\fBpush\fR
or
\fBgit\fR
\fBfetch\fR\&. See
\fBreceive\&.hideRefs\fR
and
\fBuploadpack\&.hideRefs\fR
for program\-specific versions of this config\&.
.sp
You may also include a ! in front of the ref name to negate the entry, explicitly exposing it, even if an earlier entry marked it as hidden\&. If you have multiple hideRefs values, later entries override earlier ones (and entries in more\-specific config files override less\-specific ones)\&.
.sp
If a namespace is in use, the namespace prefix is stripped from each reference before it is matched against
\fBtransfer\&.hiderefs\fR
patterns\&. In order to match refs before stripping, add a
\fB^\fR
in front of the ref name\&. If you combine ! and
\fB^\fR, ! must be specified first\&.
.sp
For example, if
\fBrefs/heads/master\fR
is specified in
\fBtransfer\&.hideRefs\fR
and the current namespace is
\fBfoo\fR, then
\fBrefs/namespaces/foo/refs/heads/master\fR
is omitted from the advertisements\&. If
\fBuploadpack\&.allowRefInWant\fR
is set,
\fBupload\-pack\fR
will treat
\fBwant\-ref\fR
\fBrefs/heads/master\fR
in a protocol v2
\fBfetch\fR
command as if
\fBrefs/namespaces/foo/refs/heads/master\fR
did not exist\&.
\fBreceive\-pack\fR, on the other hand, will still advertise the object id the ref is pointing to without mentioning its name (a so\-called "\&.have" line)\&.
.sp
Even if you hide refs, a client may still be able to steal the target objects via the techniques described in the "SECURITY" section of the
\fBgitnamespaces\fR(7)
man page; it\(cqs best to keep private data in a separate repository\&.
.RE
.PP
transfer\&.unpackLimit
.RS 4
When
\fBfetch\&.unpackLimit\fR
or
\fBreceive\&.unpackLimit\fR
are not set, the value of this variable is used instead\&. The default value is 100\&.
.RE
.PP
transfer\&.advertiseSID
.RS 4
Boolean\&. When true, client and server processes will advertise their unique session IDs to their remote counterpart\&. Defaults to false\&.
.RE
.PP
transfer\&.bundleURI
.RS 4
When
\fBtrue\fR, local
\fBgit\fR
\fBclone\fR
commands will request bundle information from the remote server (if advertised) and download bundles before continuing the clone through the Git protocol\&. Defaults to
\fBfalse\fR\&.
.RE
.PP
transfer\&.advertiseObjectInfo
.RS 4
When
\fBtrue\fR, the
\fBobject\-info\fR
capability is advertised by servers\&. Defaults to false\&.
.RE
.PP
uploadarchive\&.allowUnreachable
.RS 4
If true, allow clients to use
\fBgit\fR
\fBarchive\fR
\fB\-\-remote\fR
to request any tree, whether reachable from the ref tips or not\&. See the discussion in the "SECURITY" section of
\fBgit-upload-archive\fR(1)
for more details\&. Defaults to
\fBfalse\fR\&.
.RE
.PP
uploadpack\&.hideRefs
.RS 4
This variable is the same as
\fBtransfer\&.hideRefs\fR, but applies only to
\fBupload\-pack\fR
(and so affects only fetches, not pushes)\&. An attempt to fetch a hidden ref by
\fBgit\fR
\fBfetch\fR
will fail\&. See also
\fBuploadpack\&.allowTipSHA1InWant\fR\&.
.RE
.PP
uploadpack\&.allowTipSHA1InWant
.RS 4
When
\fBuploadpack\&.hideRefs\fR
is in effect, allow
\fBupload\-pack\fR
to accept a fetch request that asks for an object at the tip of a hidden ref (by default, such a request is rejected)\&. See also
\fBuploadpack\&.hideRefs\fR\&. Even if this is false, a client may be able to steal objects via the techniques described in the "SECURITY" section of the
\fBgitnamespaces\fR(7)
man page; it\(cqs best to keep private data in a separate repository\&.
.RE
.PP
uploadpack\&.allowReachableSHA1InWant
.RS 4
Allow
\fBupload\-pack\fR
to accept a fetch request that asks for an object that is reachable from any ref tip\&. However, note that calculating object reachability is computationally expensive\&. Defaults to
\fBfalse\fR\&. Even if this is false, a client may be able to steal objects via the techniques described in the "SECURITY" section of the
\fBgitnamespaces\fR(7)
man page; it\(cqs best to keep private data in a separate repository\&.
.RE
.PP
uploadpack\&.allowAnySHA1InWant
.RS 4
Allow
\fBupload\-pack\fR
to accept a fetch request that asks for any object at all\&. It implies
\fBuploadpack\&.allowTipSHA1InWant\fR
and
\fBuploadpack\&.allowReachableSHA1InWant\fR\&. If set to
\fBtrue\fR
it will enable both of them, it set to
\fBfalse\fR
it will disable both of them\&. By default not set\&.
.RE
.PP
uploadpack\&.keepAlive
.RS 4
When
\fBupload\-pack\fR
has started
\fBpack\-objects\fR, there may be a quiet period while
\fBpack\-objects\fR
prepares the pack\&. Normally it would output progress information, but if
\fB\-\-quiet\fR
was used for the fetch,
\fBpack\-objects\fR
will output nothing at all until the pack data begins\&. Some clients and networks may consider the server to be hung and give up\&. Setting this option instructs
\fBupload\-pack\fR
to send an empty keepalive packet every
\fBuploadpack\&.keepAlive\fR
seconds\&. Setting this option to 0 disables keepalive packets entirely\&. The default is 5 seconds\&.
.RE
.PP
uploadpack\&.packObjectsHook
.RS 4
If this option is set, when
\fBupload\-pack\fR
would run
\fBgit\fR
\fBpack\-objects\fR
to create a packfile for a client, it will run this shell command instead\&. The
\fBpack\-objects\fR
command and arguments it
\fIwould\fR
have run (including the
\fBgit\fR
\fBpack\-objects\fR
at the beginning) are appended to the shell command\&. The stdin and stdout of the hook are treated as if
\fBpack\-objects\fR
itself was run\&. I\&.e\&.,
\fBupload\-pack\fR
will feed input intended for
\fBpack\-objects\fR
to the hook, and expects a completed packfile on stdout\&.
.sp
Note that this configuration variable is only respected when it is specified in protected configuration (see
the section called \(lqSCOPES\(rq)\&. This is a safety measure against fetching from untrusted repositories\&.
.RE
.PP
uploadpack\&.allowFilter
.RS 4
If this option is set,
\fBupload\-pack\fR
will support partial clone and partial fetch object filtering\&.
.RE
.PP
uploadpackfilter\&.allow
.RS 4
Provides a default value for unspecified object filters (see: the below configuration variable)\&. If set to
\fBtrue\fR, this will also enable all filters which get added in the future\&. Defaults to
\fBtrue\fR\&.
.RE
.PP
uploadpackfilter\&.<filter>\&.allow
.RS 4
Explicitly allow or ban the object filter corresponding to
\fI<filter>\fR, where
\fI<filter>\fR
may be one of:
\fBblob:none\fR,
\fBblob:limit\fR,
\fBobject:type\fR,
\fBtree\fR,
\fBsparse:oid\fR, or
\fBcombine\fR\&. If using combined filters, both
\fBcombine\fR
and all of the nested filter kinds must be allowed\&. Defaults to
\fBuploadpackfilter\&.allow\fR\&.
.RE
.PP
uploadpackfilter\&.tree\&.maxDepth
.RS 4
Only allow
\fB\-\-filter=tree:\fR\fI<n>\fR
when
\fI<n>\fR
is no more than the value of
\fBuploadpackfilter\&.tree\&.maxDepth\fR\&. If set, this also implies
\fBuploadpackfilter\&.tree\&.allow=true\fR, unless this configuration variable had already been set\&. Has no effect if unset\&.
.RE
.PP
uploadpack\&.allowRefInWant
.RS 4
If this option is set,
\fBupload\-pack\fR
will support the
\fBref\-in\-want\fR
feature of the protocol version 2
\fBfetch\fR
command\&. This feature is intended for the benefit of load\-balanced servers which may not have the same view of what OIDs their refs point to due to replication delay\&.
.RE
.PP
url\&.<base>\&.insteadOf
.RS 4
Any URL that starts with this value will be rewritten to start, instead, with <base>\&. In cases where some site serves a large number of repositories, and serves them with multiple access methods, and some users need to use different access methods, this feature allows people to specify any of the equivalent URLs and have Git automatically rewrite the URL to the best alternative for the particular user, even for a never\-before\-seen repository on the site\&. When more than one insteadOf strings match a given URL, the longest match is used\&.
.sp
Note that any protocol restrictions will be applied to the rewritten URL\&. If the rewrite changes the URL to use a custom protocol or remote helper, you may need to adjust the
\fBprotocol\&.*\&.allow\fR
config to permit the request\&. In particular, protocols you expect to use for submodules must be set to
\fBalways\fR
rather than the default of
\fBuser\fR\&. See the description of
\fBprotocol\&.allow\fR
above\&.
.RE
.PP
url\&.<base>\&.pushInsteadOf
.RS 4
Any URL that starts with this value will not be pushed to; instead, it will be rewritten to start with <base>, and the resulting URL will be pushed to\&. In cases where some site serves a large number of repositories, and serves them with multiple access methods, some of which do not allow push, this feature allows people to specify a pull\-only URL and have Git automatically use an appropriate URL to push, even for a never\-before\-seen repository on the site\&. When more than one pushInsteadOf strings match a given URL, the longest match is used\&. If a remote has an explicit pushurl, Git will ignore this setting for that remote\&.
.RE
.PP
user\&.name, user\&.email, author\&.name, author\&.email, committer\&.name, committer\&.email
.RS 4
The
\fBuser\&.name\fR
and
\fBuser\&.email\fR
variables determine what ends up in the
\fBauthor\fR
and
\fBcommitter\fR
fields of commit objects\&. If you need the
\fBauthor\fR
or
\fBcommitter\fR
to be different, the
\fBauthor\&.name\fR,
\fBauthor\&.email\fR,
\fBcommitter\&.name\fR, or
\fBcommitter\&.email\fR
variables can be set\&. All of these can be overridden by the
\fBGIT_AUTHOR_NAME\fR,
\fBGIT_AUTHOR_EMAIL\fR,
\fBGIT_COMMITTER_NAME\fR,
\fBGIT_COMMITTER_EMAIL\fR, and
\fBEMAIL\fR
environment variables\&.
.sp
Note that the
\fBname\fR
forms of these variables conventionally refer to some form of a personal name\&. See
\fBgit-commit\fR(1)
and the environment variables section of
\fBgit\fR(1)
for more information on these settings and the
\fBcredential\&.username\fR
option if you\(cqre looking for authentication credentials instead\&.
.RE
.PP
user\&.useConfigOnly
.RS 4
Instruct Git to avoid trying to guess defaults for
\fBuser\&.email\fR
and
\fBuser\&.name\fR, and instead retrieve the values only from the configuration\&. For example, if you have multiple email addresses and would like to use a different one for each repository, then with this configuration option set to
\fBtrue\fR
in the global config along with a name, Git will prompt you to set up an email before making new commits in a newly cloned repository\&. Defaults to
\fBfalse\fR\&.
.RE
.PP
user\&.signingKey
.RS 4
If
\fBgit-tag\fR(1)
or
\fBgit-commit\fR(1)
is not selecting the key you want it to automatically when creating a signed tag or commit, you can override the default selection with this variable\&. This option is passed unchanged to gpg\(cqs \-\-local\-user parameter, so you may specify a key using any method that gpg supports\&. If gpg\&.format is set to
\fBssh\fR
this can contain the path to either your private ssh key or the public key when ssh\-agent is used\&. Alternatively it can contain a public key prefixed with
\fBkey::\fR
directly (e\&.g\&.: "key::ssh\-rsa XXXXXX identifier")\&. The private key needs to be available via ssh\-agent\&. If not set Git will call gpg\&.ssh\&.defaultKeyCommand (e\&.g\&.: "ssh\-add \-L") and try to use the first key available\&. For backward compatibility, a raw key which begins with "ssh\-", such as "ssh\-rsa XXXXXX identifier", is treated as "key::ssh\-rsa XXXXXX identifier", but this form is deprecated; use the
\fBkey::\fR
form instead\&.
.RE
.PP
versionsort\&.prereleaseSuffix (deprecated)
.RS 4
Deprecated alias for
\fBversionsort\&.suffix\fR\&. Ignored if
\fBversionsort\&.suffix\fR
is set\&.
.RE
.PP
versionsort\&.suffix
.RS 4
Even when version sort is used in
\fBgit-tag\fR(1), tagnames with the same base version but different suffixes are still sorted lexicographically, resulting e\&.g\&. in prerelease tags appearing after the main release (e\&.g\&. "1\&.0\-rc1" after "1\&.0")\&. This variable can be specified to determine the sorting order of tags with different suffixes\&.
.sp
By specifying a single suffix in this variable, any tagname containing that suffix will appear before the corresponding main release\&. E\&.g\&. if the variable is set to "\-rc", then all "1\&.0\-rcX" tags will appear before "1\&.0"\&. If specified multiple times, once per suffix, then the order of suffixes in the configuration will determine the sorting order of tagnames with those suffixes\&. E\&.g\&. if "\-pre" appears before "\-rc" in the configuration, then all "1\&.0\-preX" tags will be listed before any "1\&.0\-rcX" tags\&. The placement of the main release tag relative to tags with various suffixes can be determined by specifying the empty suffix among those other suffixes\&. E\&.g\&. if the suffixes "\-rc", "", "\-ck", and "\-bfs" appear in the configuration in this order, then all "v4\&.8\-rcX" tags are listed first, followed by "v4\&.8", then "v4\&.8\-ckX" and finally "v4\&.8\-bfsX"\&.
.sp
If more than one suffix matches the same tagname, then that tagname will be sorted according to the suffix which starts at the earliest position in the tagname\&. If more than one different matching suffix starts at that earliest position, then that tagname will be sorted according to the longest of those suffixes\&. The sorting order between different suffixes is undefined if they are in multiple config files\&.
.RE
.PP
web\&.browser
.RS 4
Specify a web browser that may be used by some commands\&. Currently only
\fBgit-instaweb\fR(1)
and
\fBgit-help\fR(1)
may use it\&.
.RE
.PP
worktree\&.guessRemote
.RS 4
If no branch is specified and neither
\fB\-b\fR
nor
\fB\-B\fR
nor
\fB\-\-detach\fR
is used, then
\fBgit\fR
\fBworktree\fR
\fBadd\fR
defaults to creating a new branch from HEAD\&. If
\fBworktree\&.guessRemote\fR
is set to true,
\fBworktree\fR
\fBadd\fR
tries to find a remote\-tracking branch whose name uniquely matches the new branch name\&. If such a branch exists, it is checked out and set as "upstream" for the new branch\&. If no such match can be found, it falls back to creating a new branch from the current HEAD\&.
.RE
.PP
worktree\&.useRelativePaths
.RS 4
Link worktrees using relative paths (when "true") or absolute paths (when "false")\&. This is particularly useful for setups where the repository and worktrees may be moved between different locations or environments\&. Defaults to "false"\&.
.sp
Note that setting
\fBworktree\&.useRelativePaths\fR
to "true" implies enabling the
\fBextension\&.relativeWorktrees\fR
config (see
\fBgit-config\fR(1)), thus making it incompatible with older versions of Git\&.
.RE
.SH "BUGS"
.sp
When using the deprecated [\fBsection\&.subsection\fR] syntax, changing a value will result in adding a multi\-line key instead of a change, if the subsection is given with at least one uppercase character\&. For example when the config looks like
.sp
.if n \{\
.RS 4
.\}
.nf
  [section\&.subsection]
    key = value1
.fi
.if n \{\
.RE
.\}
.sp
and running \fBgit\fR \fBconfig\fR \fBsection\&.Subsection\&.key\fR \fBvalue2\fR will result in
.sp
.if n \{\
.RS 4
.\}
.nf
  [section\&.subsection]
    key = value1
    key = value2
.fi
.if n \{\
.RE
.\}
.SH "GIT"
.sp
Part of the \fBgit\fR(1) suite
.SH "NOTES"
.IP " 1." 4
the bundle URI design document
.RS 4
\%git-htmldocs/technical/bundle-uri.html
.RE
