मैं केवल इस उत्तर पर विस्तार कर रहा हूं @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
उनके हैश) के आधार पर एक हैश की गणना करता है।