यदि आपके Mac के वर्किंग फ़ोल्डर की किसी फ़ाइल में version https://git-lfs.github.com/spec/v1 से शुरू होने वाला टेक्स्ट है, तो आपको बड़ी फ़ाइल की सामग्री के बजाय उसका Git LFS पॉइंटर दिखाई दे रहा है। Terminal में, रिपॉजिटरी पर जाएं, सुनिश्चित करें कि Git LFS इंस्टॉल और इनिशियलाइज़ है, फिर git lfs pull चलाएं। वह कमांड चेक-आउट की गई ब्रांच के लिए LFS ऑब्जेक्ट्स डाउनलोड करता है और वर्किंग फ़ाइलों को अपडेट करता है। यह केवल उसी सामग्री को पुनर्स्थापित कर सकता है जो कॉन्फ़िगर किए गए रिमोट से उपलब्ध है या पहले से ही स्थानीय LFS कैश में मौजूद है। Git LFS FAQ
1. Terminal में रिपॉजिटरी खोलें और पुष्टि करें कि फ़ाइल एक पॉइंटर है
Terminal खोलें और रिपॉजिटरी डायरेक्टरी में जाएं। यदि आप सुनिश्चित नहीं हैं कि फ़ोल्डर कहाँ है, तो cd टाइप करें (पीछे स्पेस सहित), Finder से रिपॉजिटरी फ़ोल्डर को Terminal विंडो में ड्रैग करें, फिर Return दबाएं। जांचें कि आप Git वर्किंग ट्री में हैं और वास्तविक पाथ को प्रतिस्थापित करते हुए फ़ाइल का निरीक्षण करें:
git status --short
head -n 3 'path/to/file.ext'
एक सामान्य पॉइंटर में एक वर्ज़न लाइन, एक oid sha256: लाइन और एक साइज़ लाइन होती है। Git LFS इस छोटे पॉइंटर को Git में स्टोर करता है जबकि वास्तविक सामग्री LFS स्टोरेज में रहती है। टेक्स्ट एडिटर में पॉइंटर देखने का मतलब यह नहीं है कि एडिटर छूटे हुए ऑब्जेक्ट को पुनः प्राप्त कर सकता है; रिकवरी Git LFS के माध्यम से की जाती है। Git LFS overview
2. यदि आवश्यक हो तो Git LFS इंस्टॉल और इनिशियलाइज़ करें
जांचें कि कमांड उपलब्ध है या नहीं:
git lfs version
यदि Terminal रिपोर्ट करता है कि lfs कोई Git कमांड नहीं है, तो अपने Mac के लिए एक विश्वसनीय इंस्टॉलेशन विधि का उपयोग करके Git LFS इंस्टॉल करें, फिर एक नई Terminal विंडो खोलें और दोबारा जांचें। प्रोजेक्ट दस्तावेज़ git lfs install को उपयोगकर्ता खाते के लिए वन-टाइम सेटअप के रूप में वर्णित करता है; Git के LFS फ़िल्टर और हुक कॉन्फ़िगर करने के लिए इसे चलाएं:
git lfs install
यह सेटअप फ़ाइल सामग्री डाउनलोड करने से अलग है। यदि क्लोन या चेकआउट के दौरान LFS छूट गया था, तो Git LFS का FAQ वर्किंग ट्री में पॉइंटर्स को बदलने के लिए विशेष रूप से git lfs pull चलाने की सलाह देता है। Git LFS FAQ
3. वर्तमान ब्रांच की फ़ाइलों को डाउनलोड और पुनर्स्थापित करें
रिपॉजिटरी डायरेक्टरी से, चलाएं:
git lfs pull
यह कमांड डिफ़ॉल्ट रिमोट से वर्तमान ref के लिए LFS सामग्री प्राप्त (fetch) करता है और आवश्यक वर्किंग-ट्री फ़ाइलों को चेक आउट करता है। यह एक साधारण क्लोन के लिए सबसे सरल रिकवरी चरण है जहां पॉइंटर उस ब्रांच से संबंधित होता है जिसे आपने चेक आउट किया है। कमांड पूरा होने की प्रतीक्षा करें और किसी भी त्रुटि को पढ़ें; इसके बाद भी पॉइंटर बने रहने का मतलब है कि उस फ़ाइल के लिए डाउनलोड या चेकआउट पूरा नहीं हुआ। Git LFS command reference
यदि आपने पहले ही ऑब्जेक्ट प्राप्त (fetch) कर लिया है लेकिन वर्किंग फ़ाइल में अभी भी पॉइंटर मौजूद है, तो इसे आज़माएं:
git lfs checkout -- 'path/to/file.ext'
git lfs checkout स्थानीय LFS स्टोर में उपलब्ध सामग्री का उपयोग करता है; यह कुछ भी डाउनलोड नहीं करता है। यह गुम हुई फ़ाइलों या मेल खाने वाले पॉइंटर वाली फ़ाइलों को पुनर्स्थापित करता है, और संशोधित फ़ाइलों को अधिलेखित (overwrite) नहीं करता है। यह इसे एक सफल फ़ेच के बाद उपयोगी बनाता है, लेकिन यह उस ऑब्जेक्ट को पुनर्प्राप्त नहीं कर सकता जो न तो स्थानीय रूप से कैश्ड है और न ही सफलतापूर्वक प्राप्त किया गया है। git-lfs-checkout manual
4. यदि फ़ाइल अभी भी पॉइंटर दिखाती है
जांचें कि क्या अपेक्षित पाथ LFS द्वारा ट्रैक किया गया है और क्या रिपॉजिटरी में कोई रिमोट कॉन्फ़िगर किया गया है:
git lfs ls-files
git remote -v
यदि git lfs ls-files फ़ाइल को सूचीबद्ध नहीं करता है, तो पुष्टि करें कि वर्तमान ब्रांच के कमिट किए गए .gitattributes नियम LFS के लिए इसके पाथ को चिह्नित करते हैं। केवल अभी git lfs track चलाने से ऐतिहासिक सामग्री वापस नहीं आती है, और ट्रैकिंग नियमों को बदलने से एक सामान्य Git ब्लॉब LFS ऑब्जेक्ट में परिवर्तित नहीं होता है। Git LFS नोट करता है कि किसी रिपॉजिटरी में पहले से मौजूद फ़ाइलों को बदलने के लिए रीनॉर्मलाइज़ेशन और एक कमिट की आवश्यकता होती है; केवल फ़ाइल पुनर्प्राप्त करने के लिए वह रिपॉजिटरी परिवर्तन न करें। Git LFS FAQ
यदि फ़ाइल सूचीबद्ध है, तो पुष्टि करें कि आप वांछित वर्ज़न वाली ब्रांच पर हैं और कॉन्फ़िगर किया गया रिमोट वही रिपॉजिटरी है जो इसके LFS ऑब्जेक्ट्स को स्टोर करती है। किसी भिन्न कॉन्फ़िगर किए गए रिमोट के लिए, उस रिमोट को फ़ेच करें और फिर स्थानीय कैश से पुनर्स्थापित करें:
git lfs fetch 'remote-name'
git lfs checkout -- 'path/to/file.ext'
git lfs fetch ऑब्जेक्ट्स डाउनलोड करता है लेकिन वर्किंग कॉपी को अपडेट नहीं करता है; git lfs checkout वह स्थानीय अपडेट करता है। वर्तमान ref को फ़ेच करना डिफ़ॉल्ट रूप से डिफ़ॉल्ट रिमोट का उपयोग करता है, जो Git के रिमोट-चयन नियमों का पालन करता है। git-lfs-fetch manual
एक असफल पुल कनेक्शन, प्रमाणीकरण (authentication), एक्सेस या गुम-ऑब्जेक्ट की समस्या की ओर संकेत कर सकता है। कॉन्फ़िगर किए गए Git/LFS सर्वर पर एक्सेस संबंधी समस्या का समाधान करें और पुनः प्रयास करें। यदि LFS सर्वर के पास अब ऑब्जेक्ट नहीं है, तो अकेले पॉइंटर से मूल फ़ाइल का पुनर्निर्माण नहीं किया जा सकता है: किसी रिपॉजिटरी मेंटेनर से पूछें कि क्या किसी अन्य ब्रांच, बैकअप, क्लोन या अधिकृत LFS स्टोर के पास यह उपलब्ध है। पॉइंटर को अनुमानित सामग्री से बदलने या इसे ऐसे कमिट करने से बचें जैसे कि यह पुनर्स्थापित फ़ाइल हो।
पुनर्प्राप्ति (Recovery) की पुष्टि करें
एक सफल पुल या चेकआउट के बाद, फ़ाइल का पुनः निरीक्षण करें। इसकी पहली पंक्तियाँ अब LFS पॉइंटर मेटाडेटा नहीं होनी चाहिए; यह पुष्टि करने के लिए फ़ाइल प्रकार के लिए उपयुक्त एप्लिकेशन का उपयोग करें कि पुनर्प्राप्त सामग्री खुलती है। git status --short भी जांचें। यदि आपकी वर्किंग कॉपी में पॉइंटर था, तो सामग्री में बदलाव अपेक्षित हो सकता है, लेकिन कुछ भी स्टेज या कमिट करने से पहले रिपोर्ट किए गए पाथ की समीक्षा करें।
स्रोत
git-lfs-faq(7) — Git LFS
git-lfs(1) — Git LFS
git-lfs-checkout(1) — Git LFS
git-lfs-fetch(1) — Git LFS