git pull कमांड आपको एक रिमोट रिपॉजिटरी में प्रोजेक्ट में किए गए परिवर्तनों को पुनः प्राप्त करने और उन परिवर्तनों को आपकी स्थानीय मशीन पर डाउनलोड करने देता है। इस ऑपरेशन को git reset कमांड का उपयोग करके पूर्ववत किया जा सकता है। रीसेट कमांड एक रिपॉजिटरी को उसके इतिहास में पिछले बिंदु पर वापस लाता है।
यह गाइड चर्चा करता है कि git pull ऑपरेशन को पूर्ववत करने के लिए git reset कमांड का उपयोग कैसे करें। यह एक उदाहरण के माध्यम से चलता है ताकि आप सीख सकें कि इस कमांड का उपयोग कैसे करें।
Git Pull: एक ब्रेकडाउन
git pull कमांड आपके स्थानीय रिपॉजिटरी को इसके रिमोट समकक्ष के साथ अद्यतित लाता है।
जब आप git pull कमांड चलाते हैं, तो Git जांच करेगा कि क्या git fetch कमांड चलाकर रिमोट रिपॉजिटरी में कोई परिवर्तन किए गए हैं। फिर, यदि परिवर्तन किए गए हैं, तो फेच कमांड उन परिवर्तनों के लिए मेटाडेटा पुनर्प्राप्त करेगा।
इसके बाद, git pull कमांड git merge चलाता है। यह प्रक्रिया git fetch कमांड द्वारा खोजे गए किसी भी परिवर्तन को आपकी स्थानीय मशीन पर मर्ज करती है। इसका मतलब है कि जब आप git pull चलाते हैं तो आपके रिपॉजिटरी का स्थानीय संस्करण रिमोट रिपॉजिटरी से मेल खाने के लिए बदल जाएगा।
Git Pull को पूर्ववत करें
git pull कमांड को स्पष्ट रूप से पूर्ववत करने के लिए कोई कमांड नहीं है। विकल्प git reset का उपयोग करना है, जो एक रिपॉजिटरी को पिछले कमिट पर वापस लाता है।
हम ck-git नामक एक प्रोजेक्ट पर काम कर रहे हैं। एक सहयोगी ने अभी प्रोजेक्ट के रिमोट संस्करण में एक कमिट पुश किया है जो GitHub पर संग्रहीत है। हम इन परिवर्तनों को पुनः प्राप्त करना चाहते हैं।
इन परिवर्तनों को पुनः प्राप्त करने के लिए, हम git pull कमांड का उपयोग करने जा रहे हैं:
git pull
यह कमांड एक संदेश लौटाता है जो हमें सूचित करता है कि इसने मेटाडेटा को खींच लिया है और रिमोट रिपॉजिटरी से हमारे स्थानीय मशीन पर परिवर्तनों को डाउनलोड कर लिया है:
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/ck-git 77e7fc0..a8336fa master -> origin/master Updating 77e7fc0..a8336fa Fast-forward README.md | 1 + 1 file changed, 1 insertion(+)
मास्टर ब्रांच पर केवल README.md फ़ाइल बदली है। इस फ़ाइल में टेक्स्ट की एक अतिरिक्त लाइन है जो पिछले कमिट में मौजूद नहीं थी।
अब, मान लें कि हम इस ऑपरेशन को पूर्ववत करना चाहते हैं। हम इस परिवर्तन को अपने स्थानीय रिपॉजिटरी में स्वीकार करने के लिए तैयार नहीं हैं। ऑपरेशन को पूर्ववत करने के लिए, हमें git reset चलाने की आवश्यकता है।
git reset कमांड चलाने से पहले, आपको पता होना चाहिए कि यह कमांड आपके द्वारा रिपॉजिटरी में किए गए किसी भी अनकमिटेड परिवर्तन को हटा देगा। रीसेट कमांड चलाने से पहले सुनिश्चित करें कि आपने उन सभी परिवर्तनों को कमिट कर दिया है जिन्हें आप सहेजना चाहते हैं।
आइए Git में अंतिम कमिट पर रिपॉजिटरी की पिछली स्थिति में वापस जाने के लिए git reset कमांड चलाएं:
git reset 77e7fc0 --hard
यह कमांड हमारे रिपॉजिटरी को अंतिम कमिट पर उसकी स्थिति में वापस लाता है:
Unstaged changes after reset: M README.md
--hard फ्लैग Git को बताता है कि हम किसी विशेष कमिट पर कोड की सामग्री के साथ अपनी वर्किंग डायरेक्टरी को बदलना चाहते हैं।
वैकल्पिक रूप से, हम यह निर्दिष्ट करने के लिए HEAD कथन का उपयोग कर सकते थे कि हम किस कमिट पर वापस लौटना चाहते हैं:
git reset HEAD~1 --hard
यह कथन हमारे रिपॉजिटरी को एक कमिट पीछे ले जाता है। हम आगे के कमिट्स पर वापस जाने के लिए संख्या 1 को बदल सकते हैं।
हमारी README.md फ़ाइल अब उस स्थिति में है जो अंतिम कमिट के दौरान थी। यदि आपने git pull कमांड चलाने से पहले फ़ाइल में कोई परिवर्तन किए थे जो कमिट नहीं किए गए थे, तो वे परिवर्तन अप्राप्य हो जाएंगे। ऐसा इसलिए है क्योंकि Git केवल उन्हीं परिवर्तनों को सहेजता है जिन्हें कमिट किया गया हो।
निष्कर्ष
आप git pull ऑपरेशन को पूर्ववत करने के लिए git reset कमांड का उपयोग कर सकते हैं। git reset कमांड आपके रिपॉजिटरी को उसके इतिहास में एक विशेष बिंदु पर रीसेट करता है। यदि आपने git pull चलाने से पहले फ़ाइलों में परिवर्तन किए थे जिन्हें आपने कमिट नहीं किया था, तो वे परिवर्तन चले जाएंगे।
git reset कमांड चलाने से पहले, सुनिश्चित करें कि आपने किसी भी परिवर्तन को कमिट कर दिया है। git reset कमांड आपको किसी भी अनकमिटेड परिवर्तन को खोने का कारण बनेगी।
अब आपके पास प्रो की तरह git pull कमांड को पूर्ववत करने का ज्ञान है!