Bên trong, Git là một kho lưu trữ đối tượng định địa chỉ theo nội dung (content-addressable object store) — nó lưu mọi thứ dưới dạng object (blob, tree, commit, tag) được định danh bằng hash SHA-1 của chúng. Hiểu mô hình này làm sáng tỏ Git và giải thích vì sao các thao tác của nó hành xử như chúng làm.
Git là một content-addressable object store
Git lưu 4 loại OBJECT, mỗi cái được định danh bằng HASH SHA-1 của nội dung của nó:
BLOB → NỘI DUNG tệp (chỉ dữ liệu, không tên tệp)
TREE → một thư mục: ánh xạ tên → blob (tệp) và tree (thư mục con) + quyền
COMMIT → một ảnh chụp: trỏ tới một TREE (gốc) + (các) commit parent + author/message
TAG → một object annotated tag (trỏ tới một commit, với metadata)
→ Content-addressable: ID của một object CHÍNH LÀ hash của nội dung của nó (cùng nội dung = cùng hash).
