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

Git "Your local changes would be overwritten by checkout" समाधान

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

Git वर्जन कंट्रोल आपको डेवलपमेंट की अलग लाइनें बनाए रखने देता है, जिन्हें ब्रांच कहा जाता है। एक ब्रांच पर परिवर्तन दूसरी ब्रांच पर तब तक प्रतिबिंबित नहीं होते जब तक आप दोनों ब्रांच को मर्ज नहीं करते।

जब आप किसी ब्रांच पर नेविगेट करते हैं, तो आप रिपॉजिटरी को उसके इतिहास में एक विशेष समय पर देख सकते हैं और आवश्यक परिवर्तन कर सकते हैं। जब आप तैयार हों तो आपको किए गए परिवर्तनों को कमिट करना चाहिए ताकि Git आपके प्रोजेक्ट के विकास को ट्रैक कर सके।

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

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

हम एक रिपॉजिटरी को क्लोन करने जा रहे हैं जिसमें README.md नामक एक फ़ाइल है:

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

README.md फ़ाइल की सामग्री इस प्रकार है:

# ck-git

हमारे रिपॉजिटरी में दो ब्रांच हैं: development और master। हमारे स्थानीय वर्किंग डायरेक्टरी में, हम मूल master ब्रांच पर README.md फ़ाइल को बदलने जा रहे हैं:

# Career Karma Git

हमारी master ब्रांच अब हमारे रिमोट रिपॉजिटरी से अलग है। हम अपनी development ब्रांच पर स्विच करने जा रहे हैं और इसकी README की सामग्री को इस तरह बदल देंगे:

# Career Karma [Development]

हम इन कमांड्स को निष्पादित करके development ब्रांच पर इस फ़ाइल को बदल सकते हैं:

git checkout development
nano README.md

अगला, master ब्रांच पर वापस स्विच करें, ब्रांच पर किए गए परिवर्तनों को कमिट करें, और उन्हें हमारे रिमोट रिपॉजिटरी में पुश करें:

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

git checkout कमांड हमें master ब्रांच पर स्विच करने देता है। समीक्षा में, हमारा रिमोट रिपॉजिटरी अब इसमें शामिल है:

  • development ब्रांच पर एक संशोधित README.md
  • master ब्रांच जो एक कमिट आगे है

अब, आइए master ब्रांच पर फिर से README.md को संशोधित करें:

# Tutorials

इसका मतलब है कि दोनों ब्रांच में रिमोट master ब्रांच और स्थानीय के बीच अंतर हैं। आइए इन परिवर्तनों के साथ अपनी development ब्रांच पर स्विच करने का प्रयास करें:

git checkout development

यह कमांड एक त्रुटि संदेश लौटाता है:

error: Your local changes to the following files would be overwritten by checkout: README.md
Please commit your changes or stash them before you switch branches.
Aborting

समाधान

क्योंकि हमारी development और master ब्रांच में अनकमिटेड परिवर्तन हैं, Git चेकआउट के साथ आगे नहीं बढ़ सकता। यदि Git आगे बढ़ता, तो master ब्रांच पर हमने README.md में जो अनकमिटेड परिवर्तन किए हैं, वे सेव नहीं होंगे।

हम इस त्रुटि को दो तरीकों से ठीक कर सकते हैं। पहला, हम master ब्रांच पर अपने परिवर्तनों को कमिट कर सकते हैं:

git add README.md
git commit -m "docs: Add tutorials message to README.md file"
git push

इन कमांड्स में, हम README.md फ़ाइल को स्टेजिंग एरिया में जोड़ते हैं, स्टेजिंग एरिया से सभी फ़ाइलों को एक कमिट में जोड़ते हैं, और अपने परिवर्तन को रिमोट रिपॉजिटरी में पुश करते हैं।

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

वैकल्पिक रूप से, हम अपने परिवर्तनों को बाद के लिए स्टैश कर सकते हैं। यह एक अच्छा समाधान है यदि आप अपने परिवर्तनों को बाद में पहुंच योग्य बनाना चाहते हैं जब आप अभी तक परिवर्तनों को कमिट में जोड़ने के लिए तैयार नहीं हैं। अपने परिवर्तनों को स्टैश करने के लिए, आप git stash कमांड चला सकते हैं:

git stash save README.md

यह हमारी README.md फ़ाइल को एक स्टैश में सेव करेगा। जब भी हम इस फ़ाइल को फिर से देखना चाहते हैं, तो हम stash pop कमांड का उपयोग करके स्टैश तक पहुंच सकते हैं:

git stash pop

यह कमांड हमारी README.md फ़ाइल को हमारे रिपॉजिटरी में पुनर्स्थापित करेगा। "स्टैशिंग" "बाद के लिए सेव करने" का दूसरा तरीका है। स्टैश आपके परिवर्तनों के कमिट नहीं बनाते।

उपरोक्त समाधानों में से एक चलाने के बाद, हम development ब्रांच पर सफलतापूर्वक नेविगेट कर सकते हैं:

git checkout development

यह कमांड हमारी ब्रांच को "development" पर स्विच करता है और हमारे टर्मिनल में इस परिवर्तन के बारे में सूचित करता है:

Switched to branch 'development'

हमने समस्या हल कर ली है।

निष्कर्ष

Git "Your local changes to the following files would be overwritten by checkout" त्रुटि तब होती है जब आप उन परिवर्तनों को कमिट या स्टैश किए बिना दो ब्रांच पर परिवर्तन करते हैं और ब्रांच के बीच नेविगेट करने का प्रयास करते हैं।

आप इस समस्या को या तो अपने परिवर्तनों को बाद के लिए स्टैश करके या उन्हें कमिट में जोड़कर ठीक कर सकते हैं।

अब आपके पास इस त्रुटि को प्रो की तरह ठीक करने का ज्ञान है!

  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