How to make git use a socks proxy for HTTP transport?
I succeed in configuring git with GIT_PROXY_COMMAND to use a socks proxy for GIT transport.
Also, I have configured my .curlrc file to defined the socks proxy and I can fetch information directly with curl command like:
curl http://git.kernel.org/pub/scm/git/git.git/info/refs?service=git-upload-pack
But how to use a socks proxy with git to retrieve data using the HTTP transport protocol like:
git clone http://git.kernel.org/pub/scm/git
HTTP proxies are high-level proxies usually designed for a specific protocol. While this means you get better connection speeds, they're not nearly as flexible and secure as SOCKS proxies. SOCKS proxies are low-level proxies that can handle any program or protocol and any traffic without limitations.
Setting the proxy for Git Run the following commands replacing USERNAME , PASSWORD , PROXY_ADDRESS , and PROXY_PORT with your network's information: git config --global --add http. proxy http://USERNAME:PASSWORD@PROXY_ADDRESS:PROXY_PORT. git config --global --add https.
You can use http_proxy environmentvariable like this: export http_proxy="socks5://localhost:9050" Now the terminal will use that as proxy.
Now whenever you do anything with [email protected] , it will use the proxy automatically.
I tested with Git 1.8.2 and SOCKS v5 proxy, following setting works for me:
git config --global http.proxy 'socks5://127.0.0.1:7070'
UPDATE 2017-3-31:
According to the document, despite the name http
.proxy
, it should work for both HTTP and HTTPS repository urls. Thanks @user for pointing out this.
UPDATE 2018-11-27:
To disable the proxy, run command:
git config --global --unset http.proxy
EDIT 2019-03-04:
If you also want the host name to be resolved using the proxy, use thuzhf's solution below, which uses socks5h
instead of socks5
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With