अब तक दिए गए उत्तर आदर्श नहीं हैं क्योंकि उन्हें मर्ज संघर्षों को हल करने के लिए बहुत सारे अनावश्यक काम की आवश्यकता होती है, या वे बहुत अधिक धारणाएं बनाते हैं जो अक्सर झूठे होते हैं। यह पूरी तरह से कैसे करना है। लिंक मेरी अपनी साइट पर है।
आपने उन सभी परिवर्तनों को रद्द 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
।