Git में प्रत्येक फाइल के लिए एक पूर्ण प्रति शामिल है, सिवाय इसके कि, Git रेपो में पहले से मौजूद सामग्री के लिए, स्नैपशॉट बस डुप्लिकेट के बजाय उक्त सामग्री को इंगित करेगा।
इसका मतलब यह भी है कि एक ही सामग्री के साथ कई फाइलें केवल एक बार संग्रहीत की जाती हैं।
तो एक स्नैपशॉट मूल रूप से एक कमिट है, जो एक डायरेक्टरी स्ट्रक्चर के कंटेंट का जिक्र करता है ।
कुछ अच्छे संदर्भ हैं:
आप बताएं कि आप अपने प्रोजेक्ट के स्नैपशॉट को git कमिट कमांड के साथ सहेजना चाहते हैं और यह मूल रूप से आपके प्रोजेक्ट की सभी फाइलों को उस बिंदु की तरह प्रदर्शित करता है।
लैब 12 दिखाता है कि पिछले स्नैपशॉट कैसे प्राप्त करें
Progit पुस्तक एक स्नैपशॉट के अधिक व्यापक विवरण नहीं है:
Git और किसी भी अन्य VCS (तोड़फोड़ और दोस्तों में शामिल) के बीच प्रमुख अंतर यह है कि जिस तरह से Git अपने डेटा के बारे में सोचता है।
वैचारिक रूप से, अधिकांश अन्य सिस्टम फ़ाइल-आधारित परिवर्तनों की सूची के रूप में जानकारी संग्रहीत करते हैं। ये सिस्टम (CVS, सबवर्सन, पेरफोर्स, बाज़ार और इसी तरह) उन सूचनाओं के बारे में सोचते हैं जिन्हें वे फाइलों के एक सेट के रूप में रखते हैं और समय के साथ प्रत्येक फ़ाइल में किए गए बदलाव।

Git इस तरह से अपने डेटा के बारे में सोचता या संग्रहीत नहीं करता है। इसके बजाय, Git अपने डेटा को एक मिनी फाइल सिस्टम के स्नैपशॉट के सेट की तरह अधिक समझता है।
हर बार जब आप Git में अपने प्रोजेक्ट की स्थिति को कमिट करते हैं, या सहेजते हैं, तो यह मूल रूप से उस समय आपकी सभी फ़ाइलों की तरह दिखने वाली तस्वीर लेता है और उस स्नैपशॉट का एक संदर्भ संग्रहीत करता है।
कुशल होने के लिए, यदि फाइलें नहीं बदली हैं, तो Git फाइल को फिर से स्टोर नहीं करता है - बस पिछले समान फ़ाइल के लिए एक लिंक जो पहले ही संग्रहीत है।
Git अपने डेटा के बारे में नीचे की तरह अधिक सोचता है:

यह Git और लगभग सभी अन्य VCS के बीच एक महत्वपूर्ण अंतर है। यह Git पुनर्विचार को संस्करण नियंत्रण के लगभग हर पहलू को बनाता है जो कि पिछली पीढ़ी से कॉपी किए गए अधिकांश अन्य सिस्टम हैं। यह Git को मिनी फाइलसिस्टम की तरह बनाता है, जिसमें कुछ अविश्वसनीय रूप से शक्तिशाली उपकरण होते हैं, जो केवल VCS के बजाय इसके शीर्ष पर निर्मित होते हैं।
जान Hudec इस महत्वपूर्ण टिप्पणी कहते हैं :
हालांकि यह वैचारिक स्तर पर सही और महत्वपूर्ण है, लेकिन भंडारण स्तर पर यह सच नहीं है।
Git भंडारण के लिए डेल्टास का उपयोग करता है ।
इतना ही नहीं, बल्कि किसी भी अन्य प्रणाली की तुलना में यह अधिक कुशल है। क्योंकि यह प्रति-फ़ाइल इतिहास नहीं रखता है, जब वह डेल्टा संपीड़न करना चाहता है, यह प्रत्येक बूँद लेता है, कुछ बूँदें का चयन करता है जो समान होने की संभावना है (उत्तराधिकार का उपयोग करते हुए जिसमें पिछले संस्करण और कुछ अन्य लोगों के निकटतम सन्निकटन शामिल हैं), डेल्टास उत्पन्न करने की कोशिश करता है और सबसे छोटी को चुनता है। इस तरह यह (अक्सर, अनुमानों पर निर्भर करता है) अन्य समान फ़ाइलों या पुराने संस्करणों का लाभ उठा सकता है जो पिछले की तुलना में अधिक समान हैं। "पैक विंडो" पैरामीटर डेल्टा संपीड़न गुणवत्ता के लिए व्यापारिक प्रदर्शन की अनुमति देता है। डिफ़ॉल्ट (10) आम तौर पर सभ्य परिणाम देता है, लेकिन जब स्थान सीमित होता है या नेटवर्क स्थानान्तरण को गति देने के लिए, git gc --aggressiveमूल्य 250 का उपयोग करता है, जो इसे बहुत धीमी गति से चलाता है, लेकिन इतिहास डेटा के लिए अतिरिक्त संपीड़न प्रदान करता है।