मैं केवल इस उत्तर पर विस्तार कर रहा हूं @Leif Gruenwoldtऔर इसके द्वारा प्रदान किए गए संदर्भ में विस्तार कर रहा हूं@Leif Gruenwoldt
यह स्वयं करो..
- चरण 1. अपनी रिपॉजिटरी में एक खाली टेक्स्ट डॉक्यूमेंट (नाम से कोई फर्क नहीं पड़ता) बनाएं
- चरण 2. दस्तावेज़ को चरणबद्ध और प्रतिबद्ध करें
- चरण 3. निष्पादित करके बूँद के हैश की पहचान करें
git ls-tree HEAD
- चरण 4. बूँद के हैश का पता लगाएं
e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
- चरण 5. अपने आश्चर्य से बाहर स्नैप करें और नीचे पढ़ें
जीआईटी अपने प्रतिबद्ध हैश की गणना कैसे करता है
Commit Hash (SHA1) = SHA1("blob " + <size_of_file> + "\0" + <contents_of_file>)
पाठ blob⎵एक निरंतर उपसर्ग है और \0निरंतर भी है और NULLचरित्र है। <size_of_file>और <contents_of_file>फ़ाइल के आधार पर बदलती।
देखें: फ़ाइल कमिट वस्तु का प्रारूप क्या है?
और सभी लोगों को thats!
लेकिन रुकें! क्या आपने देखा कि <filename>हैश गणना के लिए उपयोग किया जाने वाला पैरामीटर नहीं है? दो फाइलें संभावित रूप से एक ही हैश हो सकती हैं यदि उनकी सामग्री उसी तिथि और समय के प्रति उदासीन हैं जो उन्होंने बनाई थी और उनका नाम। यह उन कारणों में से एक है जो अन्य संस्करण नियंत्रण प्रणालियों की तुलना में Git हैंडल को स्थानांतरित करता है और बेहतर बनाता है।
यह अपने आप करो (एक्सटेंशन)
- चरण 6. एक
filenameही निर्देशिका में एक अलग के साथ एक और खाली फ़ाइल बनाएं
- चरण 7. अपनी दोनों फाइलों के हैश की तुलना करें।
ध्यान दें:
लिंक में यह उल्लेख नहीं किया गया है कि treeऑब्जेक्ट कैसे हैशेड है। मैं एल्गोरिथ्म और मापदंडों के बारे में निश्चित नहीं हूं, लेकिन मेरे अवलोकन से शायद यह सभी ( blobsऔर treesउनके हैश) के आधार पर एक हैश की गणना करता है।