त्रुटि संदेश "आपके स्थानीय परिवर्तन निम्नलिखित फाइलों में मर्ज द्वारा ओवरराइट हो जाएंगे" Git संस्करण नियंत्रण तंत्र में होता है। यह त्रुटि तब होती है जब आपने एक फ़ाइल को संशोधित किया है जिसमें रिमोट रिपॉजिटरी में भी संशोधन हैं।

यह त्रुटि संदेश टाला जाता है यदि कोई अनकमिटेड फाइलें नहीं हैं जिनमें रिमोट रिपॉजिटरी में भी संशोधन हैं। जब इस संदेश का अनुभव होता है, तो अपने अन्य टीम सदस्यों से परामर्श करना और उनकी राय पूछना सबसे अच्छा है। चाहे आप अपने स्थानीय परिवर्तनों को मर्ज करना चाहते हैं या रिपॉजिटरी में मौजूद संस्करण को रखना चाहते हैं, सभी को बोर्ड पर रखना सबसे अच्छा है।
रिपॉजिटरी क्या हैं? Git में पुश और पुल क्या हैं?
एक रिपॉजिटरी कोड के लिए एक प्रकार का स्टोरेज है जिसे लगातार संशोधित किया जाता है और GitHub संस्करण नियंत्रण तंत्र के माध्यम से टीम सदस्यों द्वारा प्राप्त किया जाता है। एक 'पुल' का मतलब है कि आप रिपॉजिटरी के नवीनतम संस्करण को अपने स्थानीय स्टोरेज/IDE (इंटीग्रेटेड डेवलपमेंट एनवायरनमेंट) जैसे PyCharm आदि पर खींच रहे हैं।
पुल के बाद, आप कोड में परिवर्तन करते हैं या अधिक सुविधाएँ जोड़ते हैं। एक बार जब आप कर लेते हैं, तो आप कोड को रिपॉजिटरी पर 'पुश' करते हैं ताकि परिवर्तन सहेजे जाएं और जोड़ किए जाएं। कोड अन्य लोगों के लिए भी सुलभ हो जाता है।
यदि आप Github संस्करण नियंत्रण में नए हैं, तो यह अनुशंसा की जाती है कि आप पहले सभी बुनियादी बातों से गुजरें। इस लेख में, हम मानते हैं कि आपके पास पहले से ही बुनियादी ज्ञान है और सभी अंदर और बाहर जानते हैं।
'आपके स्थानीय परिवर्तन निम्नलिखित फाइलों में मर्ज द्वारा ओवरराइट हो जाएंगे' कैसे ठीक करें?
इस त्रुटि संदेश का समाधान इस बात पर निर्भर करता है कि आप क्या करना चाहते हैं। आप अपने स्थानीय परिवर्तनों को त्याग सकते हैं और रिपॉजिटरी में मौजूद कोड को खींच सकते हैं या आप अपने स्थानीय परिवर्तनों को स्टैश में सहेज सकते हैं और रिपॉजिटरी से संस्करण खींच सकते हैं। यह सब आपकी प्राथमिकता पर निर्भर करता है।
इसलिए, हम अनुशंसा करते हैं कि आप अपने टीम सदस्यों के साथ परामर्श करें और सुनिश्चित करें कि आगे बढ़ने से पहले आप सभी एक ही पृष्ठ पर हैं। यदि आप गलत तरीके से कमिट करते हैं या गलत संस्करण पुश करते हैं, तो यह पूरी टीम को प्रभावित कर सकता है।
विधि 1: स्थानीय परिवर्तनों को ओवरराइट करने के लिए पुल को बाध्य करना
यदि आप स्थानीय रूप से किए गए परिवर्तनों की परवाह नहीं करते और रिपॉजिटरी से कोड प्राप्त करना चाहते हैं, तो आप पुल को बाध्य कर सकते हैं। यह आपके कंप्यूटर पर किए गए सभी स्थानीय परिवर्तनों को ओवरराइट कर देगा और रिपॉजिटरी में संस्करण की एक डुप्लिकेट कॉपी दिखाई देगी।
अपने IDE में निम्नलिखित कमांड निष्पादित करें:
git reset --hard git pull
यह तुरंत आपके सभी स्थानीय परिवर्तनों को नष्ट कर देगा इसलिए सुनिश्चित करें कि आप जानते हैं कि आप क्या कर रहे हैं और आपको अपने स्थानीय परिवर्तनों की आवश्यकता नहीं है।
विधि 2: दोनों परिवर्तनों को रखना (स्थानीय और रिपॉजिटरी से)
यदि आप दोनों परिवर्तनों को रखना चाहते हैं (स्थानीय रूप से किए गए परिवर्तन और रिपॉजिटरी में मौजूद परिवर्तन), तो आप अपने परिवर्तनों को जोड़ और कमिट कर सकते हैं। जब आप पुल करेंगे, तो स्पष्ट रूप से एक मर्ज संघर्ष होगा। यहां आप अपने IDE में टूल्स (जैसे Difftool और mergetool) का उपयोग करके कोड के दो टुकड़ों की तुलना कर सकते हैं और यह निर्धारित कर सकते हैं कि किन परिवर्तनों को रखना है और किन्हें हटाना है। यह मध्य मार्ग है; कोई परिवर्तन तब तक नहीं खोएगा जब तक आप उन्हें मैन्युअली नहीं हटाते।
git add $the_file_under_error git commit git pull
जब आपको मर्ज संघर्ष मिले, तो उन संघर्ष समाधान टूल्स को पॉप करें और लाइन दर लाइन जांचें।
विधि 3: दोनों परिवर्तनों को रखना लेकिन कमिट न करना
यह स्थिति समय-समय पर होती है जहां डेवलपर्स कमिट करने के लिए तैयार नहीं होते क्योंकि कुछ आंशिक रूप से टूटा हुआ कोड है जिसे आप डीबग कर रहे हैं। यहां हम परिवर्तनों को सुरक्षित रूप से स्टैश कर सकते हैं, रिपॉजिटरी से संस्करण खींच सकते हैं, और फिर अपने कोड को अनस्टैश कर सकते हैं।
git stash save --keep-index
या
git stash
git pull git stash pop
यदि आप स्टैश पॉप करने के बाद कुछ संघर्ष हैं, तो आपको उन्हें सामान्य तरीके से हल करना चाहिए। आप कमांड का भी उपयोग कर सकते हैं:
git stash apply
pop के बजाय यदि आप संघर्षों के कारण स्टैश्ड कोड खोने के लिए तैयार नहीं हैं।
यदि मर्ज आपके लिए एक व्यवहार्य विकल्प नहीं लगता है, तो रीबेस करने पर विचार करें। रीबेसिंग कमिट के अनुक्रम को एक नए बेस कमिट पर ले जाने या संयोजित करने की प्रक्रिया है। रीबेसिंग के मामले में, कोड को बदलें:
git stash git pull --rebase origin master git stash pop
विधि 4: अपने कोड के 'विशिष्ट' भागों में परिवर्तन करना
यदि आप कोड के विशिष्ट भागों में परिवर्तन करना चाहते हैं और सब कुछ बदलना नहीं चाहते हैं, तो आप जो कुछ भी ओवरराइट नहीं करना चाहते हैं उसे कमिट कर सकते हैं और फिर विधि 3 का पालन कर सकते हैं। आप उन परिवर्तनों के लिए निम्नलिखित कमांड का उपयोग कर सकते हैं जिन्हें आप रिपॉजिटरी में मौजूद संस्करण से ओवरराइट करना चाहते हैं:
git checkout path/to/file/to/revert
या
git checkout HEAD^ path/to/file/to/revert
साथ ही, आपको यह सुनिश्चित करना होगा कि फ़ाइल इस माध्यम से स्टेज्ड नहीं है:
git reset HEAD path/to/file/to/revert
फिर पुल कमांड के साथ आगे बढ़ें:
git pull
यह तब रिपॉजिटरी से संस्करण प्राप्त करने का प्रयास करेगा।