Home Explore Blog CI



git

7th chunk of `Documentation/git-config.adoc`
a7198c596b96fd0f74693f71c40c253d4111774d7b739ef10000000100000f86
 useful for cases where you want to spawn multiple git commands
with a common configuration but cannot depend on a configuration file,
for example when writing scripts.

GIT_CONFIG::
	If no `--file` option is provided to `git config`, use the file
	given by `GIT_CONFIG` as if it were provided via `--file`. This
	variable has no effect on other Git commands, and is mostly for
	historical compatibility; there is generally no reason to use it
	instead of the `--file` option.

[[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

; HTTP
[http]
	sslVerify
[http "https://weak.example.com"]
	sslVerify = false
	cookieFile = /tmp/cookie.txt
------------

you can set the filemode to true with

------------
% git config set 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 set --value='for kernel.org$' core.gitproxy '"ssh" 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, to query a multivar:

------------
% git config get --value="for kernel.org$" core.gitproxy
------------

If you want to know all the values for a multivar, do:

------------
% git config get --all --show-names core.gitproxy
------------

If you like to live dangerously, you can replace *all* core.gitproxy by a
new one with

------------
% git config set --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 set --value='! for ' core.gitproxy ssh
------------

To actually match only values with an exclamation mark, you have to

------------
% git config set --value='[!]' section.key value
------------

To add a new proxy, without altering any of the existing ones, use

------------
% git config set --append 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 --type=color --default="blue reverse" color.diff.whitespace)
RESET=$(git config get --type=color --default="reset" "")
echo "${WS}your whitespace color or blue reverse${RESET}"
------------

For URLs in `https://weak.example.com`, `http.sslVerify` is set to
false, while it is set to `true` for all others:

------------
% git config get --type=bool --url=https://good.example.com http.sslverify
true
% git config get --type=bool --url=https://weak.example.com http.sslverify
false
% git config get --url=https://weak.example.com http
http.cookieFile /tmp/cookie.txt
http.sslverify false
------------

include::config.adoc[]

BUGS
----
When using the deprecated `[section.subsection]` syntax, changing a value
will result in adding a multi-line key instead of a change, if the subsection
is given with at least one uppercase character. For example when the config
looks like

--------
  [section.subsection]
    key = value1
--------

and running `git config section.Subsection.key value2` will result in

--------
  [section.subsection]
    key = value1
    key = value2
--------


GIT
---
Part of the linkgit:git[1] suite

Title: Git Configuration Examples and Usage
Summary
This section provides examples of how to use Git configuration commands, such as setting, getting, and deleting configuration values, including multivariables and URL-specific settings, as well as troubleshooting deprecated syntax issues.