अब तक दिए गए उत्तर आदर्श नहीं हैं क्योंकि उन्हें मर्ज संघर्षों को हल करने के लिए बहुत सारे अनावश्यक काम की आवश्यकता होती है, या वे बहुत अधिक धारणाएं बनाते हैं जो अक्सर झूठे होते हैं। यह पूरी तरह से कैसे करना है। लिंक मेरी अपनी साइट पर है।
आपने उन सभी परिवर्तनों को रद्द my_branchकर दिया है, जिनसे आप masterसभी परिवर्तनों के लिए प्रतिबद्ध होना चाहते हैं my_branch।
उदाहरण
git merge master
git stash -u
git checkout master
git stash apply
git reset
git add example.js
git commit
git checkout .
git clean -f -d
git checkout my_branch
git merge master
git stash pop
व्याख्या
masterअपनी शाखा में विलय करके शुरू करें , क्योंकि आपको आखिरकार वैसे भी करना होगा, और अब किसी भी संघर्ष को हल करने का सबसे अच्छा समय है।
-uविकल्प (उर्फ --include-untracked) में git stash -uआप जब आप बाद में कर ट्रैक न किए गए फ़ाइलें खोने से रोकता है git clean -f -dभीतर master।
इसके बाद git checkout masterयह महत्वपूर्ण है कि आप ऐसा न करें git stash pop, क्योंकि बाद में आपको इस स्टैश की आवश्यकता होगी। में बनाए गए गुप्त कोष में पॉप हैं my_branchऔर फिर कर git stashमें master, आप अनावश्यक मर्ज संघर्ष जब आप बाद में है कि गुप्त कोष में लागू कारण होगा my_branch।
git resetसे उत्पन्न होने वाली हर चीज को अस्थिर करता है git stash apply। उदाहरण के लिए, फ़ाइलें जो स्टैश में संशोधित की गई हैं, लेकिन master"हमारे द्वारा हटाए गए" संघर्ष के रूप में मौजूद नहीं हैं ।
git checkout .और git clean -f -dजो कुछ भी प्रतिबद्ध नहीं है उसे छोड़ दें: सभी ट्रैक की गई फ़ाइलों और सभी अनट्रैक की गई फ़ाइलों और निर्देशिकाओं में परिवर्तन। वे पहले से ही स्टैश में सहेजे जाते हैं और यदि वापस छोड़ दिया जाता है, masterतो वापस स्विच करने पर अनावश्यक मर्ज संघर्ष हो सकता है my_branch।
अंतिम git stash popमूल पर आधारित होगा my_branch, और इसलिए किसी भी मर्ज संघर्ष का कारण नहीं होगा। हालाँकि, अगर आपके स्टैच में अनट्रैक की गई फाइलें हैं, जो आपने मास्टर करने के लिए प्रतिबद्ध हैं, तो git को यह शिकायत होगी कि यह "स्टैक्ड से अनट्रैक फाइल्स को रिस्टोर नहीं कर सका"। इस विरोध को हल करने के लिए, अपने काम के पेड़, तो से उन फ़ाइलों को हटाने git stash pop, git add .और git reset।