यदि यह आपके फ़ायरवॉल को गिट को अवरुद्ध करने के साथ एक मुद्दा है: प्रोटोकॉल पोर्ट (9418), तो आपको एक और अधिक लगातार परिवर्तन करना चाहिए ताकि आपको हर गिट रेपो के लिए अन्य पदों द्वारा सुझाए गए आदेश जारी करने के लिए याद न करना पड़े।
नीचे दिया गया समाधान भी सबमॉड्यूल्स के लिए काम करता है जो कि git: प्रोटोकॉल का भी उपयोग कर सकता है।
चूंकि git संदेश वास्तव में फ़ायरवॉल ब्लॉकिंग पोर्ट 9418 को तुरंत इंगित नहीं करता है, इसलिए यह वास्तविक समस्या के रूप में निदान करने का प्रयास करता है।
समस्या का निदान
संदर्भ: https://superuser.com/q/621870/203918 और https://unix.stackexchange.com/q/11756/57414
कई उपकरण हैं जो हम यह निर्धारित करने के लिए उपयोग कर सकते हैं कि क्या फ़ायरवॉल हमारी समस्या पैदा कर रहा है - आपके सिस्टम पर जो भी स्थापित है उसका उपयोग करें।
# Using nmap
# A state of "filtered" against port 9418 (git) means
# that traffic is being filtered by a firewall
$ nmap github.com -p http,git
Starting Nmap 5.21 ( http://nmap.org ) at 2015-01-21 10:55 ACDT
Nmap scan report for github.com (192.30.252.131)
Host is up (0.24s latency).
PORT STATE SERVICE
80/tcp open http
9418/tcp filtered git
# Using Netcat:
# Returns 0 if the git protocol port IS NOT blocked
# Returns 1 if the git protocol port IS blocked
$ nc github.com 9418 < /dev/null; echo $?
1
# Using CURL
# Returns an exit code of (7) if the git protocol port IS blocked
# Returns no output if the git protocol port IS NOT blocked
$ curl http://github.com:9418
curl: (7) couldn't connect to host
ठीक है, इसलिए अब हमने यह निर्धारित कर लिया है कि यह हमारा गिट्टी पोर्ट है जिसे एक फ़ायरवॉल द्वारा अवरुद्ध किया जा रहा है, हम इसके बारे में क्या कर सकते हैं? पढ़ते रहिये :)
मूल URL पुनर्लेखन
Git का उपयोग करके URL को फिर से लिखने का एक तरीका प्रदान करता है git config
। बस निम्नलिखित आदेश जारी करें:
git config --global url."https://".insteadOf git://
अब, के रूप में जादू से किया जाए तो सभी Git आदेशों की एक प्रतिस्थापन प्रदर्शन करेंगे git://
करने के लिएhttps://
इस कमांड ने क्या बदलाव किए?
अपने वैश्विक विन्यास का उपयोग करके देखें:
git config --list
आपको आउटपुट में निम्न पंक्ति दिखाई देगी:
url.https://.insteadof=git://
आप देख सकते हैं कि यह फ़ाइल पर कैसा दिखता है, ~/.gitconfig
जहाँ आप अब देख लेना चाहिए कि निम्नलिखित दो पंक्तियों को जोड़ दिया गया है:
[url "https://"]
insteadOf = git://
अधिक नियंत्रण चाहते हैं?
बस प्रतिस्थापन में अधिक पूर्ण / विशिष्ट URL का उपयोग करें। उदाहरण के लिए, केवल GitHub URL में git: // के बजाय https: // का उपयोग करना होगा, आप कुछ इस तरह का उपयोग कर सकते हैं:
git config --global url."https://github".insteadOf git://github
आप अलग-अलग प्रतिस्थापन का उपयोग करके इस कमांड को कई बार चला सकते हैं। हालांकि, इस घटना में कि एक URL कई प्रतिस्थापन से मेल खाता है, सबसे लंबा मैच "जीत" है। प्रति URL केवल एक प्रतिस्थापन किया जाएगा।
सिस्टम-वाइड चेंजेस फॉर सिसमिन्स
यदि आप एक Linux Sysadmin हैं और आप नहीं चाहते कि आपके उपयोगकर्ता को उपरोक्त दर्द से गुजरना पड़े तो आप एक त्वरित सिस्टम-वाइड गिट कॉन्फ़िगरेशन परिवर्तन कर सकते हैं।
/etc/gitconfig
अपने उपयोक्ताओं के लिए निम्नलिखित सामग्रियों को केवल संपादित करें या जोड़ दें और अपने उपयोगकर्ताओं को उपरोक्त में से किसी के बारे में चिंता करने की आवश्यकता नहीं है:
[url "https://"]
insteadOf = git://