HOWTO · Git

How to Configure a Proxy to Work With Git

In this article, we will discuss the process of configuring Git to work with different proxies.

This article will discuss configuring Git to work with different proxies. It is usually hard to access Git while working behind a corporate firewall.

We will cover some of the proxies that Git supports, how to configure them, and how to feed the proxy to our command line for single use. Let’s start.

Supported Proxy Protocols in Git

Git supports the following proxies:

  1. HTTP
  2. HTTPS
  3. SOCKS4
  4. SOCKS5

Use an HTTP Proxy in Git Commands

We normally edit the Git configuration file to use proxies. However, Git allows us to feed the proxy to our terminal for quick use.

Here is an example of an HTTP proxy on the command line.

$ git config --global http.proxy http://username:password@proxy_server.com:port

In a scenario with a specific domain, we will run the command as shown below.

$ git config --global http.http://specific_domain.com.proxy http://username:password@proxy_server.com:port

Note we have added our domain between http.proxy, and we feed the full proxy URL. The full URL makes it possible for Git to automatically recognize and run the protocol.

Use an HTTPS Proxy in Git Commands

In a scenario where we are working behind a firewall, here is how we will run the commands for an HTTPS proxy protocol.

$ git config --global http.https://specific_domain.com.proxy http://username:password@proxy_server.com:port

The URL goes between http.proxy, but note the changes from http://specific_domain.com to https://specific_domain.com.

You can disable SSL verification to avoid problems, as shown below.

$ git config --global http.https://specific_domain.com.sslVerify false

Configure a Proxy Permanently in the Git Config File

We can permanently store the above settings in the Git configuration file. We use the --global switch to set the configs for all users and connections.

Set a Global Proxy With the --Global Switch

If we need all our Git actions to pass through our proxy, we run:

$ git config --global http.proxy http://username:password@proxy_server.com:port

Set a Proxy for a Specific Domain

We will run the command below if we want a specific domain to connect through our proxy.

$ git config --global http.https://domain.com.proxy http://username:password@proxy_server.com:port

Disable HTTPS Verification

If you get this error message unable to access 'https://...': Unknown SSL protocol error in connection to ...:443, you can switch off the SSL verification as shown below.

$ git -c http.sslVerify=false clone https://domain.com/example.git

Alternatively, you can disable it together, as shown below.

$ git config http.sslVerify false

Remove Proxy Setting for a Git Repository

We use the command below to list all proxies connected to our repository.

$ git config --get-regexp http.*

We can use any of the syntaxes below to remove our proxy.

$ git config --unset http.proxy
$ git config --unset http.https://domain.com.proxy

or

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

As shown below, we can add the global switch to remove the proxy settings from all our repositories.

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

Configure a SOCKS Proxy in Git

As mentioned earlier, Git supports socks5:// and socks4:// protocols.

Run the commands below to configure the SOCKS protocols.

$ git config --global http.proxy socks5://proxy_server.com:port

For a specific domain, run:

$ git config --global http.https://domain.com.proxy socks5://proxy_server.com:port