git-config(1)
=============

NAME
----
git-config - Get and set repository or global options


SYNOPSIS
--------
[verse]
'git-config' [--system | --global] [type] [-z|--null] name [value [value_regex]]
'git-config' [--system | --global] [type] --add name value
'git-config' [--system | --global] [type] --replace-all name [value [value_regex]]
'git-config' [--system | --global] [type] [-z|--null] --get name [value_regex]
'git-config' [--system | --global] [type] [-z|--null] --get-all name [value_regex]
'git-config' [--system | --global] [type] [-z|--null] --get-regexp name_regex [value_regex]
'git-config' [--system | --global] --unset name [value_regex]
'git-config' [--system | --global] --unset-all name [value_regex]
'git-config' [--system | --global] --rename-section old_name new_name
'git-config' [--system | --global] --remove-section name
'git-config' [--system | --global] [-z|--null] -l | --list

DESCRIPTION
-----------
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.

Multiple lines can be added to an option by using the '--add' option.
If you want to update or unset an option which can occur on multiple
lines, a POSIX regexp `value_regex` needs to be given.  Only the
existing values that match the regexp are updated or unset.  If
you want to handle the lines that do *not* match the regex, just
prepend a single exclamation mark in front (see also <<EXAMPLES>>).

The type specifier can be either '--int' or '--bool', which will make
'git-config' ensure that the variable(s) are of the given type and
convert the value to the canonical form (simple decimal number for int,
a "true" or "false" string for bool).  If no type specifier is passed,
no checks or transformations are performed on the value.

This command will fail if:

. The .git/config file is invalid,
. Can not write to .git/config,
. no section was provided,
. the section or key is invalid,
. you try to unset an option which does not exist,
. you try to unset/set an option for which multiple lines match, or
. you use '--global' option without $HOME being properly set.


OPTIONS
-------

--replace-all::
	Default behavior is to replace at most one line. This replaces
	all lines matching the key (and optionally the value_regex).

--add::
	Adds a new line to the option without altering any existing
	values.  This is the same as providing '^$' as the value_regex.

--get::
	Get the value for a given key (optionally filtered by a regex
	matching the value). Returns error code 1 if the key was not
	found and error code 2 if multiple key values were found.

--get-all::
	Like get, but does not fail if the number of values for the key
	is not exactly one.

--get-regexp::
	Like --get-all, but interprets the name as a regular expression.
	Also outputs the key names.

--global::
	For writing options: write to global ~/.gitconfig file rather than
	the repository .git/config.
+
For reading options: read only from global ~/.gitconfig rather than
from all available files.
+
See also <<FILES>>.

--system::
	For writing options: write to system-wide $(prefix)/etc/gitconfig
	rather than the repository .git/config.
+
For reading options: read only from system-wide $(prefix)/etc/gitconfig
rather than from all available files.
+
See also <<FILES>>.

--remove-section::
	Remove the given section from the configuration file.

--rename-section::
	Rename the given section to a new name.

--unset::
	Remove the line matching the key from config file.

--unset-all::
	Remove all lines matching the key from config file.

-l, --list::
	List all variables set in config file.

--bool::
	git-config will ensure that the output is "true" or "false"

--int::
	git-config will ensure that the output is a simple
	decimal number.  An optional value suffix of 'k', 'm', or 'g'
	in the config file will cause the value to be multiplied
	by 1024, 1048576, or 1073741824 prior to output.

-z, --null::
	For all options that output values and/or keys, always
	end values with 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.


[[FILES]]
FILES
-----

There are three files where git-config will search for configuration
options:

.git/config::
	Repository specific configuration file. (The filename is
	of course relative to the repository root, not the working
	directory.)

~/.gitconfig::
	User-specific configuration file. Also called "global"
	configuration file.

$(prefix)/etc/gitconfig::
	System-wide configuration file.

If no further options are given, all reading options will read all of these
files that are available. If the global or the system-wide configuration
file are not available they will be ignored. If the repository configuration
file is not available or readable, git-config will exit with a non-zero
error code. However, in neither case will an error message be issued.

All writing options will per default write to the repository specific
configuration file. Note that this also affects options like '--replace-all'
and '--unset'. *git-config will only ever change one file at a time*.

You can override these rules either by command line options or by environment
variables. The '--global' and the '--system' options will limit the file used
to the global or system-wide file respectively. The GIT_CONFIG environment
variable has a similar effect, but you can specify any filename you want.

The GIT_CONFIG_LOCAL environment variable on the other hand only changes
the name used instead of the repository configuration file. The global and
the system-wide configuration files will still be read. (For writing options
this will obviously result in the same behavior as using GIT_CONFIG.)


ENVIRONMENT
-----------

GIT_CONFIG::
	Take the configuration from the given file instead of .git/config.
	Using the "--global" option forces this to ~/.gitconfig. Using the
	"--system" option forces this to $(prefix)/etc/gitconfig.

GIT_CONFIG_LOCAL::
	Take the configuration from the given file instead if .git/config.
	Still read the global and the system-wide configuration files, though.

See also <<FILES>>.


[[EXAMPLES]]
EXAMPLES
--------

Given a .git/config like this:

	#
	# This is the config file, and
	# a '#' or ';' character indicates
	# a comment
	#

	; core variables
	[core]
		; Don't trust file modes
		filemode = false

	; Our diff algorithm
	[diff]
		external = "/usr/local/bin/gnu-diff -u"
		renames = true

	; Proxy settings
	[core]
		gitproxy="ssh" for "ssh://kernel.org/"
		gitproxy="proxy-command" for kernel.org
		gitproxy="myprotocol-command" for "my://"
		gitproxy=default-proxy ; for all the rest

you can set the filemode to true with

------------
% git config core.filemode true
------------

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".

------------
% git config core.gitproxy '"ssh" for kernel.org' 'for kernel.org$'
------------

This makes sure that only the key/value pair for kernel.org is replaced.

To delete the entry for renames, do

------------
% git config --unset diff.renames
------------

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.

To query the value for a given key, do

------------
% git config --get core.filemode
------------

or

------------
% git config core.filemode
------------

or, to query a multivar:

------------
% git config --get core.gitproxy "for kernel.org$"
------------

If you want to know all the values for a multivar, do:

------------
% git config --get-all core.gitproxy
------------

If you like to live dangerous, you can replace *all* core.gitproxy by a
new one with

------------
% git config --replace-all core.gitproxy ssh
------------

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:

------------
% git config core.gitproxy ssh '! for '
------------

To actually match only values with an exclamation mark, you have to

------------
% git config section.key value '[!]'
------------

To add a new proxy, without altering any of the existing ones, use

------------
% git config core.gitproxy '"proxy" for example.com'
------------


include::config.txt[]


Author
------
Written by Johannes Schindelin <Johannes.Schindelin@gmx.de>

Documentation
--------------
Documentation by Johannes Schindelin, Petr Baudis and the git-list <git@vger.kernel.org>.

GIT
---
Part of the gitlink:git[7] suite
