Git में विशिष्ट उपनिर्देशिकाओं की क्लोनिंग

Git में विशिष्ट उपनिर्देशिकाओं की क्लोनिंग
Git configuration

क्लोनिंग उपनिर्देशिकाएँ: एक त्वरित अवलोकन

Git के साथ संस्करण नियंत्रण का प्रबंधन करते समय, SVN जैसे पुराने सिस्टम की तुलना में विभिन्न परिदृश्यों के लिए अलग-अलग दृष्टिकोण की आवश्यकता होती है। विशेष रूप से, किसी रिपॉजिटरी की उपनिर्देशिकाओं को चुनिंदा रूप से क्लोन करने की क्षमता विभिन्न विकास वर्कफ़्लो के लिए महत्वपूर्ण हो सकती है। यह सुविधा विशेष रूप से तब उपयोगी होती है जब प्रोजेक्ट संरचनाएं जटिल होती हैं या जब आपको रिपॉजिटरी के केवल एक हिस्से के साथ काम करने की आवश्यकता होती है।

एसवीएन में, रिपॉजिटरी से विभिन्न स्थानों में उपनिर्देशिकाओं को चेकआउट करना सीधा था। हालाँकि, Git रिपॉजिटरी डेटा को अलग तरीके से संभालता है, जिससे 'svn co' जैसे SVN कमांड के सीधे समकक्ष कम स्पष्ट हो जाते हैं। यह मार्गदर्शिका यह पता लगाएगी कि कैसे Git विरल चेकआउट और अन्य रणनीतियों का उपयोग करके समान परिणाम प्राप्त कर सकता है।

आज्ञा विवरण
git init सभी आवश्यक मेटाडेटा के साथ प्रारंभिक .git निर्देशिका बनाते हुए, एक नया Git रिपॉजिटरी आरंभ करता है।
git remote add -f आपके Git कॉन्फ़िगरेशन में एक नया रिमोट रिपॉजिटरी जोड़ता है और तुरंत उसे प्राप्त करता है।
git config core.sparseCheckout true स्पार्स-चेकआउट सुविधा को सक्षम करता है, जो रिपॉजिटरी के आंशिक चेकआउट की अनुमति देता है।
echo "finisht/*" >> .git/info/sparse-checkout किस उपनिर्देशिका को जांचना है यह परिभाषित करने के लिए स्पार्स-चेकआउट कॉन्फ़िगरेशन फ़ाइल में पथ 'finisht/*' जोड़ता है।
git pull origin master केवल निर्दिष्ट उपनिर्देशिकाओं को पुनः प्राप्त करने के लिए विरल-चेकआउट नियमों का उपयोग करते हुए, 'मूल' रिमोट से 'मास्टर' शाखा को खींचता है।
git sparse-checkout set उन पथों को कॉन्फ़िगर करता है जिन्हें कार्यशील निर्देशिका के भीतर पॉप्युलेट किया जाना चाहिए।

गिट स्पार्स चेकआउट और स्क्रिप्ट वर्कफ़्लो की व्याख्या करना

प्रदान की गई स्क्रिप्ट को एसवीएन के साथ पहले से उपलब्ध व्यवहार की नकल करते हुए, गिट रिपॉजिटरी से विशिष्ट उपनिर्देशिकाओं को क्लोन करने के लिए डिज़ाइन किया गया है। ऐसे वातावरण में जहां रिपॉजिटरी के केवल कुछ हिस्सों की आवश्यकता होती है, इससे प्राप्त डेटा को काफी कम किया जा सकता है, जिससे दक्षता में सुधार होता है। पहली स्क्रिप्ट के संयोजन का उपयोग करती है git init, git remote add -f, और git config core.sparseCheckout true एक नई Git रिपॉजिटरी आरंभ करने के लिए, एक दूरस्थ स्रोत जोड़ें, और विरल चेकआउट सक्षम करें जो रिपॉजिटरी सामग्री की चयनात्मक क्लोनिंग की अनुमति देता है।

इसके बाद, 'finisht/*' जैसे पथों को स्पार्स-चेकआउट कॉन्फ़िगरेशन में जोड़ा जाता है echo आदेश, Git को केवल उन विशिष्ट निर्देशिकाओं को लाने का निर्देश देते हैं। आदेश git pull origin master रिमोट रिपॉजिटरी की मास्टर शाखा से केवल कॉन्फ़िगर की गई उपनिर्देशिकाओं को खींचने के लिए उपयोग किया जाता है। दूसरी स्क्रिप्ट इसका लाभ उठाती है git sparse-checkout set कमांड, हाल के Git संस्करणों में पेश किया गया एक अधिक सुव्यवस्थित दृष्टिकोण जो सीधे निर्देशिका पथ निर्दिष्ट करना सरल बनाता है, जो चेक किया गया है उस पर स्पष्टता और नियंत्रण बढ़ाता है।

Git रिपॉजिटरी में क्लोनिंग के लिए उपनिर्देशिकाओं को अलग करना

बैश और गिट कमांड का उपयोग करना

