यदि आपके द्वारा अपने स्थानीय मशीन पर किए गए अप्रतिबद्ध परिवर्तनों और दूरस्थ रिपॉजिटरी की सामग्री के बीच कोई विरोध है, तो आप दूरस्थ रिपॉजिटरी से कोड नहीं खींच सकते। यह आपको उस कोड को ओवरराइट करने से बचाता है जिसे आप रखना चाहते हैं।
इस गाइड में, हम "निम्न फाइलों में आपके स्थानीय परिवर्तनों को मर्ज द्वारा अधिलेखित कर दिया जाएगा" त्रुटि और त्रुटि क्यों उठाई जाती है, इस पर चर्चा करते हैं। हम एक उदाहरण के माध्यम से भी चलेंगे ताकि आप सीख सकें कि इस त्रुटि को कैसे हल किया जाए।
निम्न फ़ाइलों में आपके स्थानीय परिवर्तन मर्ज द्वारा अधिलेखित कर दिए जाएंगे
रिपोजिटरी का आपका स्थानीय संस्करण अक्सर रिमोट रिपोजिटरी से भिन्न होगा। यह गिट की एक मुख्य विशेषता है:जब तक आप तैयार नहीं होते तब तक आप उन्हें दूरस्थ रिपॉजिटरी में धकेले बिना स्थानीय रूप से परिवर्तन कर सकते हैं।
जब आप किसी दूरस्थ रिपॉजिटरी से कोड खींचते हैं, तो Git उस रिपॉजिटरी की सामग्री को पुनः प्राप्त करेगा और उन्हें आपकी स्थानीय मशीन में सहेजेगा। यह केवल तभी हो सकता है जब आपने उन फ़ाइलों में सभी परिवर्तन किए हों जिन्हें आप सहेजना चाहते हैं।
यदि आप पहले परिवर्तन किए बिना कोड खींचने का प्रयास करते हैं, तो आप "निम्न फ़ाइलों में आपके स्थानीय परिवर्तन मर्ज द्वारा अधिलेखित हो जाएंगे" त्रुटि देख सकते हैं। यह केवल तभी होगा जब आपने एक फ़ाइल को संशोधित किया है जिसे रिपोजिटरी के दूरस्थ संस्करण में भी बदल दिया गया है।
एक उदाहरण परिदृश्य
आइए ck-git नामक Git रिपॉजिटरी में एक संशोधन करें। सबसे पहले, आइए इस रिपॉजिटरी की एक प्रति क्लोन करें:
git clone https://github.com/career-karma-tutorials/ck-git
अब हमारे पास हमारे स्थानीय मशीन पर भंडार की एक प्रति है। इस रिपॉजिटरी में एक फाइल है:README.md। इसकी सामग्री हैं:
# ck-git
हम GitHub पर जा रहे हैं और सर्वर पर इस फाइल को संशोधित करेंगे। हमारी फ़ाइल में अब सामग्री है:
81% प्रतिभागियों ने कहा कि बूटकैंप में भाग लेने के बाद उन्हें अपनी तकनीकी नौकरी की संभावनाओं के बारे में अधिक आत्मविश्वास महसूस हुआ। आज ही एक बूटकैंप से मिलान करें।
बूटकैंप शुरू करने से लेकर अपनी पहली नौकरी खोजने तक, औसत बूटकैंप ग्रेड ने करियर संक्रमण में छह महीने से भी कम समय बिताया।
# Career Karma Git
भंडार का हमारा स्थानीय संस्करण अब भंडार के दूरस्थ संस्करण पर मूल मास्टर शाखा से अलग है।
हमारे संस्करण में वह कोड होता है जो रिमोट रिपोजिटरी में था जब हमने कोड खींचा था। रिमोट रिपॉजिटरी में वह बदलाव होता है जो हमने README.md में किया है।
अब, मान लें कि हम अपनी स्थानीय मशीन पर README.md बदलते हैं:
# CK Git
हमने अपनी फाइल बदल दी है। अब, हम अपने रिमोट रिपॉजिटरी में किए गए परिवर्तनों को खींचने का प्रयास करते हैं ताकि हम उन्हें अपनी स्थानीय मशीन में सहेज सकें:
git pull
यह आदेश एक त्रुटि देता है:
... Updating a30b784..ec281fc error: Your local changes to the following files would be overwritten by merge: README.md Please commit your changes or stash them before you merge. Aborting
हमने संक्षिप्तता के लिए इस आदेश की प्रतिक्रिया को छोटा कर दिया है। हमें जिस संदेश पर ध्यान देना चाहिए वह है "निम्न फ़ाइलों में आपके स्थानीय परिवर्तन मर्ज द्वारा अधिलेखित हो जाएंगे"।
समाधान
अब हमारी फाइल की दो प्रतियां हैं:एक हमारी स्थानीय मशीन पर और एक हमारे रिमोट रिपोजिटरी में। जब हम अपने रिमोट रिपॉजिटरी से अपना कोड खींचते हैं, तो Git अनिश्चित होता है कि फ़ाइल का कौन सा संस्करण बना रहना चाहिए।
इस त्रुटि को हल करने के लिए, हम या तो अपना कोड छिपा सकते हैं या अपना कोड कमिट कर सकते हैं।
अपना कोड कमिट करने के लिए, हम अपनी README.md फ़ाइल को एक कमिट में जोड़ सकते हैं और उस फ़ाइल से युक्त एक कमिट बना सकते हैं:
git add README.md git commit -m "docs: Update README.md"
यह हमारे प्रोजेक्ट के प्रतिबद्ध इतिहास में हमारे स्थानीय मशीन पर README.md में किए गए परिवर्तनों को जोड़ देगा। Git को अब पता चल जाएगा कि हम इन बदलावों को रखना चाहते हैं।
दूसरा उपाय है हमारे परिवर्तनों को छिपाना। इससे हम अपने परिवर्तनों को बाद में देखने के लिए सहेज सकते हैं। हम git stash कमांड का उपयोग करके अपना कोड स्टैश कर सकते हैं:
git stash
यह आदेश हमारे परिवर्तन को एक छिपाने की जगह में सहेजता है (हमारा कोड बाद के लिए "दूर रखा गया है")। अब जब हमने अपना कोड छिपा दिया है, तो हम अपने रिमोट रिपॉजिटरी से कोड को सुरक्षित रूप से खींच सकते हैं:
git stash pop
गिट स्टैश में कोड को गिट स्टैश पॉप कमांड चलाकर देखा जा सकता है। यह हमें उन परिवर्तनों को देखने देगा जो हमने अपनी फ़ाइल में किए हैं जो हमने अपने भंडार में नहीं किए हैं। इसका मतलब यह है कि अगर हम तय करते हैं कि हम बाद में फ़ाइल में बदलाव करना चाहते हैं, तो हम ऐसा कर सकते हैं।
निष्कर्ष
"निम्न फ़ाइलों में आपके स्थानीय परिवर्तन मर्ज द्वारा अधिलेखित हो जाएंगे" त्रुटि तब होती है जब आप किसी दूरस्थ रिपॉजिटरी को अपनी स्थानीय मशीन पर खींचने का प्रयास करते हैं जिसकी सामग्री रिपॉजिटरी के आपके स्थानीय संस्करण की सामग्री के साथ संघर्ष करती है।
इस त्रुटि को ठीक करने के लिए, या तो अपने परिवर्तनों को बाद के लिए दूर रखें या अपने परिवर्तनों को प्रतिबद्ध करें। अब आपके पास एक विशेषज्ञ की तरह इस त्रुटि को ठीक करने के लिए आवश्यक ज्ञान है!