blob: 18ddc78f42d69724cf5a04087a7dbd13c5ebf711 [file] [log] [blame]
Junio C Hamano7ad22dc2007-01-29 02:55:481git-config(1)
2=============
3
4NAME
5----
6git-config - Get and set repository or global options
7
8
9SYNOPSIS
10--------
11[verse]
Junio C Hamanoccb82522018-05-08 07:52:0912'git config' [<file-option>] [--type=<type>] [--show-origin] [-z|--null] name [value [value_regex]]
13'git config' [<file-option>] [--type=<type>] --add name value
14'git config' [<file-option>] [--type=<type>] --replace-all name value [value_regex]
15'git config' [<file-option>] [--type=<type>] [--show-origin] [-z|--null] --get name [value_regex]
16'git config' [<file-option>] [--type=<type>] [--show-origin] [-z|--null] --get-all name [value_regex]
17'git config' [<file-option>] [--type=<type>] [--show-origin] [-z|--null] [--name-only] --get-regexp name_regex [value_regex]
18'git config' [<file-option>] [--type=<type>] [-z|--null] --get-urlmatch name URL
Junio C Hamanofce7c7e2008-07-02 03:06:3819'git config' [<file-option>] --unset name [value_regex]
20'git config' [<file-option>] --unset-all name [value_regex]
21'git config' [<file-option>] --rename-section old_name new_name
22'git config' [<file-option>] --remove-section name
Junio C Hamano76df4f72016-02-26 22:13:1023'git config' [<file-option>] [--show-origin] [-z|--null] [--name-only] -l | --list
Junio C Hamanofce7c7e2008-07-02 03:06:3824'git config' [<file-option>] --get-color name [default]
25'git config' [<file-option>] --get-colorbool name [stdout-is-tty]
Junio C Hamano0a235222009-03-06 08:21:0926'git config' [<file-option>] -e | --edit
Junio C Hamano7ad22dc2007-01-29 02:55:4827
28DESCRIPTION
29-----------
30You can query/set/replace/unset options with this command. The name is
31actually the section and the key separated by a dot, and the value will be
32escaped.
33
Junio C Hamano92d80372016-07-13 22:00:0534Multiple lines can be added to an option by using the `--add` option.
Junio C Hamano7ad22dc2007-01-29 02:55:4835If you want to update or unset an option which can occur on multiple
36lines, a POSIX regexp `value_regex` needs to be given. Only the
37existing values that match the regexp are updated or unset. If
38you want to handle the lines that do *not* match the regex, just
Junio C Hamano6fddfe52007-05-31 07:38:1939prepend a single exclamation mark in front (see also <<EXAMPLES>>).
Junio C Hamano7ad22dc2007-01-29 02:55:4840
Junio C Hamanoccb82522018-05-08 07:52:0941The `--type=<type>` option instructs 'git config' to ensure that incoming and
42outgoing values are canonicalize-able under the given <type>. If no
43`--type=<type>` is given, no canonicalization will be performed. Callers may
44unset an existing `--type` specifier with `--no-type`.
Junio C Hamano7ad22dc2007-01-29 02:55:4845
Junio C Hamanobcdb12e2012-05-10 18:45:1546When reading, the values are read from the system, global and
47repository local configuration files by default, and options
Junio C Hamano92d80372016-07-13 22:00:0548`--system`, `--global`, `--local` and `--file <filename>` can be
Junio C Hamanobcdb12e2012-05-10 18:45:1549used to tell the command to read from only that location (see <<FILES>>).
50
51When writing, the new value is written to the repository local
Junio C Hamano92d80372016-07-13 22:00:0552configuration file by default, and options `--system`, `--global`,
53`--file <filename>` can be used to tell the command to write to
54that location (you can say `--local` but that is the default).
Junio C Hamano0ddc94d2007-08-01 08:42:3955
Junio C Hamanof3353932012-09-04 23:16:5156This command will fail with non-zero status upon error. Some exit
57codes are:
Junio C Hamano7ad22dc2007-01-29 02:55:4858
Junio C Hamanoccdabca2016-05-06 22:27:0959- The section or key is invalid (ret=1),
Junio C Hamano4ba4a782016-04-03 19:11:3260- no section or name was provided (ret=2),
Junio C Hamanoccdabca2016-05-06 22:27:0961- the config file is invalid (ret=3),
62- the config file cannot be written (ret=4),
Junio C Hamano4ba4a782016-04-03 19:11:3263- you try to unset an option which does not exist (ret=5),
64- you try to unset/set an option for which multiple lines match (ret=5), or
65- you try to use an invalid regexp (ret=6).
Junio C Hamano7ad22dc2007-01-29 02:55:4866
Junio C Hamano2a294cd2011-05-23 23:06:3167On success, the command returns the exit code 0.
Junio C Hamano7ad22dc2007-01-29 02:55:4868
69OPTIONS
70-------
71
72--replace-all::
73Default behavior is to replace at most one line. This replaces
74all lines matching the key (and optionally the value_regex).
75
76--add::
77Adds a new line to the option without altering any existing
Junio C Hamano89bdb3b2009-05-10 06:48:1478values. This is the same as providing '^$' as the value_regex
79in `--replace-all`.
Junio C Hamano7ad22dc2007-01-29 02:55:4880
81--get::
82Get the value for a given key (optionally filtered by a regex
83matching the value). Returns error code 1 if the key was not
Junio C Hamano68e17742013-07-04 00:44:2684found and the last value if multiple key values were found.
Junio C Hamano7ad22dc2007-01-29 02:55:4885
86--get-all::
Junio C Hamano4ba4a782016-04-03 19:11:3287Like get, but returns all values for a multi-valued key.
Junio C Hamano7ad22dc2007-01-29 02:55:4888
89--get-regexp::
Junio C Hamano81d540a2012-03-02 19:52:4790Like --get-all, but interprets the name as a regular expression and
91writes out the key names. Regular expression matching is currently
92case-sensitive and done against a canonicalized version of the key
93in which section and variable names are lowercased, but subsection
94names are not.
Junio C Hamano7ad22dc2007-01-29 02:55:4895
Junio C Hamano8eac2682013-09-09 22:35:2096--get-urlmatch name URL::
97When given a two-part name section.key, the value for
98section.<url>.key whose <url> part matches the best to the
99given URL is returned (if no such key exists, the value for
100section.key is used as a fallback). When given just the
101section as name, do so for all the keys in the section and
Junio C Hamano4ba4a782016-04-03 19:11:32102list them. Returns error code 1 if no value is found.
Junio C Hamano8eac2682013-09-09 22:35:20103
Junio C Hamano7ad22dc2007-01-29 02:55:48104--global::
Junio C Hamano4b500fa2013-07-31 23:11:16105For writing options: write to global `~/.gitconfig` file
106rather than the repository `.git/config`, write to
107`$XDG_CONFIG_HOME/git/config` file if this file exists and the
108`~/.gitconfig` file doesn't.
Junio C Hamano6fddfe52007-05-31 07:38:19109+
Junio C Hamano4b500fa2013-07-31 23:11:16110For reading options: read only from global `~/.gitconfig` and from
111`$XDG_CONFIG_HOME/git/config` rather than from all available files.
Junio C Hamano6fddfe52007-05-31 07:38:19112+
113See also <<FILES>>.
Junio C Hamano7ad22dc2007-01-29 02:55:48114
Junio C Hamano81c711d2007-04-20 07:20:14115--system::
Junio C Hamano4b500fa2013-07-31 23:11:16116For writing options: write to system-wide
117`$(prefix)/etc/gitconfig` rather than the repository
118`.git/config`.
Junio C Hamano6fddfe52007-05-31 07:38:19119+
Junio C Hamano4b500fa2013-07-31 23:11:16120For reading options: read only from system-wide `$(prefix)/etc/gitconfig`
Junio C Hamano6fddfe52007-05-31 07:38:19121rather than from all available files.
122+
123See also <<FILES>>.
Junio C Hamano81c711d2007-04-20 07:20:14124
Junio C Hamano8ab94942013-06-24 21:55:30125--local::
Junio C Hamano4b500fa2013-07-31 23:11:16126For writing options: write to the repository `.git/config` file.
Junio C Hamano8ab94942013-06-24 21:55:30127This is the default behavior.
128+
Junio C Hamano4b500fa2013-07-31 23:11:16129For reading options: read only from the repository `.git/config` rather than
Junio C Hamano8ab94942013-06-24 21:55:30130from all available files.
131+
132See also <<FILES>>.
133
Junio C Hamanoeb415992008-06-08 22:49:47134-f config-file::
135--file config-file::
Junio C Hamano0ddc94d2007-08-01 08:42:39136Use the given config file instead of the one specified by GIT_CONFIG.
137
Junio C Hamano58f587a2013-07-22 19:20:59138--blob blob::
Junio C Hamano92d80372016-07-13 22:00:05139Similar to `--file` but use the given blob instead of a file. E.g.
Junio C Hamano58f587a2013-07-22 19:20:59140you can use 'master:.gitmodules' to read values from the file
141'.gitmodules' in the master branch. See "SPECIFYING REVISIONS"
142section in linkgit:gitrevisions[7] for a more complete list of
143ways to spell blob names.
144
Junio C Hamanod15328a2007-03-09 09:06:40145--remove-section::
146Remove the given section from the configuration file.
147
148--rename-section::
149Rename the given section to a new name.
150
Junio C Hamano7ad22dc2007-01-29 02:55:48151--unset::
152Remove the line matching the key from config file.
153
154--unset-all::
Junio C Hamano10557772007-03-15 07:12:30155Remove all lines matching the key from config file.
Junio C Hamano7ad22dc2007-01-29 02:55:48156
Junio C Hamanoeb415992008-06-08 22:49:47157-l::
158--list::
Junio C Hamano3891e252015-08-31 23:06:13159List all variables set in config file, along with their values.
Junio C Hamano7ad22dc2007-01-29 02:55:48160
Junio C Hamanoccb82522018-05-08 07:52:09161--type <type>::
162 'git config' will ensure that any input or output is valid under the given
163 type constraint(s), and will canonicalize outgoing values in `<type>`'s
164 canonical form.
165+
166Valid `<type>`'s include:
167+
168- 'bool': canonicalize values as either "true" or "false".
169- 'int': canonicalize values as simple decimal numbers. An optional suffix of
170 'k', 'm', or 'g' will cause the value to be multiplied by 1024, 1048576, or
171 1073741824 upon input.
172- 'bool-or-int': canonicalize according to either 'bool' or 'int', as described
173 above.
174- 'path': canonicalize by adding a leading `~` to the value of `$HOME` and
175 `~user` to the home directory for the specified user. This specifier has no
176 effect when setting the value (but you can use `git config section.variable
177 ~/` from the command line to let your shell do the expansion.)
178- 'expiry-date': canonicalize by converting from a fixed or relative date-string
179 to a timestamp. This specifier has no effect when setting the value.
180- 'color': When getting a value, canonicalize by converting to an ANSI color
181 escape sequence. When setting a value, a sanity-check is performed to ensure
182 that the given value is canonicalize-able as an ANSI color, but it is written
183 as-is.
184+
185
Junio C Hamano7ad22dc2007-01-29 02:55:48186--bool::
Junio C Hamano7ad22dc2007-01-29 02:55:48187--int::
Junio C Hamano792c5a92009-03-08 08:45:13188--bool-or-int::
Junio C Hamanob141a922010-01-10 19:55:14189--path::
Junio C Hamano912712b2017-12-06 18:04:01190--expiry-date::
Junio C Hamanoccb82522018-05-08 07:52:09191 Historical options for selecting a type specifier. Prefer instead `--type`,
192 (see: above).
193
194--no-type::
195 Un-sets the previously set type specifier (if one was previously set). This
196 option requests that 'git config' not canonicalize the retrieved variable.
197 `--no-type` has no effect without `--type=<type>` or `--<type>`.
Junio C Hamano912712b2017-12-06 18:04:01198
Junio C Hamanoeb415992008-06-08 22:49:47199-z::
200--null::
Junio C Hamanoddc5ad42007-06-27 07:14:52201For all options that output values and/or keys, always
Junio C Hamano1f511962008-01-30 08:28:52202end values with the null character (instead of a
Junio C Hamanoddc5ad42007-06-27 07:14:52203newline). Use newline instead as a delimiter between
204key and value. This allows for secure parsing of the
205output without getting confused e.g. by values that
206contain line breaks.
207
Junio C Hamano3891e252015-08-31 23:06:13208--name-only::
209Output only the names of config variables for `--list` or
210`--get-regexp`.
211
Junio C Hamano76df4f72016-02-26 22:13:10212--show-origin::
213Augment the output of all queried config options with the
214origin type (file, standard input, blob, command line) and
215the actual origin (config file path, ref, or blob id if
216applicable).
217
Junio C Hamano00b8b632007-12-07 09:50:49218--get-colorbool name [stdout-is-tty]::
219
220Find the color setting for `name` (e.g. `color.diff`) and output
221"true" or "false". `stdout-is-tty` should be either "true" or
222"false", and is taken into account when configuration says
223"auto". If `stdout-is-tty` is missing, then checks the standard
224output of the command itself, and exits with status 0 if color
225is to be used, or exits with status 1 otherwise.
Junio C Hamanoe3ddb5b2008-04-21 00:48:07226When the color setting for `name` is undefined, the command uses
227`color.ui` as fallback.
Junio C Hamano00b8b632007-12-07 09:50:49228
Junio C Hamano89bdb3b2009-05-10 06:48:14229--get-color name [default]::
Junio C Hamano0c999702007-12-03 09:57:55230
231Find the color configured for `name` (e.g. `color.diff.new`) and
232output it as the ANSI color escape sequence to the standard
233output. The optional `default` parameter is used instead, if
234there is no color configured for `name`.
Junio C Hamanoccb82522018-05-08 07:52:09235+
236`--type=color [--default=<default>]` is preferred over `--get-color`.
Junio C Hamano7ad22dc2007-01-29 02:55:48237
Junio C Hamano0a235222009-03-06 08:21:09238-e::
239--edit::
240Opens an editor to modify the specified config file; either
Junio C Hamano92d80372016-07-13 22:00:05241`--system`, `--global`, or repository (default).
Junio C Hamano0a235222009-03-06 08:21:09242
Junio C Hamano3d1b5a12013-05-17 23:34:02243--[no-]includes::
Junio C Hamanoe0238c22012-02-23 22:45:50244Respect `include.*` directives in config files when looking up
Junio C Hamanob29ef022016-02-22 22:06:01245values. Defaults to `off` when a specific file is given (e.g.,
246using `--file`, `--global`, etc) and `on` when searching all
247config files.
Junio C Hamanoe0238c22012-02-23 22:45:50248
Junio C Hamanoccb82522018-05-08 07:52:09249--default <value>::
250 When using `--get`, and the requested variable is not found, behave as if
251 <value> were the value assigned to the that variable.
252
Junio C Hamano81000162018-03-21 19:54:50253CONFIGURATION
254-------------
255`pager.config` is only respected when listing configuration, i.e., when
256using `--list` or any of the `--get-*` which may return multiple results.
257The default is to use a pager.
258
Junio C Hamano6fddfe52007-05-31 07:38:19259[[FILES]]
260FILES
261-----
262
Junio C Hamano92d80372016-07-13 22:00:05263If not set explicitly with `--file`, there are four files where
Junio C Hamano1aa40d22010-01-21 17:46:43264'git config' will search for configuration options:
Junio C Hamano6fddfe52007-05-31 07:38:19265
Junio C Hamano8401f142013-07-12 22:47:46266$(prefix)/etc/gitconfig::
267System-wide configuration file.
Junio C Hamano6fddfe52007-05-31 07:38:19268
Junio C Hamano8edb4c72012-07-09 20:33:55269$XDG_CONFIG_HOME/git/config::
270Second user-specific configuration file. If $XDG_CONFIG_HOME is not set
Junio C Hamano4b500fa2013-07-31 23:11:16271or empty, `$HOME/.config/git/config` will be used. Any single-valued
Junio C Hamano8edb4c72012-07-09 20:33:55272variable set in this file will be overwritten by whatever is in
Junio C Hamano4b500fa2013-07-31 23:11:16273`~/.gitconfig`. It is a good idea not to create this file if
Junio C Hamano8edb4c72012-07-09 20:33:55274you sometimes use older versions of Git, as support for this
275file was added fairly recently.
276
Junio C Hamano8401f142013-07-12 22:47:46277~/.gitconfig::
278User-specific configuration file. Also called "global"
279configuration file.
280
281$GIT_DIR/config::
282Repository specific configuration file.
Junio C Hamano6fddfe52007-05-31 07:38:19283
284If no further options are given, all reading options will read all of these
285files that are available. If the global or the system-wide configuration
286file are not available they will be ignored. If the repository configuration
Junio C Hamano1aa40d22010-01-21 17:46:43287file is not available or readable, 'git config' will exit with a non-zero
Junio C Hamano6fddfe52007-05-31 07:38:19288error code. However, in neither case will an error message be issued.
289
Junio C Hamano8401f142013-07-12 22:47:46290The files are read in the order given above, with last value found taking
291precedence over values read earlier. When multiple values are taken then all
292values of a key from all files will be used.
293
Junio C Hamanoe7808d72016-08-26 21:48:01294You may override individual configuration parameters when running any git
295command by using the `-c` option. See linkgit:git[1] for details.
296
Junio C Hamano6fddfe52007-05-31 07:38:19297All writing options will per default write to the repository specific
Junio C Hamano92d80372016-07-13 22:00:05298configuration file. Note that this also affects options like `--replace-all`
299and `--unset`. *'git config' will only ever change one file at a time*.
Junio C Hamano6fddfe52007-05-31 07:38:19300
Junio C Hamanoe1aeb5e2014-06-06 19:16:29301You can override these rules either by command-line options or by environment
Junio C Hamano92d80372016-07-13 22:00:05302variables. The `--global` and the `--system` options will limit the file used
Junio C Hamano042f2142016-06-27 18:05:05303to the global or system-wide file respectively. The `GIT_CONFIG` environment
Junio C Hamano6fddfe52007-05-31 07:38:19304variable has a similar effect, but you can specify any filename you want.
305
Junio C Hamano6fddfe52007-05-31 07:38:19306
Junio C Hamano7ad22dc2007-01-29 02:55:48307ENVIRONMENT
308-----------
309
310GIT_CONFIG::
311Take the configuration from the given file instead of .git/config.
Junio C Hamano6fddfe52007-05-31 07:38:19312Using the "--global" option forces this to ~/.gitconfig. Using the
313"--system" option forces this to $(prefix)/etc/gitconfig.
Junio C Hamano7ad22dc2007-01-29 02:55:48314
Junio C Hamanoeec745b2013-01-07 08:08:20315GIT_CONFIG_NOSYSTEM::
316Whether to skip reading settings from the system-wide
317$(prefix)/etc/gitconfig file. See linkgit:git[1] for details.
318
Junio C Hamano6fddfe52007-05-31 07:38:19319See also <<FILES>>.
Junio C Hamano7ad22dc2007-01-29 02:55:48320
321
Junio C Hamano6fddfe52007-05-31 07:38:19322[[EXAMPLES]]
323EXAMPLES
324--------
Junio C Hamano7ad22dc2007-01-29 02:55:48325
326Given a .git/config like this:
327
328#
329# This is the config file, and
330# a '#' or ';' character indicates
331# a comment
332#
333
334; core variables
335[core]
336; Don't trust file modes
337filemode = false
338
339; Our diff algorithm
340[diff]
Junio C Hamano85c71572008-07-28 00:03:31341external = /usr/local/bin/diff-wrapper
Junio C Hamano7ad22dc2007-01-29 02:55:48342renames = true
343
344; Proxy settings
345[core]
Junio C Hamano53850262012-08-29 23:03:49346gitproxy=proxy-command for kernel.org
Junio C Hamano7ad22dc2007-01-29 02:55:48347gitproxy=default-proxy ; for all the rest
348
Junio C Hamano8eac2682013-09-09 22:35:20349; HTTP
350[http]
351sslVerify
352[http "https://weak.example.com"]
353sslVerify = false
354cookieFile = /tmp/cookie.txt
355
Junio C Hamano7ad22dc2007-01-29 02:55:48356you can set the filemode to true with
357
358------------
359% git config core.filemode true
360------------
361
362The hypothetical proxy command entries actually have a postfix to discern
363what URL they apply to. Here is how to change the entry for kernel.org
364to "ssh".
365
366------------
367% git config core.gitproxy '"ssh" for kernel.org' 'for kernel.org$'
368------------
369
370This makes sure that only the key/value pair for kernel.org is replaced.
371
372To delete the entry for renames, do
373
374------------
375% git config --unset diff.renames
376------------
377
378If you want to delete an entry for a multivar (like core.gitproxy above),
379you have to provide a regex matching the value of exactly one line.
380
381To query the value for a given key, do
382
383------------
384% git config --get core.filemode
385------------
386
387or
388
389------------
390% git config core.filemode
391------------
392
393or, to query a multivar:
394
395------------
396% git config --get core.gitproxy "for kernel.org$"
397------------
398
399If you want to know all the values for a multivar, do:
400
401------------
402% git config --get-all core.gitproxy
403------------
404
Junio C Hamanoffb4b682008-12-13 07:35:22405If you like to live dangerously, you can replace *all* core.gitproxy by a
Junio C Hamano7ad22dc2007-01-29 02:55:48406new one with
407
408------------
409% git config --replace-all core.gitproxy ssh
410------------
411
412However, if you really only want to replace the line for the default proxy,
413i.e. the one without a "for ..." postfix, do something like this:
414
415------------
416% git config core.gitproxy ssh '! for '
417------------
418
419To actually match only values with an exclamation mark, you have to
420
421------------
422% git config section.key value '[!]'
423------------
424
425To add a new proxy, without altering any of the existing ones, use
426
427------------
Junio C Hamano53850262012-08-29 23:03:49428% git config --add core.gitproxy '"proxy-command" for example.com'
Junio C Hamano7ad22dc2007-01-29 02:55:48429------------
430
Junio C Hamano0c999702007-12-03 09:57:55431An example to use customized color from the configuration in your
432script:
433
434------------
435#!/bin/sh
436WS=$(git config --get-color color.diff.whitespace "blue reverse")
437RESET=$(git config --get-color "" "reset")
438echo "${WS}your whitespace color or blue reverse${RESET}"
439------------
Junio C Hamano7ad22dc2007-01-29 02:55:48440
Junio C Hamano8eac2682013-09-09 22:35:20441For URLs in `https://weak.example.com`, `http.sslVerify` is set to
442false, while it is set to `true` for all others:
443
444------------
445% git config --bool --get-urlmatch http.sslverify https://good.example.com
446true
447% git config --bool --get-urlmatch http.sslverify https://weak.example.com
448false
449% git config --get-urlmatch http https://weak.example.com
Junio C Hamano322c6242015-03-23 21:32:46450http.cookieFile /tmp/cookie.txt
Junio C Hamano8eac2682013-09-09 22:35:20451http.sslverify false
452------------
453
Junio C Hamano7ad22dc2007-01-29 02:55:48454include::config.txt[]
455
Junio C Hamano7ad22dc2007-01-29 02:55:48456GIT
457---
Junio C Hamanof7c042d2008-06-06 22:50:53458Part of the linkgit:git[1] suite