macOS पर स्टैश से किसी एक फ़ाइल को वापस लाने के लिए, स्टैश को स्रोत (source) और फ़ाइल पाथ को लक्ष्य (target) बनाकर git restore का उपयोग करें। यह स्टैश प्रविष्टि को उपलब्ध रखते हुए उस फ़ाइल को आपके वर्किंग ट्री में पुनर्स्थापित करता है। पहले सही स्टैश की पहचान करें और उसके परिवर्तनों का निरीक्षण करें; फिर विशिष्ट पाथ को पुनर्स्थापित करें और परिणाम की समीक्षा करें।

1. रिपॉजिटरी में टर्मिनल खोलें

Spotlight या Finder के Applications/Utilities फ़ोल्डर से टर्मिनल खोलें, फिर cd के साथ रिपॉजिटरी डायरेक्टरी में जाएं। उदाहरण के लिए, cd टाइप करें, प्रोजेक्ट फ़ोल्डर का पाथ डालने के लिए उसे टर्मिनल विंडो में ड्रैग करें, और Return दबाएं। Apple टर्मिनल को macOS के कमांड-लाइन इंटरफ़ेस के रूप में प्रलेखित करता है; zsh इसका डिफ़ॉल्ट शेल है, हालांकि कोई व्यवस्थापक या उपयोगकर्ता दूसरा शेल कॉन्फ़िगर कर सकता है। मैक पर टर्मिनल खोलें या बंद करें

पुष्टि करें कि आप अभीष्ट रिपॉजिटरी में हैं और कुछ भी पुनर्स्थापित करने से पहले स्थानीय परिवर्तन देखें:

git status --short

स्टैश से पुनर्स्थापित करने पर लक्ष्य फ़ाइल की वर्तमान वर्किंग-ट्री सामग्री बदल सकती है, इसलिए उस फ़ाइल के किसी भी संपादन (edits) को सहेज लें या कमिट कर लें जिसे आपको रखना है। यह प्रक्रिया पाथ के अनुसार चुनिंदा होती है, लेकिन यह कोई मर्ज या सुरक्षा बैकअप नहीं है।

2. स्टैश खोजें और उसका निरीक्षण करें

उपलब्ध प्रविष्टियों की सूची देखें:

git stash list

गिट सबसे नई प्रविष्टि को stash@{0}, अगली को stash@{1}, इत्यादि लेबल करता है। वह प्रविष्टि चुनें जिसमें आपका मनचाहा संस्करण मौजूद है। यदि विवरण स्पष्ट नहीं हैं, तो पैच के रूप में किसी संभावित विकल्प का निरीक्षण करें:

git stash show --patch 'stash@{0}'

stash@{0} को अपनी पहचानी गई प्रविष्टि से बदलें। zsh में संदर्भ को कोट्स में रखना उपयोगी होता है क्योंकि ब्रेसेस (braces) का अपना शेल सिंटैक्स होता है। गिट किसी स्टैश के निरीक्षण के लिए stash show और पूरी प्रविष्टि को लागू करने के लिए stash apply का विवरण देता है; नीचे दिया गया कमांड इसके बजाय स्टैश स्नैपशॉट से एक एकल पाथ का चयन करता है। git-stash दस्तावेज़ीकरण

3. केवल उस फ़ाइल को पुनर्स्थापित करें

स्टैश संदर्भ को स्रोत मानकर और -- के बाद रिपॉजिटरी-सापेक्ष (repository-relative) पाथ देकर git restore चलाएं:

git restore --source='stash@{0}' -- 'src/config.json'

src/config.json को अपने सटीक पाथ से बदलें, फ़ॉरवर्ड स्लैश का उपयोग करें और इसे रिपॉजिटरी रूट के सापेक्ष लिखें। कोट्स स्पेस और वाइल्डकार्ड वर्णों को शेल द्वारा इंटरप्रेट किए जाने से भी रोकते हैं। --source विकल्प सामग्री के स्रोत के रूप में किसी कमिट या ट्री का चयन करता है; पाथस्पेक (pathspec) यह सीमित करता है कि गिट किस पाथ को पुनर्स्थापित करता है। चूंकि --staged छोड़ दिया गया है, गिट वर्किंग ट्री को पुनर्स्थापित करता है और इंडेक्स को वैसे ही छोड़ देता है। git-restore दस्तावेज़ीकरण

अब परिवर्तन की समीक्षा करें:

git status --short
git diff -- 'src/config.json'

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

जब इस वर्कफ़्लो में समायोजन की आवश्यकता हो

पाथ स्टैश के वर्किंग-ट्री स्नैपशॉट में मौजूद होना चाहिए। यदि ऐसा नहीं है, तो गिट रिपोर्ट कर सकता है कि पाथस्पेक मेल नहीं खाया; पैच और फ़ाइल नाम (कैपिटलाइज़ेशन सहित) की जांच करें। स्रोत ट्री से अनुपस्थित एक ट्रैक किया गया पाथ हटाया जा सकता है ताकि लक्ष्य उस ट्री से मेल खा सके, इसलिए यदि स्टैश किसी विलोपन (deletion) को रिकॉर्ड करता है तो विशेष रूप से सावधान रहें। गिट का restore दस्तावेज़ीकरण इस व्यवहार का वर्णन करता है। git-restore दस्तावेज़ीकरण

यह प्रक्रिया स्टैश के ट्रैक किए गए वर्किंग-ट्री स्नैपशॉट में मौजूद फ़ाइल के लिए है। -u या -a के साथ बनाए गए स्टैश में अनट्रैक्ड या अनदेखी की गई (ignored) फ़ाइलें भी हो सकती हैं, जो अलग से संग्रहीत होती हैं; git restore --source='stash@{0}' उस अलग स्नैपशॉट को मुख्य स्टैश ट्री की तरह नहीं संभालता है। ऐसी प्रविष्टियों का सावधानीपूर्वक निरीक्षण करें और यह मानने के बजाय कि यह कमांड उन्हें पुनः प्राप्त कर लेगा, गिट के प्रलेखित स्टैश निरीक्षण और पुनर्प्राप्ति नियंत्रणों का उपयोग करें। git-stash दस्तावेज़ीकरण

यदि लक्ष्य पूरी फ़ाइल के बजाय चुनिंदा पंक्तियों को लागू करना है, तो git restore -p इंटरैक्टिव हंक चयन प्रदान करता है, लेकिन इस पर निर्भर होने से पहले अपने इंस्टॉल किए गए गिट संस्करण के लिए इसके व्यवहार और स्रोत की पुष्टि कर लें। किसी फ़ाइल के स्टेज्ड और वर्किंग-ट्री दोनों संस्करणों को पुनर्स्थापित करने के लिए, git restore दोनों --staged और --worktree का समर्थन करता है; यह इंडेक्स को भी बदलता है, इसलिए इसका उपयोग केवल तभी करें जब ऐसा करना आपका इरादा हो। git-restore दस्तावेज़ीकरण

व्यावहारिक क्रम यह है: स्टैश की पहचान करें, उसकी सामग्री में फ़ाइल की पुष्टि करें, चुने गए स्टैश से एक रिपॉजिटरी-सापेक्ष पाथ को पुनर्स्थापित करें, और आगे बढ़ने से पहले diff का निरीक्षण करें। यह स्टैश को अक्षुण्ण रखता है और रिस्टोर प्रक्रिया को केवल आपके द्वारा निर्दिष्ट पाथ तक सीमित रखता है।

स्रोत