2011-11-16 9 views
13

मैं जानने के लिए Git की अंदरूनी कामकाज के बारे में अधिक तो मैं इन आदेशों भाग गया हैं:'Git बिल्ली फ़ाइल <sha1> -p': "घातक: कोई मान्य वस्तु का नाम" .git से यादृच्छिक वस्तुओं पर/वस्तुओं

cd .git/objects/62 

ls 
00cb2f01089db22aca24675272a16712e89747 
0ee798881329430bfef6c558be7b14c1f0676f 
1087f408e2f2bd782d53a1211a7418fee4f6a7 
a6a71f3bd5a3af882f3f0ec4fad4c672055746 
f95e69f344b52c5038d922260189475626e69a 

git cat-file -p 00cb2f01089db22aca24675272a16712e89747 

और निम्न त्रुटि मिला:

fatal: Not a valid object name 00cb2f01089db22aca24675272a16712e89747 

मैं इसे क्यों मिला?

मैंने 10 बार (विभिन्न निर्देशिकाओं के लिए .git/ऑब्जेक्ट्स के अंदर विभिन्न फ़ाइलों के लिए) की कोशिश की और एक ही त्रुटि मिली।

मैं फ़ाइलों की वास्तविक सामग्री को कैसे देख सकता हूं (चाहे वह एक ब्लॉब, पेड़ या प्रतिबद्ध हो)?

उत्तर

15

आप .git वस्तु की दुकान में सीडी की जरूरत नहीं है, लेकिन आप पूर्ण SHA1 हैश प्रदान करने के लिए: रखने के लिए

git cat-file -p 621087f408e2f2bd782d53a1211a7418fee4f6a7 

Git .git/objects में अपनी वस्तुओं को संग्रहीत करता है, 256 फ़ोल्डरों भर में वितरित निर्देशिका का आकार नीचे। प्रत्येक हैश के पहले दो गुणकों को निर्देशिका नाम के रूप में उपयोग किया जाता है, शेष 38 वर्ण फ़ाइल नाम के रूप में उपयोग किए जाते हैं।

+0

ठीक है, लेकिन cg'ing में .git ऑब्जेक्ट मेरे प्रश्नों का उत्तर नहीं देता है ... मुझे त्रुटि क्यों मिलती है? और मैं वस्तु की वास्तविक सामग्री कैसे देखूं? –

+1

@IgorPopov: यह आपके प्रश्न का उत्तर देता है। आपने उस ऑब्जेक्ट को प्रदर्शित करने का प्रयास किया जो मौजूद नहीं था। अपने हैश पर और मेरे जवाब से हैश पर नज़र डालें - अंतर देखें? – knittl

+0

मैंने प्रश्न में "एलएस" से वास्तविक आउटपुट जोड़ा। जैसा कि आप देख सकते हैं कि "** 62 **" से शुरू होने वाले नाम के साथ ** नहीं ** फ़ाइल है। गिट बिल्ली फ़ाइल इन फ़ाइलों में से प्रत्येक के साथ विफल रहता है। अगर यह "एलएस" आउटपुट में है तो मुझे लगता है कि यह मौजूद है ... –

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