How to convert `git:` urls to `http:` urls
Asked Answered
T

5

175

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.

Tol answered 12/11, 2009 at 15:0 Comment(0)
H
359

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.

Hunker answered 8/7, 2012 at 13:40 Comment(8)
helps when firewall blocks git protocol! :)Sinatra
Can I ask a question here? I was using this but wrote "heeps" rather than "https". How can I correct this? Does 'git config --global.url.github.com/.insteadOf heeps://github.com/' work?Doorn
Tip: git remote -v immediately shows effect of insteadOf and pushInsteadOf configsStatutory
This worked for me in public WiFi with blocked 22 port. How config can be reverted to defaults?Khoury
This answer almost made it for me, except my repository was using a [email protected]:... format for the urls. This worked: git config --global url."https://github.com/".insteadOf '[email protected]:' for me.Acquire
Thanks! this works on this error ECMDERR Failed to execute "git ls-remote --tags --heads github.com/twbs/bootstrap.git", exit code of #128 fatal: unable to access 'github.com/twbs/bootstrap.git': SSL certificate problem: self signed certificate in certificate chainBusily
I'm getting error: cannot overwrite multiple values with a single valueHuberthuberto
Thanks! Exact solution, worked for me I was getting this error: "C:\Program Files\Git\cmd\git.EXE ls-remote -h -t git://github.com/shahata/jsdelivr-cdn-data.gitTrevatrevah
C
35

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?

Clemons answered 12/11, 2009 at 16:30 Comment(1)
Thanks, this "insteadOf" variable is exactly what I needed.Tol
C
27

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.

Croydon answered 15/2, 2011 at 22:48 Comment(1)
Y not just use git config --global url."https://".insteadOf git:// as shown here? github.com/angular/angular-phonecat/issues/141 I mean is the username mandatory?Shorten
D
4

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

Descendent answered 10/12, 2016 at 9:1 Comment(0)
H
0

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/
Hydrodynamics answered 16/11, 2021 at 5:38 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.