socks5 - git remove proxy
How do I pull from a Git repository through an HTTP proxy? (18)
Note: while the use-case described is about using submodules within a project, the same applies to a normal
git clone of a repository over HTTP.
I have a project under Git control. I'd like to add a submodule:
git submodule add http://github.com/jscruggs/metric_fu.git vendor/plugins/metric_fu
But I get
... got 1b0313f016d98e556396c91d08127c59722762d0 got 4c42d44a9221209293e5f3eb7e662a1571b09421 got b0d6414e3ca5c2fb4b95b7712c7edbf7d2becac7 error: Unable to find abc07fcf79aebed56497e3894c6c3c06046f913a under http://github.com/jscruggs/metri... Cannot obtain needed commit abc07fcf79aebed56497e3894c6c3c06046f913a while processing commit ee576543b3a0820cc966cc10cc41e6ffb3415658. fatal: Fetch failed. Clone of 'http://github.com/jscruggs/metric_fu.git' into submodule path 'vendor/plugins/metric_fu'
I have my HTTP_PROXY set up:
c:\project> echo %HTTP_PROXY% http://proxy.mycompany:80
I even have a global Git setting for the http proxy:
c:\project> git config --get http.proxy http://proxy.mycompany:80
Has anybody gotten HTTP fetches to consistently work through a proxy? What's really strange is that a few project on GitHub work fine (
awesome_nested_set for example), but others consistently fail (rails for example).
Goto --> C:/Users/user_name/gitconfig
Update gitconfig file with below details
proxy = https://your_proxy:your_port
proxy = http://your_proxy:your_port
How to check your proxy and port number?
Internet Explorer -> Settings -> Internet Options -> Connections -> LAN Settings
For me the git:// just doesn't work through the proxy although the https:// does. This caused some bit of headache because I was running scripts that all used git:// so I couldn't just easily change them all. However I found this GEM
git config --global url."https://github.com/".insteadOf git://github.com/
I find neither
GIT_PROXY_COMMAND work for my authenticated http proxy. The proxy is not triggered in either way. But I find a way to work around this.
- Install corkscrew, or other alternatives you want.
Create a authfile. The format for
passwordis your username and password to access your proxy. To create such a file, simply run command like this:
echo "username:password" > ~/.ssh/authfile.
~/.ssh/config, and make sure its permission is
chmod 644 ~/.ssh/config
Take github.com as an example, add the following lines to
Host github.com HostName github.com ProxyCommand /usr/local/bin/corkscrew <your.proxy> <proxy port> %h %p <path/to/authfile> User git
This is not so elegant as other approaches, but it works like a charm.
I got around the proxy using https... some proxies don't even check https.
Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. c:\git\meantest>git clone http://github.com/linnovate/mean.git Cloning into 'mean'... fatal: unable to access 'http://github.com/linnovate/mean.git/': Failed connect to github.com:80; No error c:\git\meantest>git clone https://github.com/linnovate/mean.git Cloning into 'mean'... remote: Reusing existing pack: 2587, done. remote: Counting objects: 27, done. remote: Compressing objects: 100% (24/24), done. rRemote: Total 2614 (delta 3), reused 4 (delta 0)eceiving objects: 98% (2562/26 Receiving objects: 100% (2614/2614), 1.76 MiB | 305.00 KiB/s, done. Resolving deltas: 100% (1166/1166), done. Checking connectivity... done
If you just want to use proxy on a specified repository, don't need on other repositories. The preferable way is the
-c, --config <key=value> option when you
git clone a repository. e.g.
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git --config "http.proxy=proxyHost:proxyPort"
It looks like you're using a mingw compile of Git on windows (or possibly another one I haven't heard about). There are ways to debug this: I believe all of the http proxy work for git is done by curl. Set this environment variable before running git:
This should at least give you an idea of what is going on behind the scenes.
On Windows, if you don't want to put your password in .gitconfig in the plain text, you can use
- Cntml (http://cntlm.sourceforge.net/)
It authenticates you against normal or even Windows NTLM proxy and starts localhost-proxy without authentication.
In order to get it run:
- Install Cntml
- Configure Cntml according to documentation to pass your proxy authentication
Point git to your new localhost proxy:
[http] proxy = http://localhost:3128 # change port as necessary
Set Git credential.helper to wincred.
git config --global credential.helper wincred
Make sure there is only 1 credential.helper
git config -l
If there is more than 1 and it's not set to wincred remove it.
git config --system --unset credential.helper
Now set the proxy with no password.
git config --global http.proxy http://<YOUR WIN LOGIN NAME>@proxy:80
Check that all the settings that you added looks good....
git config --global -l
Now you good to go!
There's some great answers on this already. However, I thought I would chip in as some proxy servers require you to authenticate with a user Id and password. Sometimes this can be on a domain.
So, for example if your proxy server configuration is as follows:
Server: myproxyserver Port: 8080 Username: mydomain\myusername Password: mypassword
Then, add to your
.gitconfig file using the following command:
git config --global http.proxy http://mydomain\\myusername:[email protected]:8080
Don't worry about
https. As long as the specified proxy server supports http, and https, then one entry in the config file will suffice.
You can then verify that the command added the entry to your
.gitconfig file successfully by doing
At the end of the file you will see an entry as follows:
[http] proxy = http://mydomain\\myusername:[email protected]:8080
This is an old question but if you are on Windows, consider setting HTTPS_PROXY as well if you are retrieving via an https URL. Worked for me!
This worked to me.
git config --global http.proxy proxy_user:[email protected]_ip:proxy_port
When your network team does ssl-inspection by rewriting certificates, then using a http url instead of a https one, combined with setting this var worked for me.
git config --global http.proxy http://proxy:8081
You can also set the HTTP proxy that Git uses in global configuration property
git config --global http.proxy http://proxy.mycompany:80
as @user2188765 has already pointed out, try replacing the
git:// protocol of the repository with
http[s]://. See also this answer
you can use:
git config --add http.proxy http://user:[email protected]_host:proxy_port