|  | git-config(1) | 
|  | ============= | 
|  |  | 
|  | NAME | 
|  | ---- | 
|  | git-config - Get and set repository or global options | 
|  |  | 
|  |  | 
|  | SYNOPSIS | 
|  | -------- | 
|  | [verse] | 
|  | 'git config' [<file-option>] [type] [-z|--null] name [value [value_regex]] | 
|  | 'git config' [<file-option>] [type] --add name value | 
|  | 'git config' [<file-option>] [type] --replace-all name value [value_regex] | 
|  | 'git config' [<file-option>] [type] [-z|--null] --get name [value_regex] | 
|  | 'git config' [<file-option>] [type] [-z|--null] --get-all name [value_regex] | 
|  | 'git config' [<file-option>] [type] [-z|--null] --get-regexp name_regex [value_regex] | 
|  | 'git config' [<file-option>] --unset name [value_regex] | 
|  | 'git config' [<file-option>] --unset-all name [value_regex] | 
|  | 'git config' [<file-option>] --rename-section old_name new_name | 
|  | 'git config' [<file-option>] --remove-section name | 
|  | 'git config' [<file-option>] [-z|--null] -l | --list | 
|  | 'git config' [<file-option>] --get-color name [default] | 
|  | 'git config' [<file-option>] --get-colorbool name [stdout-is-tty] | 
|  | 'git config' [<file-option>] -e | --edit | 
|  |  | 
|  | 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. | 
|  |  | 
|  | The file-option can be one of '--system', '--global' or '--file' | 
|  | which specify where the values will be read from or written to. | 
|  | The default is to assume the config file of the current repository, | 
|  | .git/config unless defined otherwise with GIT_DIR and GIT_CONFIG | 
|  | (see <<FILES>>). | 
|  |  | 
|  | This command will fail if: | 
|  |  | 
|  | . The config file is invalid, | 
|  | . Can not write to the config file, | 
|  | . 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>>. | 
|  |  | 
|  | -f config-file:: | 
|  | --file config-file:: | 
|  | Use the given config file instead of the one specified by GIT_CONFIG. | 
|  |  | 
|  | --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. | 
|  |  | 
|  | --bool-or-int:: | 
|  | 'git-config' will ensure that the output matches the format of | 
|  | either --bool or --int, as described above. | 
|  |  | 
|  | -z:: | 
|  | --null:: | 
|  | 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. | 
|  |  | 
|  | --get-colorbool name [stdout-is-tty]:: | 
|  |  | 
|  | Find the color setting for `name` (e.g. `color.diff`) and output | 
|  | "true" or "false". `stdout-is-tty` should be either "true" or | 
|  | "false", and is taken into account when configuration says | 
|  | "auto". If `stdout-is-tty` 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 `name` is undefined, the command uses | 
|  | `color.ui` as fallback. | 
|  |  | 
|  | --get-color name default:: | 
|  |  | 
|  | Find the color configured for `name` (e.g. `color.diff.new`) and | 
|  | output it as the ANSI color escape sequence to the standard | 
|  | output. The optional `default` parameter is used instead, if | 
|  | there is no color configured for `name`. | 
|  |  | 
|  | -e:: | 
|  | --edit:: | 
|  | Opens an editor to modify the specified config file; either | 
|  | '--system', '--global', or repository (default). | 
|  |  | 
|  | [[FILES]] | 
|  | FILES | 
|  | ----- | 
|  |  | 
|  | If not set explicitly with '--file', there are three files where | 
|  | 'git-config' will search for configuration options: | 
|  |  | 
|  | $GIT_DIR/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. | 
|  |  | 
|  |  | 
|  | 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. | 
|  |  | 
|  | 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/diff-wrapper | 
|  | renames = true | 
|  |  | 
|  | ; Proxy settings | 
|  | [core] | 
|  | gitproxy="proxy-command" for kernel.org | 
|  | 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 dangerously, 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-command" for example.com' | 
|  | ------------ | 
|  |  | 
|  | An example to use customized color from the configuration in your | 
|  | script: | 
|  |  | 
|  | ------------ | 
|  | #!/bin/sh | 
|  | WS=$(git config --get-color color.diff.whitespace "blue reverse") | 
|  | RESET=$(git config --get-color "" "reset") | 
|  | echo "${WS}your whitespace color or blue reverse${RESET}" | 
|  | ------------ | 
|  |  | 
|  | 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 linkgit:git[1] suite |