जैसा कि @bentolo ने उल्लेख किया है, आप मैन्युअल रूप से उन फ़ाइलों को हटा सकते हैं जिनके बारे में शिकायत है, शाखाओं को स्विच करें, और फिर उन्हें मैन्युअल रूप से वापस जोड़ें। लेकिन मैं व्यक्तिगत रूप से "गिट के भीतर" रहना पसंद करता हूं।
ऐसा करने का सबसे अच्छा तरीका है कि स्टैश को ब्रांच में बदलना। एक बार यह एक शाखा है जिसे आप सामान्य शाखा से संबंधित तकनीकों / उपकरणों का उपयोग करके सामान्य रूप से काम कर सकते हैं जिन्हें आप जानते हैं और प्यार करते हैं। यह वास्तव में सूचीबद्ध त्रुटि नहीं होने पर भी स्टैग के साथ काम करने के लिए एक उपयोगी सामान्य तकनीक है। यह अच्छी तरह से काम करता है क्योंकि वास्तव में एक आवरण कवर (पीएस देखें) के तहत एक प्रतिबद्ध है।
एक शाखा को एक टकराव परिवर्तित करना
निम्नलिखित एचएएडी के आधार पर एक शाखा बनाता है जब स्टैश बनाया गया था और फिर स्टैश लागू करता है (यह इसे प्रतिबद्ध नहीं करता है)।
git stash branch STASHBRANCH
"स्लैश शाखा" के साथ काम करना
अब आप आगे क्या करते हैं, यह स्टैश के बीच संबंध पर निर्भर करता है और आपकी लक्ष्य शाखा (जिसे मैं ORIGINALBRANCH कहूंगा) अब है।
विकल्प 1 - स्टैब ब्रांच को सामान्य रूप से रीबेज करें (स्टैश के बाद बहुत सारे बदलाव)
यदि आपने अपने ORIGINALBRANCH में बहुत से बदलाव किए हैं, तो आप शायद किसी स्थानीय शाखा की तरह STASHBRANCH का सबसे अच्छा इलाज कर रहे हैं। STASHBRANCH में अपने परिवर्तन करें, इसे ORIGINALBRANCH पर रीबैज़ करें, फिर ORIGINALBRANCH पर स्विच करें और इसके ऊपर STASHBRANCH परिवर्तनों को मर्ज करें। यदि संघर्ष होते हैं तो उन्हें सामान्य रूप से संभालें (इस दृष्टिकोण का एक लाभ यह है कि आप संघर्षों को देख और हल कर सकते हैं)।
विकल्प 2 - मूल शाखा को स्लैश से मिलान करने के लिए रीसेट करें (स्लैश के बाद से सीमित परिवर्तन)
यदि आप अभी कुछ मंचन किए गए परिवर्तनों को ध्यान में रखते हुए टकराए हैं, तो प्रतिबद्ध हैं, और आप जो कुछ करना चाहते हैं, वह अतिरिक्त परिवर्तन है कि जहाँ आप मंचित नहीं हुए हैं, आप निम्नलिखित कार्य कर सकते हैं। यह आपकी कार्यशील प्रति को बदले बिना आपकी मूल शाखा और सूचकांक पर वापस आ जाएगा। अंतिम परिणाम आपके काम की कॉपी में आपके अतिरिक्त बदलाव होंगे।
git symbolic-ref HEAD refs/heads/ORIGINALBRANCH
git reset
पृष्ठभूमि
स्ट्रैस कमिट हैं लाइक ब्रांच / टैग्स (पैच नहीं)
पुनश्च, यह एक पैच के रूप में एक स्टैश के बारे में सोचने के लिए आकर्षक है (जैसे यह एक पैच के रूप में एक कमेंट के बारे में सोचने के लिए लुभा रहा है), लेकिन एक स्टैश वास्तव में HEAD के खिलाफ एक प्रतिबद्ध है जब इसे बनाया गया था। जब आप आवेदन / पॉप करते हैं तो आप चेरी के समान कुछ कर रहे होते हैं। ध्यान रखें कि शाखाएं और टैग वास्तव में केवल कमिट करने के लिए संदर्भ हैं, इसलिए कई तरीकों से, एक शाखा में टैग्स, शाखाएं और टैग्स एक कमिट (और इसके इतिहास) की ओर इशारा करते हैं।
कभी-कभी जरूरत पड़ने पर भी जब आपने वर्किंग डायरेक्टरी में बदलाव नहीं किया है
PPS, आपको इस तकनीक की आवश्यकता हो सकती है - बस स्टैच के साथ --patch और / या --include-untracked का उपयोग करने के बाद। यहां तक कि काम करने वाली निर्देशिकाओं को बदलने के बिना, वे विकल्प कभी-कभी एक ऐसी स्थिति पैदा कर सकते हैं जिसे आप अभी वापस लागू नहीं कर सकते। मुझे मानना चाहिए कि क्यों पूरी तरह से समझ में नहीं आता है। कुछ चर्चा के लिए http://git.661346.n2.nabble.com/stash-refuses-to-pop-td7453780.html देखें ।