]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-repo-config.txt
Merge branch 'yl/build'
[thirdparty/git.git] / Documentation / git-repo-config.txt
CommitLineData
ee72aeaf
JS
1git-repo-config(1)
2==================
2d2465c0
JS
3
4NAME
5----
7bd7f280 6git-repo-config - Get and set options in .git/config
2d2465c0
JS
7
8
9SYNOPSIS
10--------
c7569b1e 11[verse]
7162dff3
PB
12'git-repo-config' [type] name [value [value_regex]]
13'git-repo-config' [type] --replace-all name [value [value_regex]]
14'git-repo-config' [type] --get name [value_regex]
15'git-repo-config' [type] --get-all name [value_regex]
16'git-repo-config' [type] --unset name [value_regex]
17'git-repo-config' [type] --unset-all name [value_regex]
de791f15 18'git-repo-config' -l | --list
2d2465c0
JS
19
20DESCRIPTION
21-----------
4ddba79d
JS
22You can query/set/replace/unset options with this command. The name is
23actually the section and the key separated by a dot, and the value will be
24escaped.
2d2465c0 25
6fe31e2e
JH
26If you want to set/unset an option which can occur on multiple
27lines, a POSIX regexp `value_regex` needs to be given. Only the
28existing values that match the regexp are updated or unset. If
29you want to handle the lines that do *not* match the regex, just
30prepend a single exclamation mark in front (see EXAMPLES).
2d2465c0 31
7162dff3
PB
32The type specifier can be either '--int' or '--bool', which will make
33'git-repo-config' ensure that the variable(s) are of the given type and
34convert the value to the canonical form (simple decimal number for int,
35a "true" or "false" string for bool). If no type specifier is passed,
36no checks or transformations are performed on the value.
37
2b5f3ed3 38This command will fail if:
2d2465c0 39
2b5f3ed3
SE
40. The .git/config file is invalid,
41. Can not write to .git/config,
2d2465c0
JS
42. no section was provided,
43. the section or key is invalid,
44. you try to unset an option which does not exist, or
45. you try to unset/set an option for which multiple lines match.
46
47
48OPTIONS
49-------
50
4ddba79d 51--replace-all::
abda1ef5 52 Default behavior is to replace at most one line. This replaces
2fa9a0fb 53 all lines matching the key (and optionally the value_regex).
4ddba79d
JS
54
55--get::
56 Get the value for a given key (optionally filtered by a regex
57 matching the value).
58
59--get-all::
60 Like get, but does not fail if the number of values for the key
61 is not exactly one.
62
2fa9a0fb
JS
63--get-regexp::
64 Like --get-all, but interprets the name as a regular expression.
65
2d2465c0 66--unset::
4ddba79d
JS
67 Remove the line matching the key from .git/config.
68
69--unset-all::
70 Remove all matching lines from .git/config.
2d2465c0 71
de791f15
PB
72-l, --list::
73 List all variables set in .git/config.
74
2d2465c0
JS
75
76EXAMPLE
77-------
78
79Given a .git/config like this:
80
81 #
82 # This is the config file, and
83 # a '#' or ';' character indicates
84 # a comment
85 #
86
87 ; core variables
88 [core]
89 ; Don't trust file modes
90 filemode = false
91
92 ; Our diff algorithm
93 [diff]
94 external = "/usr/local/bin/gnu-diff -u"
95 renames = true
96
97 ; Proxy settings
1ab661dd
PB
98 [core]
99 gitproxy="ssh" for "ssh://kernel.org/"
100 gitproxy="proxy-command" for kernel.org
101 gitproxy="myprotocol-command" for "my://"
102 gitproxy=default-proxy ; for all the rest
2d2465c0
JS
103
104you can set the filemode to true with
105
106------------
ee72aeaf 107% git repo-config core.filemode true
2d2465c0
JS
108------------
109
110The hypothetic proxy command entries actually have a postfix to discern
111to what URL they apply. Here is how to change the entry for kernel.org
112to "ssh".
113
114------------
1ab661dd 115% git repo-config core.gitproxy '"ssh" for kernel.org' 'for kernel.org$'
2d2465c0
JS
116------------
117
118This makes sure that only the key/value pair for kernel.org is replaced.
119
120To delete the entry for renames, do
121
122------------
ee72aeaf 123% git repo-config --unset diff.renames
2d2465c0
JS
124------------
125
1ab661dd 126If you want to delete an entry for a multivar (like core.gitproxy above),
4ddba79d
JS
127you have to provide a regex matching the value of exactly one line.
128
129To query the value for a given key, do
2d2465c0
JS
130
131------------
ee72aeaf 132% git repo-config --get core.filemode
2d2465c0
JS
133------------
134
4ddba79d
JS
135or
136
137------------
ee72aeaf 138% git repo-config core.filemode
4ddba79d
JS
139------------
140
141or, to query a multivar:
142
143------------
1ab661dd 144% git repo-config --get core.gitproxy "for kernel.org$"
4ddba79d
JS
145------------
146
147If you want to know all the values for a multivar, do:
148
149------------
1ab661dd 150% git repo-config --get-all core.gitproxy
4ddba79d
JS
151------------
152
1ab661dd 153If you like to live dangerous, you can replace *all* core.gitproxy by a
4ddba79d
JS
154new one with
155
156------------
1ab661dd 157% git repo-config --replace-all core.gitproxy ssh
4ddba79d 158------------
2d2465c0 159
f98d863d
JS
160However, if you really only want to replace the line for the default proxy,
161i.e. the one without a "for ..." postfix, do something like this:
162
163------------
1ab661dd 164% git repo-config core.gitproxy ssh '! for '
f98d863d
JS
165------------
166
167To actually match only values with an exclamation mark, you have to
168
169------------
ee72aeaf 170% git repo-config section.key value '[!]'
f98d863d
JS
171------------
172
2d2465c0 173
1ab661dd
PB
174include::config.txt[]
175
176
2d2465c0
JS
177Author
178------
179Written by Johannes Schindelin <Johannes.Schindelin@gmx.de>
180
181Documentation
182--------------
1ab661dd 183Documentation by Johannes Schindelin, Petr Baudis and the git-list <git@vger.kernel.org>.
2d2465c0
JS
184
185GIT
186---
187Part of the gitlink:git[7] suite
188