Git bao gồm cho mỗi cam kết một bản sao đầy đủ của tất cả các tệp, ngoại trừ, đối với nội dung đã có trong repo Git, ảnh chụp nhanh sẽ chỉ vào nội dung đã nói thay vì sao chép nó.
Điều đó cũng có nghĩa là một số tệp có cùng nội dung chỉ được lưu trữ một lần.
Vì vậy, một snapshot về cơ bản là một cam kết, đề cập đến nội dung của cấu trúc thư mục.
Một số tài liệu tham khảo tốt là:
Bạn nói với Git rằng bạn muốn lưu ảnh chụp nhanh dự án của bạn bằng lệnh git commit và về cơ bản nó ghi lại một bảng kê khai tất cả các tệp trong dự án của bạn trông như thế nào tại thời điểm đó
Lab 12 minh họa cách lấy ảnh chụp nhanh trước đó
Các cuốn sách progit có mô tả toàn diện hơn về một bản chụp:
Sự khác biệt chính giữa Git và bất kỳ VCS nào khác (Bao gồm cả Subversion và bạn bè) là cách Git nghĩ về dữ liệu của nó.
Về mặt khái niệm, hầu hết các hệ thống khác lưu trữ thông tin dưới dạng danh sách các thay đổi dựa trên tệp. Các hệ thống này (CVS, Subversion, Perforce, Bazaar, v.v.) nghĩ về thông tin họ lưu giữ dưới dạng tập hợp các tệp và các thay đổi được thực hiện cho từng tệp theo thời gian

Git không nghĩ hoặc lưu trữ dữ liệu theo cách này. Thay vào đó, Git nghĩ rằng dữ liệu của nó giống như một tập hợp các ảnh chụp nhanh của một hệ thống tệp nhỏ.
Mỗi khi bạn cam kết hoặc lưu trạng thái dự án của bạn trong Git, về cơ bản, nó sẽ chụp ảnh tất cả các tệp của bạn trông như thế nào vào thời điểm đó và lưu trữ một tham chiếu đến ảnh chụp nhanh đó.
Để hiệu quả, nếu các tệp không thay đổi, Git sẽ không lưu trữ tệp một lần nữa, chỉ là một liên kết đến tệp giống hệt trước đó mà nó đã được lưu trữ.
Git nghĩ về dữ liệu của nó giống như dưới đây:

Đây là một sự khác biệt quan trọng giữa Git và gần như tất cả các VCS khác. Nó khiến Git xem xét lại gần như mọi khía cạnh của kiểm soát phiên bản mà hầu hết các hệ thống khác được sao chép từ thế hệ trước. Điều này làm cho Git giống như một hệ thống tệp nhỏ với một số công cụ cực kỳ mạnh mẽ được xây dựng trên nó, thay vì chỉ đơn giản là một VCS.
Jan Hudec thêm nhận xét quan trọng này :
Mặc dù điều đó đúng và quan trọng ở cấp độ khái niệm, nhưng điều đó KHÔNG đúng ở cấp độ lưu trữ.
Git không sử dụng deltas để lưu trữ .
Không chỉ vậy, nhưng nó hiệu quả hơn trong bất kỳ hệ thống nào khác. Bởi vì nó không giữ lịch sử trên mỗi tệp, khi nó muốn thực hiện nén delta, phải mất mỗi blob, chọn một số đốm có khả năng giống nhau (sử dụng phương pháp phỏng đoán bao gồm xấp xỉ gần nhất của phiên bản trước và một số khác), cố gắng tạo ra deltas và chọn cái nhỏ nhất. Bằng cách này, nó có thể (thường, phụ thuộc vào các heuristic) tận dụng các tệp tương tự khác hoặc các phiên bản cũ tương tự như trước đây. Tham số "gói cửa sổ" cho phép hiệu suất giao dịch cho chất lượng nén delta. Mặc định (10) thường cho kết quả khá, nhưng khi không gian bị giới hạn hoặc để tăng tốc độ truyền mạng, git gc --aggressive
sử dụng giá trị 250, làm cho nó chạy rất chậm, nhưng cung cấp thêm nén cho dữ liệu lịch sử.