How to convert `git:` urls to `http:` urls

GitProxy

Git Problem Overview


I'm working behind an http proxy. I'm trying to clone Android's source tree using their "repo" tool.

This tool insists on using git:// URLs, even though http:// URLs also work. As a result, I can't download the source.

Is it possible to force git to always use http?

Edit: my http_proxy is configured correctly. For example, this works:

git clone http://android.git.kernel.org/platform/manifest.git

But this doesn't (errno=Connection timed out):

git clone git://android.git.kernel.org/platform/manifest.git

So this answer does not really help me.

Git Solutions


Solution 1 - Git

Here's an example of rewriting the default protocol for GitHub:

git config --global url.https://github.com/.insteadOf git://github.com/

The exact values depend on the protocol in use. For example, the above command for git over ssh will look like:

git config --global url.https://github.com/.insteadOf [email protected]:

Git documentation for url.<base>.insteadOf:

> git config [--global] url.<base>.insteadOf <other_url> > > Any URL that starts with this value will be rewritten to start, instead, with <base>. When more than one insteadOf strings match a given URL, the longest match is used.

Solution 2 - Git

I don't know how this repo tool uses Git (and if you can configure 'repo' to use http protocol), but you can try to trick it using url.<base>.insteadOf configuration variable (see [git-config][] and [git-fetch][] manpages).

Have you tried to use core.gitProxy to pass through firewall, if it is the problme with using git protocol?

[git-config]: http://git-scm.com/docs/git-config "git-config(1) Manual Page - Get and set repository or global options" [git-fetch]: http://www.kernel.org/pub/software/scm/git/docs/git-fetch.html "git-fetch(1) Manual Page - Download objects and refs from another repository"

Solution 3 - Git

I had this same problem with recursively getting submodules in a git repository. I'm behind a crazy firewall that doesn't allow outgoing connections on the git port. Some of the submodules of the submodules were coded as git://github.com/blah/blah.git. This killed my recursive population of submodules. The workaround is the following:

git config --global url."https://<GITUSERNAME>@".insteadOf git://

This replaces git:// with https://<GITUSERNAME>@ in all submodule repository URLs. You need to replace <GITUSERNAME> with your own git username. Also note that the --global is required; just adding this configuration to the base repository directory doesn't work.

Solution 4 - Git

You can verify in ~/.gitconfig if you're overwriting SSH with https://, or vice versa.

Solution 5 - Git

Find your git account's git config file(.gitconfig), modify the followings:

    [user]
    email = your e-mail account


    name = your git account
    [url "[email protected]:"]


    insteadOf = https://github.com/

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionnoamtmView Question on Stackoverflow
Solution 1 - GitTobuView Answer on Stackoverflow
Solution 2 - GitJakub NarębskiView Answer on Stackoverflow
Solution 3 - GitcrcastleView Answer on Stackoverflow
Solution 4 - GitPiperView Answer on Stackoverflow
Solution 5 - Gituser17424855View Answer on Stackoverflow