एक परियोजना को अलग कनेक्शन चाहिए तो ग्लोबल Git प्रॉक्सी ज़रूरी नहीं। मौजूदा चेकआउट की अपनी स्थानीय कॉन्फ़िगरेशन होती है, इसलिए बदलाव उसी रिपॉज़िटरी में रख सकते हैं।

उदाहरण मौजूदा git config set/get/unset कमांड इस्तेमाल करते हैं। प्रोजेक्ट डायरेक्टरी, रिमोट URL और दस्तावेज़ी IP बदलने के लिए नमूने हैं। जिस सार्वजनिक रिपॉज़िटरी परीक्षण में सार्वजनिक प्रॉक्सी की अनुमति हो, उसके लिए HTTP प्रॉक्सी सूची से उम्मीदवार चुनें।

git -C project config set --local http.proxy http://203.0.113.10:8080
git -C project ls-remote origin

प्रॉक्सी URL में उसका परिवहन स्कीम होता है। HTTPS रिमोट भी CONNECT समर्थित सामान्य HTTP प्रॉक्सी इस्तेमाल कर सकता है; रिमोट का HTTPS स्कीम प्रॉक्सी URL को HTTPS में बदलना अनिवार्य नहीं करता।

जाँचें कि Git ने वास्तव में क्या चुना

नतीजा अप्रत्याशित हो तो वास्तविक रिमोट URL के लिए चुना मान जाँचें:

git -C project config get --show-origin \
  --url=https://example.com/team/project.git http.proxy

क्वेरी में अपना वास्तविक HTTPS रिमोट रखें। Git में सिस्टम, उपयोगकर्ता, रिपॉज़िटरी, कमांड-लाइन और URL-विशिष्ट सेटिंग हो सकती हैं। केवल ग्लोबल http.proxy मान देखने से अधिक विशिष्ट नियम छूट सकता है। स्रोत का आउटपुट नतीजे के पीछे फ़ाइल या कमांड-लाइन स्रोत पहचानने में मदद करता है।

स्थानीय सेटिंग उस रिपॉज़िटरी से HTTP पहुँच पर लागू होती है, केवल किसी शाखा पर नहीं। कई HTTP रिमोट वाली रिपॉज़िटरी इसलिए पहली जाँची रिमोट के अलावा दूसरों पर भी उसे इस्तेमाल कर सकती है। छोटा दायरा चाहिए तो URL-विशिष्ट HTTP सेटिंग उपलब्ध है।

चेकआउट बनने से पहले

पहले क्लोन में चुनें कि ओवरराइड बना रहना चाहिए या नहीं; सिर्फ उस Git कॉल तक सीमित करने के लिए इस्तेमाल करें:

git -c http.proxy=http://203.0.113.10:8080 \
  clone https://example.com/team/project.git

कमांड-लाइन ओवरराइड अपने-आप नए चेकआउट में स्थायी कॉन्फ़िगरेशन एंट्री नहीं बनता। बाद के fetch को वही रास्ता चाहिए तो बाद में स्थानीय मान सेट करें।

SSH रिमोट अलग मामला है

git@host: या ssh:// से शुरू रिमोट SSH इस्तेमाल करता है। Git की HTTP प्रॉक्सी सेटिंग उसे HTTP ट्रांसफ़र में नहीं बदलती। सिर्फ SSH कार्रवाई अभी भी विफल होने से काम कर रहे प्रॉक्सी IP को बदलने से पहले रिमोट का परिवहन जाँचें।

स्थानीय ओवरराइड नहीं चाहिए तो केवल वही की हटाएँ:

git -C project config unset --local http.proxy

हटाने से अन्य स्रोतों की लागू कॉन्फ़िगरेशन फिर प्रभावी होती है। यह मशीन की सारी प्रॉक्सी सेटिंग मिटाने का कमांड नहीं है।

संबंधित लेख