गेट स्टैश पॉप को त्यागें


133

मैंने एक पॉप स्टैश पॉप किया और अब मेरे पास एक टन का संघर्ष है। मैंने अपने सभी हाल के कोड को पहले कर दिया था git stash pop, तो क्या अंतिम प्रतिबद्ध पर वापस जाने और सभी संघर्षों से छुटकारा पाने और git stash popइंजेक्शन लगाने का एक तरीका है ?


क्या आप अभी भी पॉपप किए गए कार्य को सहेजना चाहते हैं, या क्या आप इसे फिर से नहीं देखना चाहते हैं?
jscs

1
नहीं, मैं नहीं चाहता कि कटा हुआ काम हो। मैंने 4 महीने पहले स्टैश किया था और सुनिश्चित नहीं था कि वहां क्या है?
jdog

2
क्या आप उन चीजों के बारे में परवाह करते हैं जो चोरी करने से पहले बेकार हो गई थीं?
एंड्रयू मार्शल

4 महीने पहले वाले या आज वाले? मैं वही चाहता हूं जो मेरे पास एक घंटे पहले था।
jdog

5
यदि आप git stashतब टकराव करते हैं, तो सूची से स्टैच गिर नहीं जाएगा। तो git reset --hard HEADपॉपप किए गए काम को नष्ट नहीं करता है।
jwadsack

जवाबों:


189

स्टैकओवरफ्लो पर यह पहले ही पूछा और उत्तर दिया जा चुका है (देखें कि पिछली प्रतिक्रिया के लिए गिट रिपॉजिटरी को वापस कैसे लाया जाए? ), लेकिन सरल उत्तर है:

git reset --hard HEAD

यह आपकी समस्या का ध्यान रखना चाहिए। ध्यान दें कि यह रिपॉजिटरी से सभी अनकम्यूटेड परिवर्तनों को हटा देता है।

ध्यान दें कि यदि संघर्ष हैं, तो स्टाॅश संरक्षित है। से गुप्त कोष डॉक्स :

राज्य को लागू करना संघर्षों के साथ विफल हो सकता है; इस स्थिति में, इसे स्‍टैश सूची से नहीं हटाया जाता है। आपको हाथ से संघर्ष को हल करने और git stash dropबाद में मैन्युअल रूप से कॉल करने की आवश्यकता है ।


1
यह आपके स्थानीय रेपो को अंतिम वचन में वापस कर देगा। आपको बिना किसी मुद्दे के अपने सभी कमिट्स (आखिरी पुश के बाद) पुश करने में सक्षम होना चाहिए। यदि यह काम नहीं करता है, तो परिणामों को अपने पिछले प्रश्न पर वापस पोस्ट करें)। सौभाग्य।
माइकलमिलोम

28
लेकिन इससे आपका स्टैश खो जाएगा
। वेबर

19
@ K। यदि git stash popसंघर्ष में परिणाम होता है, तो स्टाॅश सूची से हटा नहीं दिया जाएगा।
दाईवेई

1
मैं नहीं कर रहा हूँ यकीन है कि जो है 'वास्तव में आप गुप्त कोष में नहीं खोएंगे', मैं सिर्फ खो मेरा upvoting
एंथोनी

4
एक समाधान imho के ज्यादा नहीं है, क्योंकि यह बताते हैं कि आप होगा uncommited परिवर्तन खो देते हैं।
इवान पी

4

रीसेट को विशिष्ट फ़ाइलों पर भी बुलाया जा सकता है:

git reset HEAD <filename>...

आप किसी फ़ाइल को हार्ड रीसेट नहीं कर सकते हैं। लेकिन आप बाद में चेकआउट के साथ परिवर्तनों को वापस कर सकते हैं:

git checkout -- <filename>...

माइकल स्टिलम उत्तर में ल्यूक द्वारा बताए अनुसार, आप संरक्षित होंगे।

यह तब उपयोगी होता है जब आप अपने अन-प्रतिबद्ध स्थानीय परिवर्तनों को नहीं खोना चाहते।


0

यदि आप कभी भी पॉपअप स्‍टैश में काम नहीं देखना चाहते हैं, तो यह एक हार्ड रीसेट की तरह सरल है:

git reset --hard HEAD

यह इस तथ्य को नजरअंदाज करने के लिए कहता है कि आपने अपनी कार्यशील निर्देशिका में परिवर्तन नहीं किए हैं, और कार्यशील निर्देशिका, स्टेजिंग क्षेत्र, और आपके द्वारा निर्दिष्ट वचन के लिए सिर सेट करता है - इस मामले में, मौजूदा HEAD, जिसमें आपके सभी काम शामिल हैं 'बस प्रतिबद्ध है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.