Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> प्रोग्रामिंग

Git त्रुटि: "Your local changes would be overwritten by merge" समाधान

यदि आपके स्थानीय मशीन पर किए गए अनकमिटेड परिवर्तनों और रिमोट रिपॉजिटरी की सामग्री के बीच कोई कन्फ्लिक्ट है, तो आप रिमोट रिपॉजिटरी से कोड पुल नहीं कर सकते। यह आपको उस कोड को ओवरराइट करने से बचाता है जिसे आप रखना चाहते हैं।

इस गाइड में, हम "Your local changes to the following files would be overwritten by merge" त्रुटि पर चर्चा करते हैं और यह त्रुटि क्यों उत्पन्न होती है। हम एक उदाहरण के माध्यम से भी चलेंगे ताकि आप सीख सकें कि इस त्रुटि को कैसे हल किया जाए।

Your local changes to the following files would be overwritten by merge

एक रिपॉजिटरी का आपका स्थानीय संस्करण अक्सर रिमोट रिपॉजिटरी के संस्करण से भिन्न होगा। यह Git की एक मुख्य विशेषता है: आप उन्हें रिमोट रिपॉजिटरी में पुश करने के लिए तैयार होने तक स्थानीय रूप से परिवर्तन कर सकते हैं।

जब आप एक रिमोट रिपॉजिटरी से कोड पुल करते हैं, तो Git उस रिपॉजिटरी की सामग्री को पुनः प्राप्त करेगा और उन्हें आपकी स्थानीय मशीन पर सहेज लेगा। यह केवल तभी हो सकता है जब आपने उन फ़ाइलों में किए गए सभी परिवर्तनों को कमिट कर दिया हो जिन्हें आप सहेजना चाहते हैं।

यदि आप पहले परिवर्तनों को कमिट किए बिना कोड पुल करने का प्रयास करते हैं, तो आप "Your local changes to the following files would be overwritten by merge" त्रुटि देख सकते हैं। यह केवल तभी होगा जब आपने एक ऐसी फ़ाइल को संशोधित किया हो जिसे रिमोट रिपॉजिटरी के संस्करण में भी बदल दिया गया हो।

एक उदाहरण परिदृश्य

आइए ck-git नामक एक Git रिपॉजिटरी में एक संशोधन करें। पहले, आइए इस रिपॉजिटरी की एक कॉपी क्लोन करें:

git clone https://github.com/career-karma-tutorials/ck-git

अब हमारे पास हमारी स्थानीय मशीन पर रिपॉजिटरी की एक कॉपी है। इस रिपॉजिटरी में एक फ़ाइल है: README.md। इसकी सामग्री है:

# ck-git

हम GitHub पर जाकर सर्वर पर इस फ़ाइल को संशोधित करने जा रहे हैं। हमारी फ़ाइल में अब सामग्री है:

# Career Karma Git

रिपॉजिटरी का हमारा स्थानीय संस्करण अब रिमोट रिपॉजिटरी पर origin master ब्रांच से भिन्न है।

हमारे संस्करण में वह कोड है जो रिमोट रिपॉजिटरी में था जब हमने कोड खींचा था। रिमोट रिपॉजिटरी में हमारे द्वारा 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

हमने संक्षिप्तता के लिए इस कमांड की प्रतिक्रिया को छोटा किया है। जिस संदेश पर हमें ध्यान केंद्रित करना चाहिए वह है "Your local changes to the following files would be overwritten by merge"।

समाधान

अब हमारी फ़ाइल की दो कॉपी हैं: एक हमारी स्थानीय मशीन पर और एक हमारे रिमोट रिपॉजिटरी में। जब हम अपने रिमोट रिपॉजिटरी से अपना कोड पुल करते हैं, तो Git अनिश्चित होता है कि फ़ाइल का कौन सा संस्करण रहना चाहिए।

इस त्रुटि को हल करने के लिए, हम या तो अपने कोड को स्टैश कर सकते हैं या अपने कोड को कमिट कर सकते हैं।

