`Git:` urls को `http:` urls में कैसे परिवर्तित करें


139

मैं एक HTTP प्रॉक्सी के पीछे काम कर रहा हूँ। मैं उनके "रेपो" टूल का उपयोग करके एंड्रॉइड के सोर्स ट्री को क्लोन करने की कोशिश कर रहा हूं।

यह उपकरण git://URL का उपयोग करने पर जोर देता है , भले ही http://URL काम भी करते हों। परिणामस्वरूप, मैं स्रोत डाउनलोड नहीं कर सकता।

क्या gitहमेशा उपयोग करने के लिए मजबूर करना संभव है http?

संपादित करें: मेरा http_proxy सही तरीके से कॉन्फ़िगर किया गया है। उदाहरण के लिए, यह काम करता है:

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

लेकिन यह (गलत नहीं है = कनेक्शन समय पर नहीं):

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

तो यह जवाब वास्तव में मेरी मदद नहीं करता है।


जवाबों:


297

यहाँ GitHub के लिए डिफ़ॉल्ट प्रोटोकॉल को फिर से लिखने का एक उदाहरण दिया गया है:

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

के लिए गिट प्रलेखन url.<base>.insteadOf:

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

कोई भी URL जो इस मान से शुरू होता है, को इसके साथ शुरू करने के लिए फिर से लिखा जाएगा <base>। जब एक के बजाय एक से अधिक तार किसी दिए गए URL से मेल खाते हैं, तो सबसे लंबे मैच का उपयोग किया जाता है।


19
जब फ़ायरवॉल git प्रोटोकॉल को ब्लॉक करता है! :)
वोजटेक ट्युविसीज़

क्या मैं यहाँ एक प्रश्न पूछ सकता हूँ? मैं इसका उपयोग कर रहा था लेकिन "https" के बजाय "heeps" लिखा था। यह कैसे सही हो सकता है? 'Git config --global.url' करता है। github.com/.insteadOf heeps: //github.com/ 'काम?
Xuxu

1
युक्ति: git remote -vतुरंत प्रभाव दिखाता है insteadOfऔर pushInsteadOfकॉन्फ़िगर करता है
बेनी चेर्नियाव्स्की-पास्किन

यह मेरे लिए सार्वजनिक वाईफाई में अवरुद्ध 22 पोर्ट के साथ काम करता है। डिफॉल्ट को कैसे वापस किया जा सकता है?
यिवो

14
इस जवाब ने इसे लगभग मेरे लिए बना दिया, सिवाय मेरे भंडार git@github.com:...के यूआरएल के लिए एक प्रारूप का उपयोग कर रहा था । यह काम किया: git config --global url."https://github.com/".insteadOf 'git@github.com:'मेरे लिए।
क्रैनहैंस

35

मुझे नहीं पता कि यह रेपो टूल Git का उपयोग कैसे करता है (और यदि आप http प्रोटोकॉल का उपयोग करने के लिए 'repo' को कॉन्फ़िगर कर सकते हैं), लेकिन आप इसे url.<base>.insteadOfकॉन्फिगरेशन वैरिएबल ( git-config और git-fetch manpages देखें) का उपयोग करके ट्रिक कर सकते हैं ।

क्या आपने core.gitProxyफ़ायरवॉल से गुजरने के लिए उपयोग करने की कोशिश की है , अगर यह git प्रोटोकॉल का उपयोग करने के साथ प्रोब्लम है?


2
धन्यवाद, यह "इसके बजाय।" चर वैसा ही है जैसा मुझे चाहिए था।
नं।

23

मैं एक पुनरावृत्ति एक git भंडार में submodules प्राप्त करने के साथ यह एक ही समस्या थी। मैं एक पागल फ़ायरवॉल के पीछे हूँ जो गिट पोर्ट पर आउटगोइंग कनेक्शन की अनुमति नहीं देता है। कुछ सबमॉडल्स के सबमॉडल्स को कोड किया गया था git://github.com/blah/blah.git। इसने सबमॉडल्स की मेरी पुनरावर्ती आबादी को मार डाला। वर्कअराउंड निम्न है:

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

प्रतिस्थापित कर देता है git://के साथ https://<GITUSERNAME>@सभी submodule भंडार URL में। आपको <GITUSERNAME>अपने स्वयं के गिट उपयोगकर्ता नाम के साथ बदलने की आवश्यकता है । यह भी ध्यान दें कि --globalआवश्यक है; बस इस कॉन्फ़िगरेशन को आधार रिपॉजिटरी डायरेक्टरी में जोड़ने से काम नहीं चलता है।


3
Y केवल git config --global url का उपयोग नहीं करता है। "https: //" .insteadOf git: // जैसा कि यहाँ दिखाया गया है? github.com/angular/angular-phonecat/issues/141 मेरा मतलब है कि उपयोगकर्ता नाम अनिवार्य है?
λ11ος

3

~/.gitconfigयदि आप SSH को https: //, या इसके विपरीत लिख रहे हैं , तो आप सत्यापित कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.