2009-12-15 18 views
274

मुझे उम्मीद है कि कोई सलाह दे सकता है।गिट स्टैश संस्करण लागू करें

मेरे पास 2 शाखाएं मास्टर हैं। डिजाइन

डिज़ाइन में काम करना मैंने एक छेड़छाड़ की और मास्टर को स्विच किया, कुछ समायोजन किए। डिज़ाइन पर वापस स्विच किया गया और एक स्टैश केवल डिजाइन शाखा में मेरे सभी परिवर्तनों को खोने के लिए लागू होता है।

मुझे उम्मीद है कि मेरा पूरा काम एक छेड़छाड़ के भीतर है क्योंकि मैंने इसे साफ़ नहीं किया है या हटा दिया है।

मैं 4 परिणाम अगर मैं एक गुप्त कोष सूची कार्य करें:

[email protected]{0}: WIP on design: f2c0c72... Adjust Password Recover Email 
[email protected]{1}: WIP on design: f2c0c72... Adjust Password Recover Email 
[email protected]{2}: WIP on design: eb65635... Email Adjust 
[email protected]{3}: WIP on design: eb65635... Email Adjust 

अगर मैं git stash apply f2c0c72 कोशिश मैं एक त्रुटि हो रही है:

fatal: Needed a single revision 
f2c0c72: no valid stashed state found 

मैं एक विशिष्ट गुप्त कोष में कैसे लागू कर सकते हैं?

आशा है कि कोई मदद कर सके !!

+8

ध्यान दें कि अब आपके पास है (Q4 2016, गिट 2.11) सिंटैक्स 'गिट स्टैश लागू 0' ('गिट स्टैश लागू करने के बजाय @ {0}') लागू करें। [मेरा जवाब यहां] देखें (http://stackoverflow.com/a/40543440/6309)। – VonC

उत्तर

413

स्टैश में कुंजी वास्तव में बाईं ओर [email protected]{n} आइटम हैं। तो git stash apply [email protected]{0} इत्यादि का प्रयास करें (ध्यान दें कि कुछ गोले में आपको "[email protected]{0}", जैसे zsh और मछली उद्धृत करने की आवश्यकता है)।

वास्तव में स्टैश @ {0} गिट में एक संशोधन है जिसे आप स्विच कर सकते हैं ... लेकिन git stash apply ... को यह पता लगाना चाहिए कि इसे अपने वर्तमान स्थान पर लागू करने के लिए डीटीआरटी कैसे करें।

+0

शानदार मैंने अपनी खोई हुई फाइलें पाईं। आपको बहुत बहुत धन्यवाद !!! – Lee

+68

बस एक नोट है कि कुछ गोले पर, @ {n} को छिपाना चाहिए उद्धृत किया जाना चाहिए। – Senjai

+5

आप में से उन लोगों के लिए जो नहीं जानते हैं। अपनी स्टैश सूची प्राप्त करने के लिए यह 'गिट स्टैश सूची' –

184

एक गुप्त कोष में लागू करते हैं और गुप्त कोष सूची से निकालने के लिए, चलाएँ:

git stash pop [email protected]{n} 

एक गुप्त कोष में लागू करने के लिए और गुप्त कोष में कैश में रखने, चलाएँ:

git stash apply [email protected]{n} 
+7

यह बहुत अच्छा है, दो विकल्पों के बीच अंतर करने के लिए धन्यवाद। मैंने अभी यह कोशिश की और ऐसा प्रतीत होता है कि यदि आप शाखा से एक स्टैश पॉप करते हैं- एक शाखा-बी पर, स्टैश अभी भी स्टैश कैश में रहेगा। मुझे लगता है कि ऐसा होगा कि आपके पास अभी भी पॉप/विकल्प के लिए शाखा-स्टैश को लागू करने का विकल्प होगा। वास्तव में उम्मीद है कि समझ में आया। हैंडी! – longda

+34

पावरशेल के लिए: 'गिट स्टैश पॉप "स्टैश @ {n}" ' – ankitjaininfo

+0

पावरशेल उद्धरण/सिंगल कोट्स में घुंघराले ब्रेसिज़ के साथ खुश है:' गिट स्टैश लागू करें @" {n} "' – m1kael

34

तो एक पर है

git stash apply "[email protected]{0}" 

... या परिवर्तनों को लागू और टी से दूर करने के लिए: एक Windows मशीन और PowerShell में, ऐसे ही एक के रूप में तर्क उद्धृत करने के लिए की जरूरत है वह भी छिपा सकते:

git stash pop "[email protected]{0}" 

अन्यथा उद्धरण चिह्नों के बिना आप इस त्रुटि आ सकती है:

fatal: ambiguous argument '[email protected]': unknown revision or path not in the working tree.

+0

जाहिर है मैक ओएसएक्स 10.11 पर मछली खोल का उपयोग करते समय आपको यह करना है। – lps

17

संस्करण 2.11 के बाद से, यह बहुत आसान है, आप एन ढेर संख्या के बजाय "[email protected]{n}" कहने का उपयोग कर सकते हैं । तो अब के बजाय उपयोग की:

git stash apply "[email protected]{n}" 

आप लिख सकते हैं:

git stash apply n 

उदाहरण के लिए, अपनी सूची में:

[email protected]{0}: WIP on design: f2c0c72... Adjust Password Recover Email 
[email protected]{1}: WIP on design: f2c0c72... Adjust Password Recover Email 
[email protected]{2}: WIP on design: eb65635... Email Adjust 
[email protected]{3}: WIP on design: eb65635... Email Adjust 

आप [email protected]{1} आप कर सकते थे लागू करना चाहते हैं टाइप करें:

git stash apply 1 

अन्यथा, आप यह भले ही आप 1.7.5.1 के बाद से अपने निर्देशिका में कुछ बदलाव किया है उपयोग कर सकते हैं, लेकिन आप यकीन है कि गुप्त कोष में अपने कार्यशील निर्देशिका परिवर्तनों को अधिलेखित नहीं होगा अगर यह आप एक मिल जाएगा करता होना चाहिए त्रुटि:

error: Your local changes to the following files would be overwritten by merge: 
     file 
Please commit your changes or stash them before you merge. 
1.7.5.1 को

पहले के संस्करणों में, यह अगर वहाँ कार्यशील निर्देशिका में एक परिवर्तन किया गया काम करने के लिए मना कर दिया।


Git रिलीज नोट्स:

The user always has to say "[email protected]{$N}" when naming a single element in the default location of the stash, i.e. reflogs in refs/stash. The "git stash" command learned to accept "git stash apply 4" as a short-hand for "git stash apply [email protected]{4}"

git stash apply" used to refuse to work if there was any change in the working tree, even when the change did not overlap with the change the stash recorded

संबंधित मुद्दे