All the other lines (and the remainder of the line after the section
header) are recognized as setting variables, in the form
-'name = value'. If there is no equal sign on the line, the entire line
-is taken as 'name' and the variable is recognized as boolean "true".
+'name = value' (or just 'name', 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 `-`, and must start with an alphabetic character.
The following escape sequences (beside `\"` and `\\`) are recognized:
`\n` for newline character (NL), `\t` for horizontal tabulation (HT, TAB)
-and `\b` for backspace (BS). No other char escape sequence, nor octal
-char sequences are valid.
+and `\b` for backspace (BS). Other char escape sequences (including octal
+escape sequences) are invalid.
Includes
`white`; the attributes are `bold`, `dim`, `ul`, `blink` and
`reverse`. The first color given is the foreground; the
second is the background. The position of the attribute, if
- any, doesn't matter.
+ any, doesn't matter. Attributes may be turned off specifically
+ by prefixing them with `no` (e.g., `noreverse`, `noul`, etc).
++
+Colors (foreground and background) 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`.
++
+The attributes are meant to be reset at the beginning of each item
+in the colored output, so setting color.decorate.branch to `black`
+will paint that branch name in a plain `black`, even if the previous
+thing on the same output line (e.g. opening parenthesis before the
+list of branch names in `log --decorate` output) is set to be
+painted with `bold` or some other attribute.
Variables
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. You will find a description of non-core
-porcelain configuration variables in the respective porcelain documentation.
+in the appropriate manual page.
+
+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.
+
advice.*::
These variables control various optional help messages designed to
--
pushUpdateRejected::
Set this variable to 'false' if you want to disable
- 'pushNonFFCurrent', 'pushNonFFDefault',
+ 'pushNonFFCurrent',
'pushNonFFMatching', 'pushAlreadyExists',
'pushFetchFirst', and 'pushNeedsForce'
simultaneously.
pushNonFFCurrent::
Advice shown when linkgit:git-push[1] fails due to a
non-fast-forward update to the current branch.
- pushNonFFDefault::
- Advice to set 'push.default' to 'upstream' or 'current'
- when you ran linkgit:git-push[1] and pushed 'matching
- refs' by default (i.e. you did not provide an explicit
- refspec, and no 'push.default' configuration was set)
- and it resulted in a non-fast-forward error.
pushNonFFMatching::
Advice shown when you ran linkgit:git-push[1] and pushed
'matching refs' explicitly (i.e. you used ':', or
--
core.fileMode::
- If false, the executable bit differences between the index and
- the working tree are ignored; useful on broken filesystems like FAT.
- See linkgit:git-update-index[1].
+ Tells Git if the executable bit of files in the working tree
+ is to be honored.
+
-The default is true, except linkgit:git-clone[1] or linkgit:git-init[1]
-will probe and set core.fileMode false if appropriate when the
-repository is created.
+Some filesystems lose the executable bit when a file that is
+marked as executable is checked out, or checks out an
+non-executable file with executable bit on.
+linkgit:git-clone[1] or linkgit:git-init[1] probe the filesystem
+to see if it handles the executable bit correctly
+and this variable is automatically set as necessary.
++
+A repository, however, may be on a filesystem that handles
+the filemode correctly, and this variable is set to 'true'
+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 'false'.
+See linkgit:git-update-index[1].
++
+The default is true (when core.filemode is not specified in the config file).
-core.ignorecase::
+core.ignoreCase::
If true, this option enables various workarounds to enable
Git to work better on filesystems that are not case sensitive,
like FAT. For example, if a directory listing finds
"Makefile".
+
The default is false, except linkgit:git-clone[1] or linkgit:git-init[1]
-will probe and set core.ignorecase true if appropriate when the repository
+will probe and set core.ignoreCase true if appropriate when the repository
is created.
-core.precomposeunicode::
+core.precomposeUnicode::
This option is only used by Mac OS implementation of Git.
- When core.precomposeunicode=true, Git reverts the unicode decomposition
+ 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).
crawlers and some backup systems).
See linkgit:git-update-index[1]. True by default.
-core.checkstat::
+core.checkStat::
Determines which stat fields to match between the index
and work tree. The user can set this to 'default' or
'minimal'. Default (or explicitly 'default'), is to check
all fields, including the sub-second part of mtime and ctime.
-core.quotepath::
+core.quotePath::
The commands that output paths (e.g. 'ls-files',
'diff'), when not given the `-z` option, will quote
"unusual" characters in the pathname by enclosing the
proxy use, while defaulting to a common proxy for external domains.
core.ignoreStat::
- If true, commands which modify both the working tree and the index
- will mark the updated paths with the "assume unchanged" bit in the
- index. These marked files are then assumed to stay unchanged in the
- working tree, until you mark them otherwise manually - Git will not
- detect the file changes by lstat() calls. This is useful on systems
- where those are very slow, such as Microsoft Windows.
- See linkgit:git-update-index[1].
- False by default.
+ 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.
++
+When files are modified outside of Git, the user will need to stage
+the modified files explicitly (e.g. see 'Examples' section in
+linkgit:git-update-index[1]).
+Git will not normally detect changes to those files.
++
+This is useful on systems where lstat() calls are very slow, such as
+CIFS/Microsoft Windows.
++
+False by default.
core.preferSymlinkRefs::
Instead of the default "symref" format for HEAD
core.worktree::
Set the path to the root of the working tree.
This can be overridden by the GIT_WORK_TREE environment
- variable and the '--work-tree' command line option.
+ variable and the '--work-tree' 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.
-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 'core.loosecompression' and 'pack.compression'.
+ such as 'core.looseCompression' and 'pack.compression'.
-core.loosecompression::
+core.looseCompression::
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
to avoid unpacking and decompressing frequently used base
objects multiple times.
+
-Default is 16 MiB on all platforms. This should be reasonable
+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.
+
Files larger than this size are stored deflated, without
attempting delta compression. Storing large files without
delta compression avoids excessive memory usage, at the
- slight expense of increased disk usage.
+ slight expense of increased disk usage. Additionally files
+ larger than this size are always treated as binary.
+
Default is 512 MiB on all platforms. This should be reasonable
for most projects as source code and other text files can still
+
Common unit suffixes of 'k', 'm', or 'g' are supported.
-core.excludesfile::
+core.excludesFile::
In addition to '.gitignore' (per-directory) and
'.git/info/exclude', Git looks into this file for patterns
of files which are not meant to be tracked. "`~/`" is expanded
If $XDG_CONFIG_HOME is either not set or empty, $HOME/.config/git/ignore
is used instead. See linkgit:gitignore[5].
-core.askpass::
+core.askPass::
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 'GIT_ASKPASS'
environment variable. If not set, fall back to the value of the
'SSH_ASKPASS' 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.
+ command-line argument and write the password on its STDOUT.
-core.attributesfile::
+core.attributesFile::
In addition to '.gitattributes' (per-directory) and
'.git/info/attributes', Git looks into this file for attributes
(see linkgit:gitattributes[5]). Path expansions are made the same
- way as for `core.excludesfile`. Its default value is
+ way as for `core.excludesFile`. Its default value is
$XDG_CONFIG_HOME/git/attributes. If $XDG_CONFIG_HOME is either not
set or empty, $HOME/.config/git/attributes is used instead.
variable when it is set, and the environment variable
`GIT_EDITOR` is not set. See linkgit:git-var[1].
-core.commentchar::
+core.commentChar::
Commands such as `commit` and `tag` that lets you edit
messages consider a line that begins with this character
commented, and removes them after the editor returns
(default '#').
++
+If set to "auto", `git-commit` would select a character that is not
+the beginning character of any line in existing commit messages.
sequence.editor::
Text editor used by `git rebase -i` for editing the rebase instruction file.
configuration, then `$PAGER`, and then the default chosen at
compile time (usually 'less').
+
-When the `LESS` environment variable is unset, Git sets it to `FRSX`
+When the `LESS` environment variable is unset, Git sets it to `FRX`
(if `LESS` environment variable is set, Git does not change it at
all). If you want to selectively override Git's default setting
-for `LESS`, you can set `core.pager` to e.g. `less -+S`. This will
+for `LESS`, you can set `core.pager` to e.g. `less -S`. This will
be passed to the shell by Git, which will translate the final
-command to `LESS=FRSX less -+S`. The environment tells the command
-to set the `S` option to chop long lines but the command line
-resets it to the default to fold long lines.
+command to `LESS=FRX less -S`. The environment does not set the
+`S` option but the command line does, instructing less to truncate
+long lines. Similarly, setting `core.pager` to `less -+F` will
+deactivate the `F` option specified by the environment from the
+command-line, deactivating the "quit if one screen" behavior of
+`less`. One can specifically activate some flags for particular
+commands: for example, setting `pager.blame` to `less -S` enables
+line truncation only for `git blame`.
++
+Likewise, when the `LV` environment variable is unset, Git sets it
+to `-c`. You can override this setting by exporting `LV` with
+another value or setting `core.pager` to `lv +c`.
core.whitespace::
A comma separated list of common whitespace problems to
is relevant for `indent-with-non-tab` and when Git fixes `tab-in-indent`
errors. The default tab width is 8. Allowed values are 1 to 63.
-core.fsyncobjectfiles::
+core.fsyncObjectFiles::
This boolean will enable 'fsync()' when writing object files.
+
This is a total waste of time and effort on a filesystem that orders
journalling (traditional UNIX filesystems) or that only journal metadata
and not file contents (OS X's HFS+, or Linux ext3 with "data=writeback").
-core.preloadindex::
+core.preloadIndex::
Enable parallel index preload for operations like 'git diff'
+
This can speed up operations like 'git diff' and 'git status' especially
on filesystems like NFS that have weak caching semantics and thus
-relatively high IO latencies. With this set to 'true', Git will do the
+relatively high IO latencies. When enabled, Git will do the
index comparison to the filesystem data in parallel, allowing
-overlapping IO's.
+overlapping IO's. Defaults to true.
core.createObject::
You can set this to 'link', in which case a hardlink followed by
for abbreviated object names to stay unique for sufficiently long
time.
-add.ignore-errors::
add.ignoreErrors::
+add.ignore-errors (deprecated)::
Tells 'git add' to continue adding files when some files cannot be
added due to indexing errors. Equivalent to the '--ignore-errors'
- option of linkgit:git-add[1]. Older versions of Git accept only
- `add.ignore-errors`, which does not follow the usual naming
- convention for configuration variables. Newer versions of Git
- honor `add.ignoreErrors` as well.
+ option of linkgit:git-add[1]. `add.ignore-errors` is deprecated,
+ as it does not follow the usual naming convention for configuration
+ variables.
alias.*::
Command aliases for the linkgit:git[1] command wrapper - e.g.
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 is supported.
- quote pair and a backslash can be used to quote them.
+ A quote pair or a backslash can be used to quote them.
+
If the alias expansion is prefixed with an exclamation point,
it will be treated as a shell command. For example, defining
by giving '--no-keep-cr' from the command line.
See linkgit:git-am[1], linkgit:git-mailsplit[1].
-apply.ignorewhitespace::
+apply.ignoreWhitespace::
When set to 'change', tells 'git apply' to ignore changes in
whitespace, in the same way as the '--ignore-space-change'
option.
Tells 'git apply' how to handle whitespaces, in the same way
as the '--whitespace' option. See linkgit:git-apply[1].
-branch.autosetupmerge::
+branch.autoSetupMerge::
Tells 'git branch' and 'git checkout' to set up new branches
so that linkgit:git-pull[1] will appropriately merge from the
starting point branch. Note that even if this option is not set,
local branch or remote-tracking
branch. This option defaults to true.
-branch.autosetuprebase::
+branch.autoSetupRebase::
When a new branch is created with 'git branch' or 'git checkout'
that tracks another branch, this variable tells Git to set
up pull to rebase instead of merge (see "branch.<name>.rebase").
remote-tracking branches.
When `always`, rebase will be set to true for all tracking
branches.
- See "branch.autosetupmerge" for details on how to set up a
+ See "branch.autoSetupMerge" for details on how to set up a
branch to track another branch.
This option defaults to never.
branch.<name>.remote::
When on branch <name>, it tells 'git fetch' and 'git push'
which remote to fetch from/push to. The remote to push to
- may be overridden with `remote.pushdefault` (for all branches).
+ may be overridden with `remote.pushDefault` (for all branches).
The remote to push to, for the current branch, may be further
- overridden by `branch.<name>.pushremote`. If no remote is
+ overridden by `branch.<name>.pushRemote`. If no remote is
configured, or if you are not on any branch, it defaults to
- `origin` for fetching and `remote.pushdefault` for pushing.
+ `origin` for fetching and `remote.pushDefault` for pushing.
Additionally, `.` (a period) is the current local repository
(a dot-repository), see `branch.<name>.merge`'s final note below.
-branch.<name>.pushremote::
+branch.<name>.pushRemote::
When on branch <name>, it overrides `branch.<name>.remote` for
- pushing. It also overrides `remote.pushdefault` for pushing
+ pushing. It also overrides `remote.pushDefault` for pushing
from branch <name>. 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 `remote.pushdefault` to
+ repository), you would want to set `remote.pushDefault` to
specify the remote to push to for all branches, and use this
option to override it for a specific branch.
branch.<name>.merge to the desired branch, and use the relative path
setting `.` (a period) for branch.<name>.remote.
-branch.<name>.mergeoptions::
+branch.<name>.mergeOptions::
Sets default options for merging into branch <name>. The syntax and
supported options are the same as those of linkgit:git-merge[1], but
option values containing whitespace characters are currently not
commands will only use color when output is to the terminal.
Defaults to false.
+
-This does not affect linkgit:git-format-patch[1] nor the
+This does not affect linkgit:git-format-patch[1] or the
'git-diff-{asterisk}' plumbing commands. Can be overridden on the
command line with the `--color[=<when>]` option.
`linenumber`;;
line number prefix (when using `-n`)
`match`;;
- matching text
+ matching text (same as setting `matchContext` and `matchSelected`)
+`matchContext`;;
+ matching text in context lines
+`matchSelected`;;
+ matching text in selected lines
`selected`;;
non-matching text in selected lines
`separator`;;
A boolean to enable/disable colored output when the pager is in
use (default is true).
-color.showbranch::
+color.showBranch::
A boolean to enable/disable color in the output of
linkgit:git-show-branch[1]. May be set to `always`,
`false` (or `never`) or `auto` (or `true`), in which case colors are used
`added` or `updated` (files which are added but not committed),
`changed` (files which are changed but not added in the index),
`untracked` (files which are not tracked by Git),
- `branch` (the current branch), or
+ `branch` (the current branch),
`nobranch` (the color the 'no branch' warning is shown in, defaulting
- to red).
+ to red), or
+ `unmerged` (files which have unmerged changes).
color.ui::
This variable determines the default value for variables such
have to remove the help lines that begin with `#` in the commit log
template yourself, if you do this).
+commit.gpgSign::
+
+ 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.
+
commit.status::
A boolean to enable/disable inclusion of status information in the
commit message template when using an editor to prepare the commit
by mail. See the --to and --cc options in
linkgit:git-format-patch[1].
-format.subjectprefix::
+format.subjectPrefix::
The default for format-patch is to output files with the '[PATCH]'
subject prefix. Use this variable to change that prefix.
Set this variable to the empty string ("") to suppress
signature generation.
+format.signatureFile::
+ Works just like format.signature except the contents of the
+ file specified by this variable will be used as the signature.
+
format.suffix::
The default for format-patch is to output files with the suffix
`.patch`. Use this variable to change that suffix (make sure to
A true boolean value is the same as `shallow`, and a false
value disables threading.
-format.signoff::
+format.signOff::
A boolean value which lets you enable the `-s/--signoff` option of
format-patch by default. *Note:* Adding the Signed-off-by: line to a
patch should be a conscious act and means that you certify you have
object to a worktree file upon checkout. See
linkgit:gitattributes[5] for details.
+gc.aggressiveDepth::
+ The depth parameter used in the delta compression
+ algorithm used by 'git gc --aggressive'. This defaults
+ to 250.
+
gc.aggressiveWindow::
The window size parameter used in the delta compression
algorithm used by 'git gc --aggressive'. This defaults
light-weight garbage collection from time to time. The
default value is 6700. Setting this to 0 disables it.
-gc.autopacklimit::
+gc.autoPackLimit::
When there are more than this many packs that are not
marked with `*.keep` file in the repository, `git gc
--auto` consolidates them into one larger pack. The
default value is 50. Setting this to 0 disables it.
-gc.packrefs::
+gc.autoDetach::
+ Make `git gc --auto` return immediately and run in background
+ if the system supports it. Default is true.
+
+gc.packRefs::
Running `git pack-refs` 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
to enable it within all non-bare repos or it can be set to a
boolean value. The default is `true`.
-gc.pruneexpire::
+gc.pruneExpire::
When 'git gc' is run, it will call 'prune --expire 2.weeks.ago'.
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.
-gc.reflogexpire::
-gc.<pattern>.reflogexpire::
+gc.reflogExpire::
+gc.<pattern>.reflogExpire::
'git reflog expire' removes reflog entries older than
this time; defaults to 90 days. With "<pattern>" (e.g.
"refs/stash") in the middle the setting applies only to
the refs that match the <pattern>.
-gc.reflogexpireunreachable::
-gc.<ref>.reflogexpireunreachable::
+gc.reflogExpireUnreachable::
+gc.<ref>.reflogExpireUnreachable::
'git reflog expire' removes reflog entries older than
this time and are not reachable from the current tip;
defaults to 30 days. With "<pattern>" (e.g. "refs/stash")
in the middle, the setting applies only to the refs that
match the <pattern>.
-gc.rerereresolved::
+gc.rerereResolved::
Records of conflicted merge you resolved earlier are
kept for this many days when 'git rerere gc' is run.
The default is 60 days. See linkgit:git-rerere[1].
-gc.rerereunresolved::
+gc.rerereUnresolved::
Records of conflicted merge you have not resolved are
kept for this many days when 'git rerere gc' is run.
The default is 15 days. See linkgit:git-rerere[1].
-gitcvs.commitmsgannotation::
+gitcvs.commitMsgAnnotation::
Append this string to each commit message. Set to empty string
to disable this feature. Defaults to "via git-CVS emulator".
Whether the CVS server interface is enabled for this repository.
See linkgit:git-cvsserver[1].
-gitcvs.logfile::
+gitcvs.logFile::
Path to a log file where the CVS server interface well... logs
various stuff. See linkgit:git-cvsserver[1].
treat it as text. If they suppress text conversion, the file
will be set with '-kb' mode, which suppresses any newline munging
the client might otherwise do. If the attributes do not allow
- the file type to be determined, then 'gitcvs.allbinary' is
+ the file type to be determined, then 'gitcvs.allBinary' is
used. See linkgit:gitattributes[5].
-gitcvs.allbinary::
+gitcvs.allBinary::
This is used if 'gitcvs.usecrlfattr' does not resolve
the correct '-kb' mode to use. If true, all
unresolved files are sent to the client in
then the contents of the file are examined to decide if
it is binary, similar to 'core.autocrlf'.
-gitcvs.dbname::
+gitcvs.dbName::
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
linkgit:git-cvsserver[1] for details). May not contain semicolons (`;`).
Default: '%Ggitcvs.%m.sqlite'
-gitcvs.dbdriver::
+gitcvs.dbDriver::
Used Perl DBI driver. You can specify any available driver
for this here, but it might not work. git-cvsserver is tested
with 'DBD::SQLite', reported to work with 'DBD::Pg', and
May not contain double colons (`:`). Default: 'SQLite'.
See linkgit:git-cvsserver[1].
-gitcvs.dbuser, gitcvs.dbpass::
- Database user and password. Only useful if setting 'gitcvs.dbdriver',
+gitcvs.dbUser, gitcvs.dbPass::
+ Database user and password. Only useful if setting 'gitcvs.dbDriver',
since SQLite has no concept of database users and/or passwords.
- 'gitcvs.dbuser' supports variable substitution (see
+ 'gitcvs.dbUser' supports variable substitution (see
linkgit:git-cvsserver[1] for details).
gitcvs.dbTableNamePrefix::
characters will be replaced with underscores.
All gitcvs variables except for 'gitcvs.usecrlfattr' and
-'gitcvs.allbinary' can also be specified as
+'gitcvs.allBinary' can also be specified as
'gitcvs.<access_method>.<varname>' (where 'access_method'
is one of "ext" and "pserver") to make them apply only for the given
access method.
gitweb.patches::
gitweb.pickaxe::
gitweb.remote_heads::
-gitweb.showsizes::
+gitweb.showSizes::
gitweb.snapshot::
See linkgit:gitweb.conf[5] for description.
gpg.program::
Use this custom program instead of "gpg" found on $PATH when
making or verifying a PGP signature. The program must support the
- same command line interface as GPG, namely, to verify a detached
+ same command-line interface as GPG, namely, to verify a detached
signature, "gpg --verify $file - <$signature" is run, and the
program is expected to signal a good signature by exiting with
- code 0, and to generate an ascii-armored detached signature, the
+ code 0, and to generate an ASCII-armored detached signature, the
standard input of "gpg -bsau $key" is fed with the contents to be
signed, and the program is expected to send the result to its
standard output.
-gui.commitmsgwidth::
+gui.commitMsgWidth::
Defines how wide the commit message window is in the
linkgit:git-gui[1]. "75" is the default.
-gui.diffcontext::
+gui.diffContext::
Specifies how many context lines should be used in calls to diff
made by the linkgit:git-gui[1]. The default is "5".
+gui.displayUntracked::
+ Determines if linkgit::git-gui[1] shows untracked files
+ in the file list. The default is "true".
+
gui.encoding::
Specifies the default encoding to use for displaying of
file contents in linkgit:git-gui[1] and linkgit:gitk[1].
If this option is not set, the tools default to the
locale encoding.
-gui.matchtrackingbranch::
+gui.matchTrackingBranch::
Determines if new branches created with linkgit:git-gui[1] should
default to tracking remote branches with matching names or
not. Default: "false".
-gui.newbranchtemplate::
+gui.newBranchTemplate::
Is used as suggested name when creating new branches using the
linkgit:git-gui[1].
-gui.pruneduringfetch::
+gui.pruneDuringFetch::
"true" if linkgit:git-gui[1] should prune remote-tracking branches when
performing a fetch. The default value is "false".
Determines if linkgit:git-gui[1] should trust the file modification
timestamp or not. By default the timestamps are not trusted.
-gui.spellingdictionary::
+gui.spellingDictionary::
Specifies the dictionary used for spell checking commit messages in
the linkgit:git-gui[1]. When set to "none" spell checking is turned
off.
-gui.fastcopyblame::
+gui.fastCopyBlame::
If true, 'git gui blame' uses `-C` instead of `-C -C` for original
location detection. It makes blame significantly faster on huge
repositories at the expense of less thorough copy detection.
-gui.copyblamethreshold::
+gui.copyBlameThreshold::
Specifies the threshold to use in 'git gui blame' original location
detection, measured in alphanumeric characters. See the
linkgit:git-blame[1] manual for more information on copy detection.
'FILENAME', and the name of the current branch as 'CUR_BRANCH' (if
the head is detached, 'CUR_BRANCH' is empty).
-guitool.<name>.needsfile::
+guitool.<name>.needsFile::
Run the tool only if a diff is selected in the GUI. It guarantees
that 'FILENAME' is not empty.
-guitool.<name>.noconsole::
+guitool.<name>.noConsole::
Run the command silently, without creating a window to display its
output.
-guitool.<name>.norescan::
+guitool.<name>.noRescan::
Don't rescan the working directory for changes after the tool
finishes execution.
guitool.<name>.confirm::
Show a confirmation dialog before actually running the tool.
-guitool.<name>.argprompt::
+guitool.<name>.argPrompt::
Request a string argument from the user, and pass it to the tool
through the 'ARGS' environment variable. Since requesting an
argument implies confirmation, the 'confirm' option has no effect
the dialog uses a built-in generic prompt; otherwise the exact
value of the variable is used.
-guitool.<name>.revprompt::
+guitool.<name>.revPrompt::
Request a single valid revision from the user, and set the
'REVISION' environment variable. In other aspects this option
- is similar to 'argprompt', and can be used together with it.
+ is similar to 'argPrompt', and can be used together with it.
-guitool.<name>.revunmerged::
- Show only unmerged branches in the 'revprompt' subdialog.
+guitool.<name>.revUnmerged::
+ Show only unmerged branches in the 'revPrompt' subdialog.
This is useful for tools similar to merge or rebase, but not
for things like checkout or reset.
guitool.<name>.prompt::
Specifies the general prompt string to display at the top of
- the dialog, before subsections for 'argprompt' and 'revprompt'.
+ the dialog, before subsections for 'argPrompt' and 'revPrompt'.
The default value includes the actual command.
help.browser::
Values 'man', 'info', 'web' and 'html' are supported. 'man' is
the default. 'web' and 'html' are the same.
-help.autocorrect::
+help.autoCorrect::
Automatically correct and execute mistyped commands after
waiting for the given number of deciseconds (0.1 sec). If more
than one command can be deduced from the entered text, nothing
value is 0 - the command will be just shown but not executed.
This is the default.
-help.htmlpath::
+help.htmlPath::
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 'web' format. This defaults to the documentation
`curl(1)`). This can be overridden on a per-remote basis; see
remote.<name>.proxy
-http.cookiefile::
+http.cookieFile::
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 linkgit:curl[1]).
- NOTE that the file specified with http.cookiefile is only used as
+ NOTE that the file specified with http.cookieFile is only used as
input unless http.saveCookies is set.
-http.savecookies::
+http.saveCookies::
If set, store cookies received during requests to the file specified by
- http.cookiefile. Has no effect if http.cookiefile is unset.
+ http.cookieFile. Has no effect if http.cookieFile is unset.
http.sslVerify::
Whether to verify the SSL certificate when fetching or pushing
support EPSV mode. Can be overridden by the 'GIT_CURL_FTP_NO_EPSV'
environment variable. Default is false (curl will use EPSV).
-http.useragent::
+http.userAgent::
The HTTP USER_AGENT string presented to an HTTP server. The default
value represents the version of the client Git such as git/1.7.1.
This option allows you to override this value to a more common value
Can be overridden by the 'GIT_HTTP_USER_AGENT' environment variable.
http.<url>.*::
- Any of the http.* options above can be applied selectively to some urls.
+ 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:
+
+
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
+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.
The configuration variables in the 'imap' section are described
in linkgit:git-imap-send[1].
-init.templatedir::
+index.version::
+ Specify the version with which new index files should be
+ initialized. This does not affect existing repositories.
+
+init.templateDir::
Specify the directory from which templates will be copied.
(See the "TEMPLATE DIRECTORY" section of linkgit:git-init[1].)
If true the web server started by linkgit:git-instaweb[1] will
be bound to the local IP (127.0.0.1).
-instaweb.modulepath::
+instaweb.modulePath::
The default module path for linkgit:git-instaweb[1] to use
instead of /usr/lib/apache2/modules. Only used if httpd
is Apache.
The port number to bind the gitweb httpd to. See
linkgit:git-instaweb[1].
-interactive.singlekey::
+interactive.singleKey::
In interactive commands, allow the user to provide one-letter
input with a single key (i.e., without hitting enter).
Currently this is used by the `--patch` mode of
linkgit:git-add[1], linkgit:git-checkout[1], linkgit:git-commit[1],
linkgit:git-reset[1], and linkgit:git-stash[1]. Note that this
setting is silently ignored if portable keystroke input
- is not available.
+ is not available; requires the Perl module Term::ReadKey.
log.abbrevCommit::
If true, makes linkgit:git-log[1], linkgit:git-show[1], and
specified, the full ref name (including prefix) will be printed.
This is the same as the log commands '--decorate' option.
-log.showroot::
+log.showRoot::
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 linkgit:git-log[1] or linkgit:git-whatchanged[1], which
If true, makes linkgit:git-log[1], linkgit:git-show[1], and
linkgit:git-whatchanged[1] assume `--use-mailmap`.
+mailinfo.scissors::
+ If true, makes linkgit:git-mailinfo[1] (and therefore
+ linkgit:git-am[1]) act by default as if the --scissors option
+ was provided on the command-line. When active, this features
+ removes everything from the message body before a scissors
+ line (i.e. consisting mainly of ">8", "8<" and "-").
+
mailmap.file::
The location of an augmenting mailmap file. The default
mailmap, located in the root of the repository, is loaded
if the file has been updated, otherwise the user is prompted to
indicate the success of the merge.
+mergetool.meld.hasOutput::
+ Older versions of `meld` do not support the `--output` option.
+ Git will attempt to detect whether `meld` supports `--output`
+ by inspecting the output of `meld --help`. Configuring
+ `mergetool.meld.hasOutput` will make Git skip these checks and
+ use the configured value instead. Setting `mergetool.meld.hasOutput`
+ to `true` tells Git to unconditionally use the `--output` option,
+ and `false` avoids using `--output`.
+
mergetool.keepBackup::
After performing a merge, the original file with conflict markers
can be saved as a file with a `.orig` extension. If this variable
preserved, otherwise they will be removed after the tool has
exited. Defaults to `false`.
+mergetool.writeToTemp::
+ Git writes temporary 'BASE', 'LOCAL', and 'REMOTE' versions of
+ conflicting files in the worktree by default. Git will attempt
+ to use a temporary directory for these files when set `true`.
+ Defaults to `false`.
+
mergetool.prompt::
Prompt before each invocation of the merge resolution program.
maximum depth is given on the command line. Defaults to 50.
pack.windowMemory::
- The window memory size limit used by linkgit:git-pack-objects[1]
- when no limit is given on the command line. The value can be
- suffixed with "k", "m", or "g". Defaults to 0, meaning no
- limit.
+ The maximum size of memory that is consumed by each thread
+ in linkgit:git-pack-objects[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.
pack.compression::
An integer -1..9, indicating the compression level for objects
Common unit suffixes of 'k', 'm', or 'g' are
supported.
+pack.useBitmaps::
+ 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.
+
+pack.writeBitmaps (deprecated)::
+ This is a deprecated synonym for `repack.writeBitmaps`.
+
+pack.writeBitmapHashCache::
+ 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's
+ 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, and that JGit's bitmap
+ implementation does not understand it, causing it to complain if
+ Git and JGit are used on the same repository. Defaults to false.
+
pager.<cmd>::
If the value is boolean, turns on or off pagination of the
output of a particular Git subcommand when writing to a tty.
Note that an alias with the same name as a built-in format
will be silently ignored.
+pull.ff::
+ 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 `false`,
+ this variable tells Git to create an extra merge commit in such
+ a case (equivalent to giving the `--no-ff` option from the command
+ line). When set to `only`, only such fast-forward merges are
+ allowed (equivalent to giving the `--ff-only` option from the
+ command line).
+
pull.rebase::
When true, rebase branches on top of the fetched branch, instead
of merging the default branch from the default remote when "git
pull from, work as `current`. This is the safest option and is suited
for beginners.
+
-This mode will become the default in Git 2.0.
+This mode has become the default in Git 2.0.
* `matching` - push all branches having the same name on both ends.
This makes the repository you are pushing to remember the set of
people may add new branches there, or update the tip of existing
branches outside your control.
+
-This is currently the default, but Git 2.0 will change the default
-to `simple`.
+This used to be the default, but not since Git 2.0 (`simple` is the
+new default).
--
+push.followTags::
+ If set to true enable '--follow-tags' option by default. You
+ may override this configuration at time of push by specifying
+ '--no-follow-tags'.
+
+
rebase.stat::
Whether to show a diffstat of what changed upstream since the last
rebase. False by default.
-rebase.autosquash::
+rebase.autoSquash::
If set to true enable '--autosquash' option by default.
-rebase.autostash::
+rebase.autoStash::
When set to true, automatically create a temporary stash
before the operation begins, and apply it after the operation
ends. This means that you can run rebase on a dirty worktree.
successful rebase might result in non-trivial conflicts.
Defaults to false.
+receive.advertiseAtomic::
+ By default, git-receive-pack will advertise the atomic push
+ capability to its clients. If you don't want to this capability
+ to be advertised, set this variable to false.
+
receive.autogc::
By default, git-receive-pack will run "git-gc --auto" after
receiving data from git-push and updating refs. You can stop
it by setting this variable to false.
+receive.certNonceSeed::
+ By setting this variable to a string, `git receive-pack`
+ will accept a `git push --signed` and verifies it by using
+ a "nonce" protected by HMAC using this string as a secret
+ key.
+
+receive.certNonceSlop::
+ When a `git push --signed` sent 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 `GIT_PUSH_CERT_NONCE` to the
+ hooks (instead of what the receive-pack asked the sending
+ side to include). This may allow writing checks in
+ `pre-receive` and `post-receive` a bit easier. Instead of
+ checking `GIT_PUSH_CERT_NONCE_SLOP` 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 `GIT_PUSH_CERT_NONCE_STATUS` is `OK`.
+
receive.fsckObjects::
If it is set to true, git-receive-pack will check all received
objects. It will abort in the case of a malformed object or a
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".
++
+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.
++
+By default, "updateInstead" will refuse the push if the working tree or
+the index have any difference from the HEAD, but the `push-to-checkout`
+hook can be used to customize this. See linkgit:githooks[5].
receive.denyNonFastForwards::
If set to true, git-receive-pack will deny a ref update which is
even if that push is forced. This configuration variable is
set when initializing a shared repository.
-receive.hiderefs::
+receive.hideRefs::
String(s) `receive-pack` uses to decide which refs to omit
from its initial advertisement. Use more than one
definitions to specify multiple prefix strings. A ref that
push`, and an attempt to update or delete a hidden ref by
`git push` is rejected.
-receive.updateserverinfo::
+receive.updateServerInfo::
If set to true, git-receive-pack will run git-update-server-info
after receiving data from git-push and updating refs.
-remote.pushdefault::
+receive.shallowUpdate::
+ If set to true, .git/shallow can be updated when new refs
+ require new shallow roots. Otherwise those refs are rejected.
+
+remote.pushDefault::
The remote to push to by default. Overrides
`branch.<name>.remote` for all branches, and is overridden by
- `branch.<name>.pushremote` for specific branches.
+ `branch.<name>.pushRemote` for specific branches.
remote.<name>.url::
The URL of a remote repository. See linkgit:git-fetch[1] or
The default program to execute on the remote side when fetching. See
option \--upload-pack of linkgit:git-fetch-pack[1].
-remote.<name>.tagopt::
+remote.<name>.tagOpt::
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
remote.<name>.prune::
When set to true, fetching from this remote by default will also
- remove any remote-tracking branches which no longer exist on the
- remote (as if the `--prune` option was give on the command line).
+ remove any remote-tracking references that no longer exist on the
+ remote (as if the `--prune` option was given on the command line).
Overrides `fetch.prune` settings, if any.
remotes.<group>::
The list of remotes which are fetched by "git remote update
<group>". See linkgit:git-remote[1].
-repack.usedeltabaseoffset::
+repack.useDeltaBaseOffset::
By default, linkgit:git-repack[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
"false" and repack. Access from old Git versions over the
native protocol are unaffected by this option.
-rerere.autoupdate::
+repack.packKeptObjects::
+ If set to true, makes `git repack` act as if
+ `--pack-kept-objects` was passed. See linkgit:git-repack[1] for
+ details. Defaults to `false` normally, but `true` if a bitmap
+ index is being written (either via `--write-bitmap-index` or
+ `repack.writeBitmaps`).
+
+repack.writeBitmaps::
+ When true, git will write a bitmap index when packing all
+ objects to disk (e.g., when `git repack -a` 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. Defaults to
+ false.
+
+rerere.autoUpdate::
When set to true, `git-rerere` updates the index with the
resulting contents after it cleanly resolves conflicts using
previously recorded resolution. Defaults to false.
values in the 'sendemail' section. The default identity is
the value of 'sendemail.identity'.
-sendemail.smtpencryption::
+sendemail.smtpEncryption::
See linkgit:git-send-email[1] for description. Note that this
setting is not subject to the 'identity' mechanism.
-sendemail.smtpssl::
- Deprecated alias for 'sendemail.smtpencryption = ssl'.
+sendemail.smtpssl (deprecated)::
+ Deprecated alias for 'sendemail.smtpEncryption = ssl'.
sendemail.smtpsslcertpath::
Path to ca-certificates (either a directory or a single file).
identity is selected, through command-line or
'sendemail.identity'.
-sendemail.aliasesfile::
-sendemail.aliasfiletype::
+sendemail.aliasesFile::
+sendemail.aliasFileType::
sendemail.annotate::
sendemail.bcc::
sendemail.cc::
-sendemail.cccmd::
-sendemail.chainreplyto::
+sendemail.ccCmd::
+sendemail.chainReplyTo::
sendemail.confirm::
-sendemail.envelopesender::
+sendemail.envelopeSender::
sendemail.from::
-sendemail.multiedit::
+sendemail.multiEdit::
sendemail.signedoffbycc::
-sendemail.smtppass::
+sendemail.smtpPass::
sendemail.suppresscc::
-sendemail.suppressfrom::
+sendemail.suppressFrom::
sendemail.to::
-sendemail.smtpdomain::
-sendemail.smtpserver::
-sendemail.smtpserverport::
-sendemail.smtpserveroption::
-sendemail.smtpuser::
+sendemail.smtpDomain::
+sendemail.smtpServer::
+sendemail.smtpServerPort::
+sendemail.smtpServerOption::
+sendemail.smtpUser::
sendemail.thread::
+sendemail.transferEncoding::
sendemail.validate::
+sendemail.xmailer::
See linkgit:git-send-email[1] for description.
-sendemail.signedoffcc::
+sendemail.signedoffcc (deprecated)::
Deprecated alias for 'sendemail.signedoffbycc'.
showbranch.default::
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
- all the files in the whole repository, which might be slow on some
+ the files in the whole repository, which might be slow on some
systems. So, this variable controls how the commands displays
the untracked files. Possible values are:
+
This variable can be overridden with the -u|--untracked-files option
of linkgit:git-status[1] and linkgit:git-commit[1].
-status.submodulesummary::
+status.submoduleSummary::
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-limit option of linkgit:git-submodule[1]). Please note
that the summary output command will be suppressed for all
submodules when `diff.ignoreSubmodules` is set to 'all' or only
- for those submodules where `submodule.<name>.ignore=all`. To
+ for those submodules where `submodule.<name>.ignore=all`. 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 'git
+ the --ignore-submodules=dirty command-line option or the 'git
submodule summary' command, which shows a similar output but does
not honor these settings.
submodule.<name>.path::
submodule.<name>.url::
+ The path within this project and URL for a submodule. These
+ variables are initially populated by 'git submodule init'. See
+ linkgit:git-submodule[1] and linkgit:gitmodules[5] for
+ details.
+
submodule.<name>.update::
- The path within this project, URL, and the updating strategy
- for a submodule. These variables are initially populated
- by 'git submodule init'; edit them to override the
- URL and other values found in the `.gitmodules` file. See
- linkgit:git-submodule[1] and linkgit:gitmodules[5] for details.
+ The default update procedure for a submodule. This variable
+ is populated by `git submodule init` from the
+ linkgit:gitmodules[5] file. See description of 'update'
+ command in linkgit:git-submodule[1].
submodule.<name>.branch::
The remote branch name for a submodule, used by `git submodule
submodule.<name>.fetchRecurseSubmodules::
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".
+ command-line option to "git fetch" and "git pull".
This setting will override that from in the linkgit:gitmodules[5]
file.
submodule.<name>.ignore::
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, "dirty" will ignore all changes to the submodules work tree and
+ 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 submodules 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.
"--ignore-submodules" option. The 'git submodule' commands are not
affected by this setting.
+tag.sort::
+ This variable controls the sort ordering of tags when displayed by
+ linkgit:git-tag[1]. Without the "--sort=<value>" option provided, the
+ value of this variable will be used as the default.
+
tar.umask::
This variable can be used to restrict the permission bits of
tar archive entries. The default is 0002, which turns off the
not set, the value of this variable is used instead.
Defaults to false.
-transfer.hiderefs::
- This variable can be used to set both `receive.hiderefs`
- and `uploadpack.hiderefs` at the same time to the same
+transfer.hideRefs::
+ This variable can be used to set both `receive.hideRefs`
+ and `uploadpack.hideRefs` at the same time to the same
values. See entries for these other variables.
transfer.unpackLimit::
not set, the value of this variable is used instead.
The default value is 100.
-uploadpack.hiderefs::
+uploadarchive.allowUnreachable::
+ If true, allow clients to use `git archive --remote` to request
+ any tree, whether reachable from the ref tips or not. See the
+ discussion in the `SECURITY` section of
+ linkgit:git-upload-archive[1] for more details. Defaults to
+ `false`.
+
+uploadpack.hideRefs::
String(s) `upload-pack` uses to decide which refs to omit
from its initial advertisement. Use more than one
definitions to specify multiple prefix strings. A ref that
fetch` will fail. See also `uploadpack.allowtipsha1inwant`.
uploadpack.allowtipsha1inwant::
- When `uploadpack.hiderefs` is in effect, allow `upload-pack`
+ When `uploadpack.hideRefs` is in effect, allow `upload-pack`
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 `uploadpack.hiderefs`.
+ see also `uploadpack.hideRefs`.
-uploadpack.keepalive::
+uploadpack.keepAlive::
When `upload-pack` has started `pack-objects`, there may be a
quiet period while `pack-objects` prepares the pack. Normally
it would output progress information, but if `--quiet` was used
the pack data begins. Some clients and networks may consider
the server to be hung and give up. Setting this option instructs
`upload-pack` to send an empty keepalive packet every
- `uploadpack.keepalive` seconds. Setting this option to 0
+ `uploadpack.keepAlive` seconds. Setting this option to 0
disables keepalive packets entirely. The default is 5 seconds.
url.<base>.insteadOf::
Can be overridden by the 'GIT_AUTHOR_NAME' and 'GIT_COMMITTER_NAME'
environment variables. See linkgit:git-commit-tree[1].
-user.signingkey::
+user.signingKey::
If linkgit:git-tag[1] or linkgit:git-commit[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's --local-user parameter,
so you may specify a key using any method that gpg supports.
+versionsort.prereleaseSuffix::
+ When version sort is used in linkgit:git-tag[1], prerelease
+ tags (e.g. "1.0-rc1") may appear after the main release
+ "1.0". By specifying the suffix "-rc" in this variable,
+ "1.0-rc1" will appear before "1.0".
++
+This variable can be specified multiple times, once per suffix. The
+order of suffixes in the config file determines the sorting order
+(e.g. if "-pre" appears before "-rc" in the config file then 1.0-preXX
+is sorted before 1.0-rcXX). The sorting order between different
+suffixes is undefined if they are in multiple config files.
+
web.browser::
Specify a web browser that may be used by some commands.
Currently only linkgit:git-instaweb[1] and linkgit:git-help[1]