|
| 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] |
| 12 | +'git-config' [--global] [type] name [value [value_regex]] |
| 13 | +'git-config' [--global] [type] --add name value |
| 14 | +'git-config' [--global] [type] --replace-all name [value [value_regex]] |
| 15 | +'git-config' [--global] [type] --get name [value_regex] |
| 16 | +'git-config' [--global] [type] --get-all name [value_regex] |
| 17 | +'git-config' [--global] [type] --unset name [value_regex] |
| 18 | +'git-config' [--global] [type] --unset-all name [value_regex] |
| 19 | +'git-config' [--global] -l | --list |
| 20 | + |
| 21 | +DESCRIPTION |
| 22 | +----------- |
| 23 | +You can query/set/replace/unset options with this command. The name is |
| 24 | +actually the section and the key separated by a dot, and the value will be |
| 25 | +escaped. |
| 26 | + |
| 27 | +Multiple lines can be added to an option by using the '--add' option. |
| 28 | +If you want to update or unset an option which can occur on multiple |
| 29 | +lines, a POSIX regexp `value_regex` needs to be given. Only the |
| 30 | +existing values that match the regexp are updated or unset. If |
| 31 | +you want to handle the lines that do *not* match the regex, just |
| 32 | +prepend a single exclamation mark in front (see EXAMPLES). |
| 33 | + |
| 34 | +The type specifier can be either '--int' or '--bool', which will make |
| 35 | +'git-config' ensure that the variable(s) are of the given type and |
| 36 | +convert the value to the canonical form (simple decimal number for int, |
| 37 | +a "true" or "false" string for bool). If no type specifier is passed, |
| 38 | +no checks or transformations are performed on the value. |
| 39 | + |
| 40 | +This command will fail if: |
| 41 | + |
| 42 | +. The .git/config file is invalid, |
| 43 | +. Can not write to .git/config, |
| 44 | +. no section was provided, |
| 45 | +. the section or key is invalid, |
| 46 | +. you try to unset an option which does not exist, |
| 47 | +. you try to unset/set an option for which multiple lines match, or |
| 48 | +. you use --global option without $HOME being properly set. |
| 49 | + |
| 50 | + |
| 51 | +OPTIONS |
| 52 | +------- |
| 53 | + |
| 54 | +--replace-all:: |
| 55 | + Default behavior is to replace at most one line. This replaces |
| 56 | + all lines matching the key (and optionally the value_regex). |
| 57 | + |
| 58 | +--add:: |
| 59 | + Adds a new line to the option without altering any existing |
| 60 | + values. This is the same as providing '^$' as the value_regex. |
| 61 | + |
| 62 | +--get:: |
| 63 | + Get the value for a given key (optionally filtered by a regex |
| 64 | + matching the value). Returns error code 1 if the key was not |
| 65 | + found and error code 2 if multiple key values were found. |
| 66 | + |
| 67 | +--get-all:: |
| 68 | + Like get, but does not fail if the number of values for the key |
| 69 | + is not exactly one. |
| 70 | + |
| 71 | +--get-regexp:: |
| 72 | + Like --get-all, but interprets the name as a regular expression. |
| 73 | + |
| 74 | +--global:: |
| 75 | + Use global ~/.gitconfig file rather than the repository .git/config. |
| 76 | + |
| 77 | +--unset:: |
| 78 | + Remove the line matching the key from config file. |
| 79 | + |
| 80 | +--unset-all:: |
| 81 | + Remove all matching lines from config file. |
| 82 | + |
| 83 | +-l, --list:: |
| 84 | + List all variables set in config file. |
| 85 | + |
| 86 | +--bool:: |
| 87 | + git-config will ensure that the output is "true" or "false" |
| 88 | + |
| 89 | +--int:: |
| 90 | + git-config will ensure that the output is a simple |
| 91 | + decimal number. An optional value suffix of 'k', 'm', or 'g' |
| 92 | + in the config file will cause the value to be multiplied |
| 93 | + by 1024, 1048576, or 1073741824 prior to output. |
| 94 | + |
| 95 | + |
| 96 | +ENVIRONMENT |
| 97 | +----------- |
| 98 | + |
| 99 | +GIT_CONFIG:: |
| 100 | + Take the configuration from the given file instead of .git/config. |
| 101 | + Using the "--global" option forces this to ~/.gitconfig. |
| 102 | + |
| 103 | +GIT_CONFIG_LOCAL:: |
| 104 | + Currently the same as $GIT_CONFIG; when Git will support global |
| 105 | + configuration files, this will cause it to take the configuration |
| 106 | + from the global configuration file in addition to the given file. |
| 107 | + |
| 108 | + |
| 109 | +EXAMPLE |
| 110 | +------- |
| 111 | + |
| 112 | +Given a .git/config like this: |
| 113 | + |
| 114 | + # |
| 115 | + # This is the config file, and |
| 116 | + # a '#' or ';' character indicates |
| 117 | + # a comment |
| 118 | + # |
| 119 | + |
| 120 | + ; core variables |
| 121 | + [core] |
| 122 | + ; Don't trust file modes |
| 123 | + filemode = false |
| 124 | + |
| 125 | + ; Our diff algorithm |
| 126 | + [diff] |
| 127 | + external = "/usr/local/bin/gnu-diff -u" |
| 128 | + renames = true |
| 129 | + |
| 130 | + ; Proxy settings |
| 131 | + [core] |
| 132 | + gitproxy="ssh" for "ssh://kernel.org/" |
| 133 | + gitproxy="proxy-command" for kernel.org |
| 134 | + gitproxy="myprotocol-command" for "my://" |
| 135 | + gitproxy=default-proxy ; for all the rest |
| 136 | + |
| 137 | +you can set the filemode to true with |
| 138 | + |
| 139 | +------------ |
| 140 | +% git config core.filemode true |
| 141 | +------------ |
| 142 | + |
| 143 | +The hypothetical proxy command entries actually have a postfix to discern |
| 144 | +what URL they apply to. Here is how to change the entry for kernel.org |
| 145 | +to "ssh". |
| 146 | + |
| 147 | +------------ |
| 148 | +% git config core.gitproxy '"ssh" for kernel.org' 'for kernel.org$' |
| 149 | +------------ |
| 150 | + |
| 151 | +This makes sure that only the key/value pair for kernel.org is replaced. |
| 152 | + |
| 153 | +To delete the entry for renames, do |
| 154 | + |
| 155 | +------------ |
| 156 | +% git config --unset diff.renames |
| 157 | +------------ |
| 158 | + |
| 159 | +If you want to delete an entry for a multivar (like core.gitproxy above), |
| 160 | +you have to provide a regex matching the value of exactly one line. |
| 161 | + |
| 162 | +To query the value for a given key, do |
| 163 | + |
| 164 | +------------ |
| 165 | +% git config --get core.filemode |
| 166 | +------------ |
| 167 | + |
| 168 | +or |
| 169 | + |
| 170 | +------------ |
| 171 | +% git config core.filemode |
| 172 | +------------ |
| 173 | + |
| 174 | +or, to query a multivar: |
| 175 | + |
| 176 | +------------ |
| 177 | +% git config --get core.gitproxy "for kernel.org$" |
| 178 | +------------ |
| 179 | + |
| 180 | +If you want to know all the values for a multivar, do: |
| 181 | + |
| 182 | +------------ |
| 183 | +% git config --get-all core.gitproxy |
| 184 | +------------ |
| 185 | + |
| 186 | +If you like to live dangerous, you can replace *all* core.gitproxy by a |
| 187 | +new one with |
| 188 | + |
| 189 | +------------ |
| 190 | +% git config --replace-all core.gitproxy ssh |
| 191 | +------------ |
| 192 | + |
| 193 | +However, if you really only want to replace the line for the default proxy, |
| 194 | +i.e. the one without a "for ..." postfix, do something like this: |
| 195 | + |
| 196 | +------------ |
| 197 | +% git config core.gitproxy ssh '! for ' |
| 198 | +------------ |
| 199 | + |
| 200 | +To actually match only values with an exclamation mark, you have to |
| 201 | + |
| 202 | +------------ |
| 203 | +% git config section.key value '[!]' |
| 204 | +------------ |
| 205 | + |
| 206 | +To add a new proxy, without altering any of the existing ones, use |
| 207 | + |
| 208 | +------------ |
| 209 | +% git config core.gitproxy '"proxy" for example.com' |
| 210 | +------------ |
| 211 | + |
| 212 | + |
| 213 | +include::config.txt[] |
| 214 | + |
| 215 | + |
| 216 | +Author |
| 217 | +------ |
| 218 | +Written by Johannes Schindelin <Johannes.Schindelin@gmx.de> |
| 219 | + |
| 220 | +Documentation |
| 221 | +-------------- |
| 222 | +Documentation by Johannes Schindelin, Petr Baudis and the git-list <git@vger.kernel.org>. |
| 223 | + |
| 224 | +GIT |
| 225 | +--- |
| 226 | +Part of the gitlink:git[7] suite |
| 227 | + |
0 commit comments