2016-11-17 7 views
5

मैं phpStorm का उपयोग कर रहा हूं और हाल ही में मेरे परिवर्तनों का एक भार छीन लिया है। उसके बाद कुछ समय बाद, मेरी पीसी प्रोफ़ाइल भ्रष्ट हो गई और उसे पुनर्निर्मित करना पड़ा।गिट स्टैश कहां संग्रहीत हैं?

अब मेरे पास एक नई पीसी प्रोफ़ाइल है, PhpStorm मेरे चुने हुए परिवर्तन नहीं दिखा रहा है।

क्या कोई तरीका है कि मैं उन्हें वापस प्राप्त कर सकता हूं?

+2

क्या आपने प्रलेखन में देखा है? स्टैश को स्थानीय रूप से 'रेफ/स्टैश' में सहेजा जाता है। क्या आपने कभी किसी और को अपने कंप्यूटर पर छीन लिया है? मुझे नहीं लगता। क्या आपने कभी छेड़छाड़ करने की कोशिश की है? यह मुमकिन नहीं है। जब आपका स्थानीय भंडार क्लोन चला जाता है, तो आपकी चपेट में चले जाते हैं। – DanFromGermany

+1

यही वह है। मेरे पास अब फाइलें हैं। धन्यवाद – Typhoon101

उत्तर

8

दस्तावेज़ों से, नवीनतम एक ./.git/refs/stash में संग्रहीत है जबकि पुराने ref के reflog में हैं।

एक तरफ, मुझे पता चला है कि यह गिट स्टैश का नियमित उपयोग बनाए रखने के लिए एक बुरा अभ्यास है। आम तौर पर, फीचर शाखा पर कई छोटे कामों को पसंद करते हैं। इस तरह आपको शायद ही कभी छेड़छाड़ करनी पड़े और जब आप ऐसा करते हैं तो यह बहुत कम संग्रहित होता है। मैं आम तौर पर केवल तभी छूता हूं जब मुझे कुछ मिनटों के लिए कुछ छूने की ज़रूरत होती है, और फिर जब मैं कुछ देख रहा हूं तो लागू होता हूं।

https://git-scm.com/docs/git-stash

1

सभी .git/refs/stash में संग्रहीत हैं। git stash अनिश्चित काल तक स्टैव बचाता है, और उनमें से सभी को git stash list द्वारा सूचीबद्ध किया गया है।

कृपया ध्यान दें कि स्टैश को छोड़ना या साफ़ करना इसे स्टैश सूची से हटा देगा, लेकिन आपके पास अभी भी सही डेटा के साथ असंगत नोड्स हो सकते हैं।

3

"गिट स्टैश" (यानी काम करने वाले पेड़ का वर्तमान संस्करण और .git/अनुक्रमणिका की सामग्री) द्वारा छोड़ा गया वास्तविक डेटा दो प्रतिबद्ध पेड़ के रूप में संग्रहीत किया जाता है।

एक प्रतिबद्ध पेड़ में काम करने वाले पेड़ की वर्तमान स्थिति का स्नैपशॉट होता है। यहां कुछ मुश्किल बिट्स हैं, नीचे देखें।

अन्य प्रतिबद्ध पेड़, मुझे बताया गया है, स्टैश के समय .git/अनुक्रमणिका की सामग्री का स्नैपशॉट स्टोर करने के लिए उपयोग किया जाता है। मैंने इस गहराई से पर्याप्त (अभी तक) नहीं देखा है कि यह समझने के लिए कि दूसरे का अनुवाद कैसे किया जाता है।

.git/refs/stash में स्टेश बनाए गए प्रतिबद्ध पेड़ के लिए हैश मान होता है।

.git/logs/refs/stash में git/refs/stash में किसी के सामने स्टैश के बारे में मेटाडेटा का एक रिफ्लॉग-जैसे हिस्सा होता है।

.git/अनुक्रमणिका में प्रविष्टियों की एक सूची है, जो काम करने वाले पेड़ में से प्रत्येक फाइल के लिए एक है। उन प्रविष्टियों में फ़ाइल के बारे में पूर्ण पथ और फ़ाइल नाम और कैश मेटाडेटा भी शामिल है, दोनों फाइल सिस्टम मेटाडेटा और गिट से संबंधित मेटाडेटा।

"गिट एड" दोनों ऑब्जेक्ट स्टोर में फ़ाइल की एक प्रति जोड़ता है, और उस फ़ाइल के लिए स्टेजिंग ध्वज सेट करता है .git/index।

एक प्रतिबद्ध पेड़ बनाने के लिए "गिट स्टैश" के लिए, फ़ाइलों को बदल दिया गया है (संपादित) लेकिन अभी तक "गिट एड" के साथ चरणबद्ध नहीं है, ऑब्जेक्ट स्टोर में जोड़ा जाना है। अस्थायी अनुक्रमणिका फ़ाइल बनाकर "गिट स्टैश" ऐसा करता है।

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