| Junio C Hamano | 7ad22dc | 2007-01-29 02:55:48 | [diff] [blame] | 1 | git-config(1) | 
|  | 2 | ============= | 
|  | 3 |  | 
|  | 4 | NAME | 
|  | 5 | ---- | 
|  | 6 | git-config - Get and set repository or global options | 
|  | 7 |  | 
|  | 8 |  | 
|  | 9 | SYNOPSIS | 
|  | 10 | -------- | 
|  | 11 | [verse] | 
| Junio C Hamano | fce7c7e | 2008-07-02 03:06:38 | [diff] [blame] | 12 | 'git config' [<file-option>] [type] [-z|--null] name [value [value_regex]] | 
|  | 13 | 'git config' [<file-option>] [type] --add name value | 
| Junio C Hamano | 5217a27 | 2009-03-21 00:39:33 | [diff] [blame] | 14 | 'git config' [<file-option>] [type] --replace-all name value [value_regex] | 
| Junio C Hamano | fce7c7e | 2008-07-02 03:06:38 | [diff] [blame] | 15 | 'git config' [<file-option>] [type] [-z|--null] --get name [value_regex] | 
|  | 16 | 'git config' [<file-option>] [type] [-z|--null] --get-all name [value_regex] | 
|  | 17 | 'git config' [<file-option>] [type] [-z|--null] --get-regexp name_regex [value_regex] | 
|  | 18 | 'git config' [<file-option>] --unset name [value_regex] | 
|  | 19 | 'git config' [<file-option>] --unset-all name [value_regex] | 
|  | 20 | 'git config' [<file-option>] --rename-section old_name new_name | 
|  | 21 | 'git config' [<file-option>] --remove-section name | 
|  | 22 | 'git config' [<file-option>] [-z|--null] -l | --list | 
|  | 23 | 'git config' [<file-option>] --get-color name [default] | 
|  | 24 | 'git config' [<file-option>] --get-colorbool name [stdout-is-tty] | 
| Junio C Hamano | 0a23522 | 2009-03-06 08:21:09 | [diff] [blame] | 25 | 'git config' [<file-option>] -e | --edit | 
| Junio C Hamano | 7ad22dc | 2007-01-29 02:55:48 | [diff] [blame] | 26 |  | 
|  | 27 | DESCRIPTION | 
|  | 28 | ----------- | 
|  | 29 | You can query/set/replace/unset options with this command. The name is | 
|  | 30 | actually the section and the key separated by a dot, and the value will be | 
|  | 31 | escaped. | 
|  | 32 |  | 
|  | 33 | Multiple lines can be added to an option by using the '--add' option. | 
|  | 34 | If you want to update or unset an option which can occur on multiple | 
|  | 35 | lines, a POSIX regexp `value_regex` needs to be given. Only the | 
|  | 36 | existing values that match the regexp are updated or unset. If | 
|  | 37 | you want to handle the lines that do *not* match the regex, just | 
| Junio C Hamano | 6fddfe5 | 2007-05-31 07:38:19 | [diff] [blame] | 38 | prepend a single exclamation mark in front (see also <<EXAMPLES>>). | 
| Junio C Hamano | 7ad22dc | 2007-01-29 02:55:48 | [diff] [blame] | 39 |  | 
|  | 40 | The type specifier can be either '--int' or '--bool', which will make | 
| Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 41 | 'git-config' ensure that the variable(s) are of the given type and | 
| Junio C Hamano | 7ad22dc | 2007-01-29 02:55:48 | [diff] [blame] | 42 | convert the value to the canonical form (simple decimal number for int, | 
| Junio C Hamano | d526ba9 | 2007-07-02 00:17:42 | [diff] [blame] | 43 | a "true" or "false" string for bool). If no type specifier is passed, | 
| Junio C Hamano | 7ad22dc | 2007-01-29 02:55:48 | [diff] [blame] | 44 | no checks or transformations are performed on the value. | 
|  | 45 |  | 
| Junio C Hamano | 0ddc94d | 2007-08-01 08:42:39 | [diff] [blame] | 46 | The file-option can be one of '--system', '--global' or '--file' | 
|  | 47 | which specify where the values will be read from or written to. | 
|  | 48 | The default is to assume the config file of the current repository, | 
|  | 49 | .git/config unless defined otherwise with GIT_DIR and GIT_CONFIG | 
|  | 50 | (see <<FILES>>). | 
|  | 51 |  | 
| Junio C Hamano | 7ad22dc | 2007-01-29 02:55:48 | [diff] [blame] | 52 | This command will fail if: | 
|  | 53 |  | 
| Junio C Hamano | 0ddc94d | 2007-08-01 08:42:39 | [diff] [blame] | 54 | . The config file is invalid, | 
|  | 55 | . Can not write to the config file, | 
| Junio C Hamano | 7ad22dc | 2007-01-29 02:55:48 | [diff] [blame] | 56 | . no section was provided, | 
|  | 57 | . the section or key is invalid, | 
|  | 58 | . you try to unset an option which does not exist, | 
|  | 59 | . you try to unset/set an option for which multiple lines match, or | 
| Junio C Hamano | 6fddfe5 | 2007-05-31 07:38:19 | [diff] [blame] | 60 | . you use '--global' option without $HOME being properly set. | 
| Junio C Hamano | 7ad22dc | 2007-01-29 02:55:48 | [diff] [blame] | 61 |  | 
|  | 62 |  | 
|  | 63 | OPTIONS | 
|  | 64 | ------- | 
|  | 65 |  | 
|  | 66 | --replace-all:: | 
|  | 67 | Default behavior is to replace at most one line. This replaces | 
|  | 68 | all lines matching the key (and optionally the value_regex). | 
|  | 69 |  | 
|  | 70 | --add:: | 
|  | 71 | Adds a new line to the option without altering any existing | 
|  | 72 | values. This is the same as providing '^$' as the value_regex. | 
|  | 73 |  | 
|  | 74 | --get:: | 
|  | 75 | Get the value for a given key (optionally filtered by a regex | 
|  | 76 | matching the value). Returns error code 1 if the key was not | 
|  | 77 | found and error code 2 if multiple key values were found. | 
|  | 78 |  | 
|  | 79 | --get-all:: | 
|  | 80 | Like get, but does not fail if the number of values for the key | 
|  | 81 | is not exactly one. | 
|  | 82 |  | 
|  | 83 | --get-regexp:: | 
|  | 84 | Like --get-all, but interprets the name as a regular expression. | 
| Junio C Hamano | ddc5ad4 | 2007-06-27 07:14:52 | [diff] [blame] | 85 | Also outputs the key names. | 
| Junio C Hamano | 7ad22dc | 2007-01-29 02:55:48 | [diff] [blame] | 86 |  | 
|  | 87 | --global:: | 
| Junio C Hamano | 6fddfe5 | 2007-05-31 07:38:19 | [diff] [blame] | 88 | For writing options: write to global ~/.gitconfig file rather than | 
|  | 89 | the repository .git/config. | 
|  | 90 | + | 
|  | 91 | For reading options: read only from global ~/.gitconfig rather than | 
|  | 92 | from all available files. | 
|  | 93 | + | 
|  | 94 | See also <<FILES>>. | 
| Junio C Hamano | 7ad22dc | 2007-01-29 02:55:48 | [diff] [blame] | 95 |  | 
| Junio C Hamano | 81c711d | 2007-04-20 07:20:14 | [diff] [blame] | 96 | --system:: | 
| Junio C Hamano | 6fddfe5 | 2007-05-31 07:38:19 | [diff] [blame] | 97 | For writing options: write to system-wide $(prefix)/etc/gitconfig | 
|  | 98 | rather than the repository .git/config. | 
|  | 99 | + | 
|  | 100 | For reading options: read only from system-wide $(prefix)/etc/gitconfig | 
|  | 101 | rather than from all available files. | 
|  | 102 | + | 
|  | 103 | See also <<FILES>>. | 
| Junio C Hamano | 81c711d | 2007-04-20 07:20:14 | [diff] [blame] | 104 |  | 
| Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 105 | -f config-file:: | 
|  | 106 | --file config-file:: | 
| Junio C Hamano | 0ddc94d | 2007-08-01 08:42:39 | [diff] [blame] | 107 | Use the given config file instead of the one specified by GIT_CONFIG. | 
|  | 108 |  | 
| Junio C Hamano | d15328a | 2007-03-09 09:06:40 | [diff] [blame] | 109 | --remove-section:: | 
|  | 110 | Remove the given section from the configuration file. | 
|  | 111 |  | 
|  | 112 | --rename-section:: | 
|  | 113 | Rename the given section to a new name. | 
|  | 114 |  | 
| Junio C Hamano | 7ad22dc | 2007-01-29 02:55:48 | [diff] [blame] | 115 | --unset:: | 
|  | 116 | Remove the line matching the key from config file. | 
|  | 117 |  | 
|  | 118 | --unset-all:: | 
| Junio C Hamano | 1055777 | 2007-03-15 07:12:30 | [diff] [blame] | 119 | Remove all lines matching the key from config file. | 
| Junio C Hamano | 7ad22dc | 2007-01-29 02:55:48 | [diff] [blame] | 120 |  | 
| Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 121 | -l:: | 
|  | 122 | --list:: | 
| Junio C Hamano | 7ad22dc | 2007-01-29 02:55:48 | [diff] [blame] | 123 | List all variables set in config file. | 
|  | 124 |  | 
|  | 125 | --bool:: | 
| Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 126 | 'git-config' will ensure that the output is "true" or "false" | 
| Junio C Hamano | 7ad22dc | 2007-01-29 02:55:48 | [diff] [blame] | 127 |  | 
|  | 128 | --int:: | 
| Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 129 | 'git-config' will ensure that the output is a simple | 
| Junio C Hamano | 7ad22dc | 2007-01-29 02:55:48 | [diff] [blame] | 130 | decimal number. An optional value suffix of 'k', 'm', or 'g' | 
|  | 131 | in the config file will cause the value to be multiplied | 
|  | 132 | by 1024, 1048576, or 1073741824 prior to output. | 
|  | 133 |  | 
| Junio C Hamano | 792c5a9 | 2009-03-08 08:45:13 | [diff] [blame] | 134 | --bool-or-int:: | 
|  | 135 | 'git-config' will ensure that the output matches the format of | 
|  | 136 | either --bool or --int, as described above. | 
|  | 137 |  | 
| Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 138 | -z:: | 
|  | 139 | --null:: | 
| Junio C Hamano | ddc5ad4 | 2007-06-27 07:14:52 | [diff] [blame] | 140 | For all options that output values and/or keys, always | 
| Junio C Hamano | 1f51196 | 2008-01-30 08:28:52 | [diff] [blame] | 141 | end values with the null character (instead of a | 
| Junio C Hamano | ddc5ad4 | 2007-06-27 07:14:52 | [diff] [blame] | 142 | newline). Use newline instead as a delimiter between | 
|  | 143 | key and value. This allows for secure parsing of the | 
|  | 144 | output without getting confused e.g. by values that | 
|  | 145 | contain line breaks. | 
|  | 146 |  | 
| Junio C Hamano | 00b8b63 | 2007-12-07 09:50:49 | [diff] [blame] | 147 | --get-colorbool name [stdout-is-tty]:: | 
|  | 148 |  | 
|  | 149 | Find the color setting for `name` (e.g. `color.diff`) and output | 
|  | 150 | "true" or "false". `stdout-is-tty` should be either "true" or | 
|  | 151 | "false", and is taken into account when configuration says | 
|  | 152 | "auto". If `stdout-is-tty` is missing, then checks the standard | 
|  | 153 | output of the command itself, and exits with status 0 if color | 
|  | 154 | is to be used, or exits with status 1 otherwise. | 
| Junio C Hamano | e3ddb5b | 2008-04-21 00:48:07 | [diff] [blame] | 155 | When the color setting for `name` is undefined, the command uses | 
|  | 156 | `color.ui` as fallback. | 
| Junio C Hamano | 00b8b63 | 2007-12-07 09:50:49 | [diff] [blame] | 157 |  | 
| Junio C Hamano | 0c99970 | 2007-12-03 09:57:55 | [diff] [blame] | 158 | --get-color name default:: | 
|  | 159 |  | 
|  | 160 | Find the color configured for `name` (e.g. `color.diff.new`) and | 
|  | 161 | output it as the ANSI color escape sequence to the standard | 
|  | 162 | output. The optional `default` parameter is used instead, if | 
|  | 163 | there is no color configured for `name`. | 
| Junio C Hamano | 7ad22dc | 2007-01-29 02:55:48 | [diff] [blame] | 164 |  | 
| Junio C Hamano | 0a23522 | 2009-03-06 08:21:09 | [diff] [blame] | 165 | -e:: | 
|  | 166 | --edit:: | 
|  | 167 | Opens an editor to modify the specified config file; either | 
|  | 168 | '--system', '--global', or repository (default). | 
|  | 169 |  | 
| Junio C Hamano | 6fddfe5 | 2007-05-31 07:38:19 | [diff] [blame] | 170 | [[FILES]] | 
|  | 171 | FILES | 
|  | 172 | ----- | 
|  | 173 |  | 
| Junio C Hamano | a638742 | 2007-08-25 03:54:27 | [diff] [blame] | 174 | If not set explicitly with '--file', there are three files where | 
| Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 175 | 'git-config' will search for configuration options: | 
| Junio C Hamano | 6fddfe5 | 2007-05-31 07:38:19 | [diff] [blame] | 176 |  | 
| Junio C Hamano | 58155b4 | 2007-09-15 07:46:14 | [diff] [blame] | 177 | $GIT_DIR/config:: | 
| Junio C Hamano | 6fddfe5 | 2007-05-31 07:38:19 | [diff] [blame] | 178 | Repository specific configuration file. (The filename is | 
|  | 179 | of course relative to the repository root, not the working | 
|  | 180 | directory.) | 
|  | 181 |  | 
|  | 182 | ~/.gitconfig:: | 
|  | 183 | User-specific configuration file. Also called "global" | 
|  | 184 | configuration file. | 
|  | 185 |  | 
|  | 186 | $(prefix)/etc/gitconfig:: | 
|  | 187 | System-wide configuration file. | 
|  | 188 |  | 
|  | 189 | If no further options are given, all reading options will read all of these | 
|  | 190 | files that are available. If the global or the system-wide configuration | 
|  | 191 | file are not available they will be ignored. If the repository configuration | 
| Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 192 | file is not available or readable, 'git-config' will exit with a non-zero | 
| Junio C Hamano | 6fddfe5 | 2007-05-31 07:38:19 | [diff] [blame] | 193 | error code. However, in neither case will an error message be issued. | 
|  | 194 |  | 
|  | 195 | All writing options will per default write to the repository specific | 
|  | 196 | configuration file. Note that this also affects options like '--replace-all' | 
| Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 197 | and '--unset'. *'git-config' will only ever change one file at a time*. | 
| Junio C Hamano | 6fddfe5 | 2007-05-31 07:38:19 | [diff] [blame] | 198 |  | 
|  | 199 | You can override these rules either by command line options or by environment | 
|  | 200 | variables. The '--global' and the '--system' options will limit the file used | 
|  | 201 | to the global or system-wide file respectively. The GIT_CONFIG environment | 
|  | 202 | variable has a similar effect, but you can specify any filename you want. | 
|  | 203 |  | 
| Junio C Hamano | 6fddfe5 | 2007-05-31 07:38:19 | [diff] [blame] | 204 |  | 
| Junio C Hamano | 7ad22dc | 2007-01-29 02:55:48 | [diff] [blame] | 205 | ENVIRONMENT | 
|  | 206 | ----------- | 
|  | 207 |  | 
|  | 208 | GIT_CONFIG:: | 
|  | 209 | Take the configuration from the given file instead of .git/config. | 
| Junio C Hamano | 6fddfe5 | 2007-05-31 07:38:19 | [diff] [blame] | 210 | Using the "--global" option forces this to ~/.gitconfig. Using the | 
|  | 211 | "--system" option forces this to $(prefix)/etc/gitconfig. | 
| Junio C Hamano | 7ad22dc | 2007-01-29 02:55:48 | [diff] [blame] | 212 |  | 
| Junio C Hamano | 6fddfe5 | 2007-05-31 07:38:19 | [diff] [blame] | 213 | See also <<FILES>>. | 
| Junio C Hamano | 7ad22dc | 2007-01-29 02:55:48 | [diff] [blame] | 214 |  | 
|  | 215 |  | 
| Junio C Hamano | 6fddfe5 | 2007-05-31 07:38:19 | [diff] [blame] | 216 | [[EXAMPLES]] | 
|  | 217 | EXAMPLES | 
|  | 218 | -------- | 
| Junio C Hamano | 7ad22dc | 2007-01-29 02:55:48 | [diff] [blame] | 219 |  | 
|  | 220 | Given a .git/config like this: | 
|  | 221 |  | 
|  | 222 | # | 
|  | 223 | # This is the config file, and | 
|  | 224 | # a '#' or ';' character indicates | 
|  | 225 | # a comment | 
|  | 226 | # | 
|  | 227 |  | 
|  | 228 | ; core variables | 
|  | 229 | [core] | 
|  | 230 | ; Don't trust file modes | 
|  | 231 | filemode = false | 
|  | 232 |  | 
|  | 233 | ; Our diff algorithm | 
|  | 234 | [diff] | 
| Junio C Hamano | 85c7157 | 2008-07-28 00:03:31 | [diff] [blame] | 235 | external = /usr/local/bin/diff-wrapper | 
| Junio C Hamano | 7ad22dc | 2007-01-29 02:55:48 | [diff] [blame] | 236 | renames = true | 
|  | 237 |  | 
|  | 238 | ; Proxy settings | 
|  | 239 | [core] | 
| Junio C Hamano | 7ad22dc | 2007-01-29 02:55:48 | [diff] [blame] | 240 | gitproxy="proxy-command" for kernel.org | 
| Junio C Hamano | 7ad22dc | 2007-01-29 02:55:48 | [diff] [blame] | 241 | gitproxy=default-proxy ; for all the rest | 
|  | 242 |  | 
|  | 243 | you can set the filemode to true with | 
|  | 244 |  | 
|  | 245 | ------------ | 
|  | 246 | % git config core.filemode true | 
|  | 247 | ------------ | 
|  | 248 |  | 
|  | 249 | The hypothetical proxy command entries actually have a postfix to discern | 
|  | 250 | what URL they apply to. Here is how to change the entry for kernel.org | 
|  | 251 | to "ssh". | 
|  | 252 |  | 
|  | 253 | ------------ | 
|  | 254 | % git config core.gitproxy '"ssh" for kernel.org' 'for kernel.org$' | 
|  | 255 | ------------ | 
|  | 256 |  | 
|  | 257 | This makes sure that only the key/value pair for kernel.org is replaced. | 
|  | 258 |  | 
|  | 259 | To delete the entry for renames, do | 
|  | 260 |  | 
|  | 261 | ------------ | 
|  | 262 | % git config --unset diff.renames | 
|  | 263 | ------------ | 
|  | 264 |  | 
|  | 265 | If you want to delete an entry for a multivar (like core.gitproxy above), | 
|  | 266 | you have to provide a regex matching the value of exactly one line. | 
|  | 267 |  | 
|  | 268 | To query the value for a given key, do | 
|  | 269 |  | 
|  | 270 | ------------ | 
|  | 271 | % git config --get core.filemode | 
|  | 272 | ------------ | 
|  | 273 |  | 
|  | 274 | or | 
|  | 275 |  | 
|  | 276 | ------------ | 
|  | 277 | % git config core.filemode | 
|  | 278 | ------------ | 
|  | 279 |  | 
|  | 280 | or, to query a multivar: | 
|  | 281 |  | 
|  | 282 | ------------ | 
|  | 283 | % git config --get core.gitproxy "for kernel.org$" | 
|  | 284 | ------------ | 
|  | 285 |  | 
|  | 286 | If you want to know all the values for a multivar, do: | 
|  | 287 |  | 
|  | 288 | ------------ | 
|  | 289 | % git config --get-all core.gitproxy | 
|  | 290 | ------------ | 
|  | 291 |  | 
| Junio C Hamano | ffb4b68 | 2008-12-13 07:35:22 | [diff] [blame] | 292 | If you like to live dangerously, you can replace *all* core.gitproxy by a | 
| Junio C Hamano | 7ad22dc | 2007-01-29 02:55:48 | [diff] [blame] | 293 | new one with | 
|  | 294 |  | 
|  | 295 | ------------ | 
|  | 296 | % git config --replace-all core.gitproxy ssh | 
|  | 297 | ------------ | 
|  | 298 |  | 
|  | 299 | However, if you really only want to replace the line for the default proxy, | 
|  | 300 | i.e. the one without a "for ..." postfix, do something like this: | 
|  | 301 |  | 
|  | 302 | ------------ | 
|  | 303 | % git config core.gitproxy ssh '! for ' | 
|  | 304 | ------------ | 
|  | 305 |  | 
|  | 306 | To actually match only values with an exclamation mark, you have to | 
|  | 307 |  | 
|  | 308 | ------------ | 
|  | 309 | % git config section.key value '[!]' | 
|  | 310 | ------------ | 
|  | 311 |  | 
|  | 312 | To add a new proxy, without altering any of the existing ones, use | 
|  | 313 |  | 
|  | 314 | ------------ | 
| Junio C Hamano | c71a873 | 2007-08-04 00:27:26 | [diff] [blame] | 315 | % git config core.gitproxy '"proxy-command" for example.com' | 
| Junio C Hamano | 7ad22dc | 2007-01-29 02:55:48 | [diff] [blame] | 316 | ------------ | 
|  | 317 |  | 
| Junio C Hamano | 0c99970 | 2007-12-03 09:57:55 | [diff] [blame] | 318 | An example to use customized color from the configuration in your | 
|  | 319 | script: | 
|  | 320 |  | 
|  | 321 | ------------ | 
|  | 322 | #!/bin/sh | 
|  | 323 | WS=$(git config --get-color color.diff.whitespace "blue reverse") | 
|  | 324 | RESET=$(git config --get-color "" "reset") | 
|  | 325 | echo "${WS}your whitespace color or blue reverse${RESET}" | 
|  | 326 | ------------ | 
| Junio C Hamano | 7ad22dc | 2007-01-29 02:55:48 | [diff] [blame] | 327 |  | 
|  | 328 | include::config.txt[] | 
|  | 329 |  | 
|  | 330 |  | 
|  | 331 | Author | 
|  | 332 | ------ | 
|  | 333 | Written by Johannes Schindelin <Johannes.Schindelin@gmx.de> | 
|  | 334 |  | 
|  | 335 | Documentation | 
|  | 336 | -------------- | 
|  | 337 | Documentation by Johannes Schindelin, Petr Baudis and the git-list <git@vger.kernel.org>. | 
|  | 338 |  | 
|  | 339 | GIT | 
|  | 340 | --- | 
| Junio C Hamano | f7c042d | 2008-06-06 22:50:53 | [diff] [blame] | 341 | Part of the linkgit:git[1] suite |