mkdir specific-dir-clone
cd specific-dir-clone
git init
git remote add -f origin https://your-repository-url.git
git config core.sparseCheckout true
echo "finisht/*" >> .git/info/sparse-checkout
git pull origin master
cd ..
mkdir another-specific-dir
cd another-specific-dir
git init
git remote add -f origin https://your-repository-url.git
git config core.sparseCheckout true
echo "static/*" >> .git/info/sparse-checkout
git pull origin master

Git में उपनिर्देशिकाओं के लिए विरल चेकआउट लागू करना

Git स्पार्स-चेकआउट सुविधा का उपयोग करना

git clone --filter=blob:none --no-checkout https://your-repository-url.git repo-dir
cd repo-dir
git sparse-checkout init --cone
git sparse-checkout set finisht
git checkout
cd ..
git clone --filter=blob:none --no-checkout https://your-repository-url.git another-repo-dir
cd another-repo-dir
git sparse-checkout init --cone
git sparse-checkout set static
git checkout

निर्देशिका-विशिष्ट संचालन के लिए Git में उन्नत तकनीकें

Git में उपनिर्देशिकाओं की क्लोनिंग के बुनियादी तरीकों के अलावा, उन्नत तकनीकें हैं जो आगे यह अनुकूलित कर सकती हैं कि डेवलपर्स कई परियोजनाओं के साथ बड़े रिपॉजिटरी का प्रबंधन कैसे करते हैं। ऐसी ही एक विधि में का उपयोग शामिल है git submodule. यह कमांड एक Git रिपॉजिटरी को अन्य Git रिपॉजिटरी को सबमॉड्यूल के रूप में शामिल करने की अनुमति देता है, जिसे पैरेंट के साथ क्लोन किया जा सकता है लेकिन अलग से बनाए रखा जा सकता है। यह विशेष रूप से तब उपयोगी होता है जब रिपॉजिटरी के विभिन्न हिस्सों को अलग करने की आवश्यकता होती है लेकिन फिर भी उन्हें केंद्रीय रिपॉजिटरी से नियंत्रित किया जाता है।

एक अन्य उन्नत सुविधा का उपयोग है git filter-branch के साथ संयुक्त git subtree. यह संयोजन आपको इसके इतिहास को संरक्षित करते हुए एक उपनिर्देशिका को एक नए, अलग Git रिपॉजिटरी में निकालने की अनुमति देता है। यह उन स्थितियों के लिए आदर्श है जहां एक परियोजना अपनी इकाई में विकसित होती है और उसे अपने ऐतिहासिक संदर्भ को खोए बिना मुख्य भंडार से अलग करने की आवश्यकता होती है।

आवश्यक गिट उपनिर्देशिका प्रबंधन अक्सर पूछे जाने वाले प्रश्न

  1. क्या मैं Git रिपॉजिटरी से सिर्फ एक निर्देशिका को क्लोन कर सकता हूँ?
  2. हाँ, जैसे कमांड का उपयोग करना git sparse-checkout या उस निर्देशिका की सामग्री के साथ एक अलग शाखा बनाना।
  3. Git में स्पार्स चेकआउट क्या है?
  4. स्पार्स चेकआउट आपको पूरे प्रोजेक्ट को डाउनलोड किए बिना रिपॉजिटरी से कुछ फ़ोल्डर्स या फ़ाइलों को चुनिंदा रूप से जांचने की सुविधा देता है।
  5. मैं उपनिर्देशिका के लिए सबमॉड्यूल का उपयोग कैसे करूँ?
  6. सबमॉड्यूल को इसके साथ जोड़ें git submodule add वांछित भंडार और पथ की ओर इशारा करते हुए।
  7. क्या मैं एक उपनिर्देशिका को एक नए भंडार में अलग कर सकता हूँ?
  8. हाँ, उपयोग कर रहा हूँ git subtree split केवल उपनिर्देशिका के इतिहास के साथ एक नई शाखा बनाने के लिए, जिसे बाद में क्लोन किया जा सकता है।
  9. गिट सबमॉड्यूल और गिट सबट्री के बीच क्या अंतर है?
  10. सबमॉड्यूल अलग-अलग रिपॉजिटरी को आपके प्रोजेक्ट में निर्भरता के रूप में लिंक करते हैं, जबकि सबट्रीज़ आपके प्रोजेक्ट में एक और रिपॉजिटरी को इसे वापस विभाजित करने की क्षमता के साथ मर्ज करते हैं।

Git में निर्देशिका-विशिष्ट क्लोनिंग पर अंतिम विचार

जबकि Git अलग-अलग निर्देशिकाओं के लिए SVN के चेकआउट के बराबर सीधा कमांड प्रदान नहीं करता है, विरल चेकआउट, सबमॉड्यूल और सबट्री रणनीतियों का उपयोग मजबूत विकल्प प्रदान करता है। ये विधियाँ न केवल दोहराती हैं बल्कि अक्सर पुराने संस्करण नियंत्रण प्रणालियों द्वारा प्रदान की गई कार्यक्षमता को बढ़ाती हैं। एसवीएन से संक्रमण करने वाले या गिट के भीतर जटिल परियोजनाओं का प्रबंधन करने वाले डेवलपर्स के लिए, इन तकनीकों में महारत हासिल करने से उनकी विकास प्रक्रिया को महत्वपूर्ण रूप से सुव्यवस्थित किया जा सकता है।