git stash लागू संस्करण


512

मेरी 2 शाखाएँ हैं: गुरु | डिज़ाइन

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

मैं उम्मीद कर रहा हूं कि मेरा सारा काम एक टकराव के भीतर है क्योंकि मैंने इन्हें साफ या हटाया नहीं है।

यदि मैं एक स्टैश सूची करता हूं तो मुझे 4 परिणाम मिलते हैं:

stash@{0}: WIP on design: f2c0c72... Adjust Password Recover Email
stash@{1}: WIP on design: f2c0c72... Adjust Password Recover Email
stash@{2}: WIP on design: eb65635... Email Adjust
stash@{3}: WIP on design: eb65635... Email Adjust

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

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

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


26
ध्यान दें कि आपके पास अब (Q4 2016, Git 2.11) सिंटैक्स git stash apply 0(इसके बजाय git stash apply stash@{0}) है। मेरा जवाब यहां देखें ।
वॉन सी सी

जवाबों:


837

स्टैश की कुंजी वास्तव stash@{n}में बाईं ओर की वस्तुएं हैं। इसलिए कोशिश करें:

git stash apply stash@{0}

(ध्यान दें कि कुछ गोले में आपको बोली की जरूरत है "stash@{0}", जैसे कि ज़ीश, मछली और पॉवरशेल)।

संस्करण 2.11 के बाद से, यह बहुत आसान है, आप उपयोग करने के बजाय एन स्टैक नंबर का उपयोग कर सकते हैं stash@{n}। इसलिए अब उपयोग करने के बजाय:

git stash apply "stash@{n}"

आपको लिखना आता है:

git stash apply n

चोरी की सूची प्राप्त करने के लिए:

git stash list

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


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

7
एक और टिप: आप gitk stash@{0}किसी विशेष स्लैश में किए गए परिवर्तनों को दिखाने के लिए जैसे कर सकते हैं ।
एंटीनोम

11
zsh उपयोगकर्ताओं को दोहरे उद्धरण की आवश्यकता है जैसेgit stash apply "stash@{0}"
mynameistechno

7
stash@{n}टाइप करने के लिए सबसे अजीब कमांड है। क्या अपना स्वयं का उपनाम या फ़ंक्शन बनाने के अलावा ऐसा करने के लिए कोई शॉर्टकट है?
Dylanthepiguy

2
git stash apply nशांतिपूर्ण है
विक्टर

240

एक स्लैश लागू करने और इसे स्टैश सूची से हटाने के लिए, चलाएं:

git stash pop stash@{n}

एक स्लैश लागू करने के लिए और इसे स्टैश कैश में रखें, चलाएं:

git stash apply stash@{n}

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

42
PowerShell के लिए:git stash pop "stash@{n}"
ankitjaininfo

1
PowerShell के उद्धरणों / एकल-उद्धरणों में केवल घुंघराले ब्रेसिज़ के साथ खुश:git stash apply stash@"{n}"
m1kael

PowerShell भी स्वीकार करेगा git stash apply stash@`{n`}(ब्रेसिज़ से पहले बैकटिक्स पर ध्यान दें)।
इयान केम्प

52

संस्करण 2.11 के बाद से, यह बहुत आसान है, आप कहने के बजाय एन स्टैक नंबर का उपयोग कर सकते हैं "stash@{n}"। इसलिए अब उपयोग करने के बजाय:

git stash apply "stash@{n}"

आपको लिखना आता है:

git stash apply n

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

stash@{0}: WIP on design: f2c0c72... Adjust Password Recover Email
stash@{1}: WIP on design: f2c0c72... Adjust Password Recover Email
stash@{2}: WIP on design: eb65635... Email Adjust
stash@{3}: WIP on design: eb65635... Email Adjust

यदि आप आवेदन करना चाहते हैं तो आप stash@{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 से पहले के संस्करणों में, यह काम करने से इंकार कर दिया था यदि कार्य निर्देशिका में कोई परिवर्तन हुआ था।


नोट जारी करें:

उपयोगकर्ता को हमेशा स्टैश के डिफ़ॉल्ट स्थान में एक तत्व का नामकरण करते समय "refash @ {$ N}" कहना पड़ता है, अर्थात refs / stash में रिफ्लैक्स। "गिट स्टैश" कमांड को स्वीकार करने के लिए सीखा "गिट स्टैश 4 को लागू करें" के लिए शॉर्ट-हाथ के रूप में "गिट स्टैश अप्लाई स्टैश @ {4}"

गिट स्टैश लागू "काम करने के लिए मना कर दिया अगर काम करने वाले पेड़ में कोई बदलाव नहीं था, तब भी जब परिवर्तन दर्ज किए गए परिवर्तन के साथ ओवरलैप नहीं हुआ था


41

यदि कोई Windows मशीन पर और PowerShell में है, तो किसी को तर्क को उद्धृत करने की आवश्यकता है जैसे:

git stash apply "stash@{0}"

... या परिवर्तनों को लागू करने और स्टाॅस से हटाने के लिए:

git stash pop "stash@{0}"

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

घातक: अस्पष्ट तर्क 'छिपाने की जगह': अज्ञात संशोधन या काम के पेड़ में नहीं पथ।


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

8
git stash list

इसके बाद केवल नंबर लगाने और उपयोग करने के लिए स्टैश का चयन करें:

git stash apply 1

2
Git Stash list 

सूची में सभी स्टैक्ड आइटम दिखाए जाएंगे जैसे: stash @ {0} :, stash @ {1}:, .., stash @ {{}}:

इसके बाद नंबर n चुनें, जो स्टैश @ {n} दर्शाता है:

git stash apply n 

for eg: git stash apply 1 will apply that particular stashed changes to the current branch
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.