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 | git config --global http.https://domain.com.proxy http://proxyUsername:proxyPassword@proxy.server.com:port |
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 | [http] |
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 | [http] |
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 | git config --global --unset http.proxy |