अपने कोड को कमिट करने के लिए, हम अपनी README.md फ़ाइल को एक कमिट में जोड़ सकते हैं और उस फ़ाइल को शामिल करते हुए एक कमिट बना सकते हैं:

git add README.md git commit -m "docs: Update README.md"

यह हमारे स्थानीय मशीन पर README.md में किए गए परिवर्तनों को हमारे प्रोजेक्ट के कमिट इतिहास में जोड़ देगा। Git अब जान जाएगा कि हम इन परिवर्तनों को रखना चाहते हैं।

दूसरा समाधान है अपने परिवर्तनों को स्टैश करना। यह हमें अपने परिवर्तनों को बाद में देखने के लिए सहेजने देता है। हम git stash कमांड का उपयोग करके अपने कोड को स्टैश कर सकते हैं:

git stash

यह कमांड हमारे परिवर्तन को एक स्टैश में सहेजता है (हमारा कोड बाद के लिए "स्टैश दूर" हो जाता है)। अब चूंकि हमने अपने कोड को स्टैश कर दिया है, हम सुरक्षित रूप से अपने रिमोट रिपॉजिटरी से कोड पुल कर सकते हैं:

git pull

Git स्टैश में कोड को git stash pop कमांड चलाकर देखा जा सकता है। यह हमें उन परिवर्तनों को देखने देगा जो हमने अपनी फ़ाइल में किए थे लेकिन अपने रिपॉजिटरी में कमिट नहीं किए थे। इसका मतलब है कि यदि हम बाद में फ़ाइल में परिवर्तनों को कमिट करने का निर्णय लेते हैं, तो हम ऐसा कर सकते हैं।

निष्कर्ष

"Your local changes to the following files would be overwritten by merge" त्रुटि तब होती है जब आप अपने स्थानीय मशीन पर एक रिमोट रिपॉजिटरी को पुल करने का प्रयास करते हैं जिसकी सामग्री आपके रिपॉजिटरी के स्थानीय संस्करण की सामग्री के साथ कन्फ्लिक्ट करती है।

इस त्रुटि को ठीक करने के लिए, या तो अपने परिवर्तनों को बाद के लिए स्टैश कर दें या अपने परिवर्तनों को कमिट करें। अब आपके पास इस त्रुटि को एक विशेषज्ञ की तरह ठीक करने का ज्ञान है!

  1. iOS पर Files ऐप से अपनी फाइलें मैनेज कैसे करें iOS पर Files ऐप से अपनी फाइलें मैनेज कैसे करें

    iOS (और iPadOS) पर सबसे कम आंका जाने वाला ऐप्स में से एक है Files ऐप। पहली नज़र में, यह एक बहुत ही सिंपल फाइल मैनेजर की तरह लग सकता है जो आपको अपने iPhone या iPad पर सिस्टम फाइलों में गहराई से गोता लगाने नहीं देता। हालांकि, हम गारंटी देते हैं कि आप इस ऐप की क्षमताओं से आश्चर्यचकित होंगे, खासकर जब म

  1. अपने म्यूजिक और लोकल फाइल्स को स्पॉटिफाई पर कैसे अपलोड करें अपने म्यूजिक और लोकल फाइल्स को स्पॉटिफाई पर कैसे अपलोड करें

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

  1. इन त्वरित सुधारों के साथ Android-to-Mac फ़ाइल ट्रांसफर समस्याएं हल करें इन त्वरित सुधारों के साथ Android-to-Mac फ़ाइल ट्रांसफर समस्याएं हल करें

    अपने Android डिवाइस को Mac से कनेक्ट करने में विफल? डेटा ट्रांसफर नहीं कर सकते? Mac पर Android फ़ाइल ट्रांसफर काम नहीं कर रहा? खैर, अगर आप लगातार खुद से ये सवाल पूछते हैं तो आप अकेले नहीं हैं! यह कई Mac उपयोगकर्ताओं द्वारा सामना की जाने वाली एक सामान्य समस्या है। Google ने हमें Android File Transfer