2016-07-08 6 views
9

मैंने गलती से .git/index हटा दिया है, क्या इसे पुनर्प्राप्त करने का कोई तरीका है? यह स्थायी रूप से हटा दिया गया है। मैंने अभी तक कुछ भी नहीं किया है।स्थानीय रूप से `.git/index` को कैसे पुनर्प्राप्त करें?

+1

इसलिए इसकी एक साफ भंडार - बस पूरे निर्देशिका हटाकर एक नया रेपो बनाने? –

+0

क्या आपने अभी तक इंडेक्स में कुछ जोड़ा है? क्या उन फ़ाइलों के विशेष संस्करण थे जिन्हें आप पुनर्प्राप्त करना चाहते थे, जो कि मंच पर अलग-अलग प्रतिलिपि से अलग थे? –

उत्तर

2

मुझे नहीं लगता कि यह संभव है, git के माध्यम से नहीं (आप अपनी ट्रैश निर्देशिका के अंदर या अपने फाइल सिस्टम रिकवरी के किसी भी साधन को देखने का प्रयास कर सकते हैं)। आपको एक नई अनुक्रमणिका मिल जाएगी, हालांकि, जैसे ही आप git add कुछ करते हैं या कुछ और करते हैं जिसके लिए अनुक्रमणिका की आवश्यकता होती है।

आप फ़ाइलों को git add एड है के किसी भी खो दिया है, तो आप, ./git/objects (find .git/objects/ -type f |sed 's:\.git/objects/::; s:/::' ) के माध्यम से जा सकते हैं git cat-file -p $the_hash के साथ प्रत्येक की सामग्री का निरीक्षण किया, और तुम खो एक मिल गया है एक बार आउटपुट को एक फाइल में रीडायरेक्ट करें।

(आप git add, एक फ़ाइल नाम प्रविष्टि .git/index में जाता है और फ़ाइल सामग्री .git/objects/ में संग्रहीत है। Git सूचकांक है कि जब आप commit। आप देख सकते हैं बनाया जाता है एक भावी पेड़ वस्तु का फ़ाइल नाम प्रविष्टियों से बना है git ls-files --stage के साथ इंडेक्स का मानव-पठनीय प्रतिनिधित्व)।

+1

सूचकांक में इसमें कुछ और चीजें हैं, लेकिन हां, यह मूल रूप से नाम-और-हैश-एस का कैश है। कुछ पूर्णता के लिए, यह उल्लेखनीय है कि सूचकांक में प्रति नाम चार संभव "स्लॉट" हैं: स्लॉट 1-3 केवल विवादित विलय के दौरान उपयोग किया जाता है, और स्लॉट शून्य वह होता है जहां सामान्य, अगली-प्रतिबद्ध-टू-मेक प्रविष्टि जाती है। – torek

2

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

8

इंडेक्स फ़ाइल के पुनर्निर्माण के लिए, आपको इन दोनों आदेशों की कोशिश कर सकते हैं:

git reset   # re-scan the working directory 
git add -u  # update the index 
संबंधित मुद्दे