`Git:` url’leri `http:` urls 'e dönüştürme


139

Bir http proxy arkasında çalışıyorum. Onların "repo" aracını kullanarak Android kaynak ağacını klonlamaya çalışıyorum.

Bu araç git://, http://URL'ler de çalışsa bile URL'leri kullanmakta ısrar eder . Sonuç olarak, kaynağı indiremiyorum.

Her gitzaman kullanmaya zorlamak mümkün mü http?

Düzenleme: http_proxy'm doğru yapılandırıldı. Örneğin, bu işe yarar:

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

Ancak bu yapılmaz (errno = Bağlantı zaman aşımına uğradı):

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

Yani bu cevap bana gerçekten yardımcı olmuyor.


Bu önceki cevaba bakınız .
John Paulett

Yanıtlar:


297

İşte GitHub için varsayılan protokolü yeniden yazma örneği:

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

Git belgeleri url.<base>.insteadOf:

git config [--global] url.<base>.insteadOf <other_url>

Bu değerle başlayan tüm URL'ler bununla başlamak için yeniden yazılır <base>. Bunun yerine birden fazla dize belirli bir URL ile eşleştiğinde, en uzun eşleşme kullanılır.


19
güvenlik duvarı protokolü engellediğinde yardımcı olur! :)
Wojtek Turowicz

Burada bir soru sorabilir miyim? Bunu kullanıyordum ama "https" yerine "heeps" yazdım. Bunu nasıl düzeltebilirim? 'Git config --global.url. Heeps : //github.com/ 'işe yarıyor mu?
Xuxu

1
İpucu: git remote -vhemen etkisini gösterir insteadOfve pushInsteadOfyapılandırır
Beni Cherniavsky-Paskin

Bu bloke 22 bağlantı noktası ile kamu WiFi benim için çalıştı. Yapılandırma varsayılan değerlere nasıl döndürülebilir?
yivo

14
git@github.com:...Depomun URL'ler için bir format kullanması dışında bu cevap neredeyse benim için yaptı. Bu işe yaradı: git config --global url."https://github.com/".insteadOf 'git@github.com:'benim için.
kraenhansen

35

Bu repo aracının Git'i nasıl kullandığını bilmiyorum (ve http protokolünü kullanmak için 'repo'yu yapılandırabilirseniz), ancak url.<base>.insteadOfyapılandırma değişkenini kullanarak kandırmayı deneyebilirsiniz ( git-config ve git-fetch manpages'e bakın).

core.gitProxyGit protokolünü kullanmakla ilgili bir sorunsa, güvenlik duvarından geçmek için kullanmaya çalıştınız mı ?


2
Teşekkürler, bu "bunun yerine" değişken tam olarak ihtiyacım olan şeydir.
noamtm

23

Ben de bir depoda tekrarlayan alt modüller almakla aynı sorunu yaşadım. Git bağlantı noktasında giden bağlantılara izin vermeyen çılgın bir güvenlik duvarının arkasındayım. Alt modüllerin bazı alt modülleri olarak kodlanmıştır git://github.com/blah/blah.git. Bu benim yinelemeli submodül popülasyonumu öldürdü. Geçici çözüm aşağıdaki gibidir:

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

Bu cümledeki git://ile https://<GITUSERNAME>@tüm alt modül deposu URL'leri. <GITUSERNAME>Kendi git kullanıcı adınızla değiştirmeniz gerekir . Ayrıca --globalgerekli olduğunu unutmayın ; yalnızca bu yapılandırmayı temel depo dizinine eklemek işe yaramaz.


3
Y sadece git config --global url'yi kullanmaz. "Https: //" .insteadOf git: // burada gösterildiği gibi? github.com/angular/angular-phonecat/issues/141 Yani kullanıcı adı zorunlu mu?
Αλέκος

3

~/.gitconfigHttps: // ile SSH'nin üzerine yazıp yazmadığınızı veya tam tersini doğrulayabilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.