Git आपको एक प्रोजेक्ट के लिए विकास की कई अलग-अलग लाइनों को बनाए रखने देता है। विकास की इन लाइनों को ब्रांच कहा जाता है। आप एक रिमोट रिपॉजिटरी से एक ब्रांच के नवीनतम संस्करण को स्वतंत्र रूप से पुनः प्राप्त कर सकते हैं या आप एक बार में सभी ब्रांचेज़ के नवीनतम संस्करण को पुनः प्राप्त कर सकते हैं।
इस गाइड में, हम git fetch --all और git pull --all कमांड का उपयोग करके एक रिमोट रिपॉजिटरी से परिवर्तनों को पुनः प्राप्त करने के बारे में बात करते हैं।
ब्रांचिंग क्या है?
मान लें कि हम एक ब्लॉग वेबसाइट पर काम कर रहे हैं। हम ब्लॉग में एक फीचर जोड़ने जा रहे हैं जो उपयोगकर्ताओं को कमेंट करने देता है। हम इस फीचर को अपने प्रोजेक्ट के मुख्य संस्करण का हिस्सा नहीं बनाना चाहते क्योंकि हम अभी भी इस पर काम कर रहे हैं।
हम इसके लिए एक Git ब्रांच का उपयोग कर सकते हैं। हम अपने कमेंटिंग फीचर के लिए सभी कोड को स्टोर करने के लिए "comments" नामक एक ब्रांच बना सकते हैं। यह हमें हमारी कोडबेस के मुख्य संस्करण को बदले बिना हमारे कमेंटिंग फीचर पर काम करने देगा जो एक वेबसाइट पर तैनात है।
ब्रांचेज़ को स्थानीय या रिमोट रूप से संग्रहीत किया जा सकता है। यदि आप किसी प्रोजेक्ट के स्थानीय संस्करण पर काम कर रहे हैं, तो एक ब्रांच स्थानीय होगी। रिमोट ब्रांचेज़ प्रोजेक्ट के मुख्य संस्करण के साथ संग्रहीत होती हैं।
Git: सभी ब्रांचेज़ को फेच करें (Fetch All Branches)
हम blog-site नामक एक प्रोजेक्ट पर काम कर रहे हैं। इस प्रोजेक्ट में दो ब्रांचेज़ हैं: origin master और origin dev।
Dev ब्रांच में वे सभी एक्सपेरिमेंटल फीचर्स हैं जिनके साथ हम काम कर रहे हैं। हमें लगता है कि एक अन्य सहयोगी ने दोनों ब्रांचेज़ में परिवर्तन पुश किए हैं। हम सुनिश्चित करना चाहते हैं और यदि परिवर्तन किए गए हैं तो उनके लिए मेटाडेटा पुनः प्राप्त करना चाहते हैं।
हम इसे फेच कमांड का उपयोग करके कर सकते हैं। फेच कमांड Git को रिमोट ब्रांच पर नवीनतम अपडेट के लिए मेटाडेटा पुनः प्राप्त करने के लिए कहता है। फेच कमांड स्थानीय रिपॉजिटरी के संस्करण में संग्रहीत फ़ाइलों को अपडेट नहीं करता।
सभी रिमोट ब्रांचेज़ को ट्रैक करने और उन ब्रांचेज़ के लिए मेटाडेटा लाने के लिए, हम --all फ्लैग के साथ git fetch कमांड का उपयोग कर सकते हैं:
git fetch --all
यह कमांड लौटाता है:
Fetching origin remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), done. From https://github.com/career-karma-tutorials/blog-site 3fcea0c..da74d68 dev -> origin/dev
फेच कमांड ने हमारे रिमोट रिपॉजिटरी में किए गए सभी परिवर्तनों को ला लिया है। फेच कमांड जानता है कि हमारी रिमोट dev ब्रांच में ऐसे परिवर्तन हैं जो हमारी स्थानीय मशीन पर नहीं हैं। हमने अभी उन कमिट्स के लिए मेटाडेटा पुनः प्राप्त किया है।
हम git fetch origin <branch-name> कमांड का उपयोग करके एक व्यक्तिगत ब्रांच के लिए मेटाडेटा पुनः प्राप्त कर सकते हैं।
Git: सभी ब्रांचेज़ को पुल करें (Pull All Branches)
क्या होगा यदि आप मेटाडेटा पुनः प्राप्त करने के साथ-साथ अपने स्थानीय वर्किंग कॉपी को भी अपडेट करना चाहते हैं? यहीं git pull कमांड काम आता है।
अब हम जानते हैं कि हमारे रिपॉजिटरी में परिवर्तन किए गए हैं। हम इन परिवर्तनों को अपने स्थानीय रिपॉजिटरी के साथ मर्ज करने से खुश हैं। अपने स्थानीय मशीन पर परिवर्तनों को डाउनलोड करने के लिए, हमें git pull कमांड का उपयोग करने की आवश्यकता है:
git pull --all
हमने --all फ्लैग का उपयोग यह इंगित करने के लिए किया है कि हम हर ब्रांच से परिवर्तन पुनः प्राप्त करना चाहते हैं। हमारी कमांड लौटाती है:
Fetching origin remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), done. From https://github.com/career-karma-tutorials/blog-site 3fcea0c..da74d68 dev -> origin/dev Updating 3fcea0c..da74d68 Fast-forward README.md | 1 + 1 file changed, 1 insertion(+)
git pull कमांड पहले परिवर्तनों की जांच के लिए git fetch कमांड चलाता है। फेच ऑपरेशन हमारे कमिट्स के लिए मेटाडेटा लौटाता है। फिर, git pull कमांड हमारे रिमोट रिपॉजिटरी में किए गए सभी परिवर्तनों को पुनः प्राप्त करता है और हमारी स्थानीय फ़ाइलों को बदलता है।
हम देख सकते हैं कि README.md फ़ाइल हमारे रिमोट रिपॉजिटरी पर बदली गई थी। अब चूंकि हमने एक पुल ऑपरेशन चलाया है, हमारे पास वह परिवर्तन हमारी स्थानीय मशीन पर है।
एक ब्रांच से कोड पुनः प्राप्त करने के लिए, हम git pull origin <branch-name> कमांड का उपयोग कर सकते हैं।
निष्कर्ष
git fetch --all कमांड एक रिपॉजिटरी में सभी ब्रांचेज़ में किए गए प्रत्येक परिवर्तन पर मेटाडेटा पुनः प्राप्त करता है। git pull --all कमांड आपके स्थानीय मशीन पर सभी ब्रांचेज़ में किए गए सभी परिवर्तनों को डाउनलोड करता है।
अब आपके पास प्रो की तरह Git से सभी ब्रांचेज़ को पुल करने का ज्ञान है!