내부적으로 Git은 content-addressable object store입니다. 모든 것을 SHA-1 해시로 식별되는 object(blob, tree, commit, tag)로 저장합니다. 이 모델을 이해하면 Git이 신비롭지 않게 되고 왜 그 작업들이 그렇게 동작하는지 설명됩니다.
Git은 content-addressable object store입니다
Git은 4가지 유형의 OBJECT를 저장하며, 각각 그 내용의 SHA-1 해시로 식별됩니다:
BLOB → 파일 내용(데이터만, 파일명 없음)
TREE → 디렉터리: 이름 → blob(파일)과 tree(하위 디렉터리) + 권한 매핑
COMMIT → 스냅샷: TREE(루트) + 부모 commit + 작성자/메시지를 가리킴
TAG → annotated tag object(commit을 가리킴, 메타데이터와 함께)
→ content-addressable: object의 ID가 그 내용의 해시(같은 내용 = 같은 해시).
