0%

Configure Git to use a proxy

From: https://gist.github.com/evantoli/f8c23a37eb3558ab8765

In Brief

You may need to configure a proxy server if you’re having trouble cloning
or fetching from a remote repository or getting an error
like unable to access '...' Couldn't resolve host '...'.

Consider something like:

1
git config --global http.proxy http://proxyUsername:proxyPassword@proxy.server.com:port

Or for a specific domain, something like:

1
2
git config --global http.https://domain.com.proxy http://proxyUsername:proxyPassword@proxy.server.com:port
git config --global http.https://domain.com.sslVerify false

Setting http.<url>.sslVerify to false may help you quickly get going if your workplace
employs man-in-the-middle HTTPS proxying. Longer term, you could get the
root CA that they are applying to the certificate chain
and specify it with either http.sslCAInfo or http.sslCAPath.

See also the git-config documentation, especially the following
sections if you’re having HTTPS/SSL issues

  • http.sslVerify
  • http.sslCAInfo
  • http.sslCAPath
  • http.sslCert
  • http.sslKey
  • http.sslCertPasswordProtected

In Detail

Configure the proxy

You can configure these globally in your user ~/.gitconfig file using the --global switch, or local to a repository in its .git/config file.

Setting a global proxy

Configure a global proxy if all access to all repos require this proxy

1
git config --global http.proxy http://proxyUsername:proxyPassword@proxy.server.com:port

Setting a global socks5 proxy

1
git config --global http.proxy 'socks5://server:port'

URL specific proxy

If you wish to specify that a proxy should be used for just
some URLs that specify the URL as a git config subsection
using http.<url>.key notation:

1
git config --global http.https://domain.com.proxy http://proxyUsername:proxyPassword@proxy.server.com:port

Which will result in the following in the ~/.gitconfig file:

1
2
3
[http]
[http "https://domain.com"]
proxy = http://proxyUsername:proxyPassword@proxy.server.com:port

Handle subsequent SSL protocol errors

If you’re still having trouble cloning or fetching and are now getting
an unable to access 'https://...': Unknown SSL protocol error in connection to ...:443 then
you may decide to switch off SSL verification for the single operation
by using the -c http.sslVerify=false option

1
git -c http.sslVerify=false clone https://domain.com/path/to/git

Once cloned, you may decide set this for just this cloned
repository’s .git/config by doing. Notice the absence of the --global

1
git config http.sslVerify false

If you choose to make it global then limit it to a URL using
the http.<url>.sslVerify notation:

1
git config --global http.https://domain.com.sslVerify false

Which will result in the following in the ~/.gitconfig file:

1
2
3
4
[http]
[http "https://domain.com"]
proxy = http://proxyUsername:proxyPassword@proxy.server.com:port
sslVerify = false

Show current configuration

To show the current configuration of all http sections

1
git config --global --get-regexp http.*

If you are in a locally cloned repository folder then you drop
the --global and see all current config:

1
git config --get-regexp http.*

Unset a proxy or SSL verification

Use the --unset flag to remove configuration being specific about the
property – for example whether it was http.proxy or http.<url>.proxy.
Consider using any of the following:

1
2
3
4
5
6
git config --global --unset http.proxy
git config --global --unset http.https://domain.com.proxy

git config --global --unset http.sslVerify
git config --global --unset http.https://domain.com.sslVerify