full - git download



गिट स्टैश बनाने के साथ बनाए गए स्टैश को कैसे हटाएं? (4)

आप का उपयोग करना चाहिए

git stash save

और नहीं

git stash create

क्योंकि यह एक छिद्र बनाता है (जो एक नियमित प्रतिबद्ध वस्तु है) और रेफ नेमस्पेस में इसे कहीं भी संग्रहीत किए बिना, उसका ऑब्जेक्ट नाम वापस कर देता है। इसलिए लागू होने के साथ सुलभ नहीं होगा।

git stash save "some comment" का उपयोग तब किया जाता है जब आपके पास अनस्टेज्ड परिवर्तन होते हैं जिन्हें आप दोहराना चाहते हैं / किसी अन्य शाखा में ले जाना चाहते हैं

git stash apply [email protected]{0} उपयोग करें git stash apply [email protected]{0} (मान लें कि आपकी सहेजी गई स्टैश इंडेक्स 0 है) मान लें कि जब आप अपनी सहेजी गई (स्टैश) परिवर्तनों को अपनी वर्तमान शाखा पर प्रतिबिंबित करना चाहते हैं

आप अपने सभी स्टैश इंडेक्स को जांचने के git stash list हमेशा git stash list का उपयोग कर सकते हैं

और विशेष स्टैश को हटाने के लिए git stash drop [email protected]{0} (मान लें कि आपकी सहेजी गई स्टैश इंडेक्स 0 है और आप इसे हटाना चाहते हैं) का उपयोग करें।

गिट स्टैश मुझे जो कुछ भी चाहिए, वह करने के लिए लगता है, सिवाय इसके कि यह स्क्रिप्ट के लिए थोड़ा मुश्किल है, क्योंकि यदि आपके पास कोई बदलाव नहीं है, तो git stash; git stash pop git stash; git stash pop आपके रिपोजिटरी में बदलाव करने के अलावा कुछ अलग करेगा।

ऐसा प्रतीत होता है कि git stash create उस समस्या का उत्तर है, और सबकुछ काम करता है, एक चीज़ को छोड़कर ... मैं बनाए गए स्टैश से छुटकारा नहीं पा सकता हूं। क्या छेड़छाड़ से छुटकारा पाने का कोई तरीका है?

इसे 100% स्पष्ट करने के लिए मैं क्या कर रहा हूं:

स्टैश बनाएं:

~/tmp/a(master) $ git stash create 
60629375d0eb12348f9d31933dd348ad0f038435
~/tmp/a(master) $ git st
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   b
#
~/tmp/a(master) $ git reset --hard
HEAD is now at 555d572 log message

स्टैश का प्रयोग करें:

~/tmp/a(master) $ git apply 60629375d0eb12348f9d31933dd348ad0f038435
fatal: can't open patch '60629375d0eb12348f9d31933dd348ad0f038435': No such file or directory
~/tmp/a(master) $ git stash apply 60629375d0eb12348f9d31933dd348ad0f038435
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   b
#

स्टैश हटाएं: (सिवाय इसके कि यह आखिरी बिट काम नहीं करता है)

~/tmp/a(master) $ git stash drop !$
git stash drop 60629375d0eb12348f9d31933dd348ad0f038435
'60629375d0eb12348f9d31933dd348ad0f038435' is not a stash reference

आपको git stash create के साथ बनाए गए स्टैश को हटाने की आवश्यकता नहीं है। दस्तावेज़ों से:

एक स्टैश एंट्री बनाएं (जो एक नियमित प्रतिबद्ध वस्तु है) और रेफ नेमस्पेस में इसे कहीं भी संग्रहीत किए बिना, उसका ऑब्जेक्ट नाम वापस कर दें। यह स्क्रिप्ट के लिए उपयोगी होने का इरादा है। शायद वह आदेश नहीं है जिसका आप उपयोग करना चाहते हैं; उपरोक्त "सहेजें" देखें।

चूंकि कुछ भी स्टेश प्रतिबद्धता का संदर्भ नहीं देता है, इसलिए अंततः कचरा इकट्ठा हो जाएगा।

git stash या git stash save के साथ बनाया गया एक स्टैश refs/stash सहेजा जाता है, और git stash drop साथ हटाया जा सकता है। सभी गिट ऑब्जेक्ट्स के साथ, वास्तविक स्टैश सामग्री तब तक आपके कंप्यूटर से नहीं हटाई जाती है जब तक कि gc उन वस्तुओं को समाप्त होने के बाद prunes (डिफ़ॉल्ट 2 सप्ताह पहले) नहीं है।

पुराने refs/stash reflog refs/stash reflog में सहेजा जाता है ( cat .git/logs/refs/stash ) आज़माएं, और git stash drop [email protected]{n} साथ हटाया जा सकता है, जहां n git stash list द्वारा दिखाया गया नंबर है।


यदि आप 100% सुनिश्चित हैं कि आपके पास केवल एक छिद्र है (एक git stash list 107% सुनिश्चित करें), तो आप एक कर सकते हैं

git stash clear

और उनके बारे में भूल जाओ (यह सभी छेड़छाड़ हटा देता है)।

नोट: उन लोगों के लिए यह उत्तर जोड़ा गया जो यहां समाप्त हुए सभी को साफ़ करने का एक तरीका ढूंढ रहे हैं (मेरे जैसे)।


git stash drop में कोई पैरामीटर नहीं होता है - जो शीर्ष git stash drop है - या एक स्टैश संदर्भ जो दिखता है: [email protected]{n} जो n नामांकित करता है जो ड्रॉप करने के लिए छेड़छाड़ करता है। आप git stash drop को git stash drop करने के लिए एक प्रतिबद्ध आईडी पास नहीं कर सकते हैं।

मुझे यकीन नहीं है कि आपको लगता है कि एक स्टैश ड्रॉप करने की आवश्यकता क्यों है क्योंकि यदि आप stash create का उपयोग कर रहे हैं तो आपके "स्टैश" के लिए स्टैश एंट्री नहीं बनाई गई है, इसलिए ड्रॉप करने के लिए कुछ भी नहीं है।





git