[Git] Git 내부 데이터베이스(Database, DB) 작동 원리

2025. 9. 12. 19:14VCS/Git

반응형

관계형 데이터 베이스(RDBMS, Relational Database Management System)

관계형 데이터베이스는 데이터가 열과 행의 테이블(또는 '관계') 하나 이상에 저장되는 사전 정의된 관계로 데이터를 구성하는 정보 모음으로, 이를 사용하면 서로 다른 데이터 구조가 어떻게 서로 연관되어 있는지 쉽게 확인하고 이해할 수 있다. 관계는 이러한 테이블 간의 상호작용을 기반으로 설정되는 여러 테이블 간의 논리적 연결이다.

커밋(Commit)의 구성 요소

  • 메타데이터(metadata): 커밋 메시지(commit message), 이메일(email), 날짜, 시간
  • 프로젝트 스냅샷의 hash값
  • 부모 커밋의 hash값

프로젝트 스냅샷의 hash값이 참조되는 원리

만약 다음과 같이 root 프로젝트의 src, res라는 하위 경로(폴더, 디렉토리)가 있고 각각에 다음과 같은 파일들이 존재한다고 가정하자.

root
├── src
│   ├── a.txt
│   │   └── "aa"
│   ├── b.txt
│   │   └── "bb"
│   └── c.txt
│       └── "aa"
└── res
    ├── d.txt
    │   └── "d"
    └── e.txt
        └── "e"

 이때, a.txt 파일과 c.txt 파일은 동일한 내용인 "aa"란 내용을 가지고 있기 때문에 결과적으로 git의 데이터베이스에는 다음과 같이 각 파일 수에 해당하는 5개의 hash값이 저장되는 것이 아니라 총 4개의 hash값(Hash 알고리즘에서 동일한 입력에 대해서는 동일한 hash값을 출력으로 반환하므로)을 갖게 된다.

root
├── src
│   ├── a.txt
│   │   └── "aa" (961b6dd3ede3cb8ecbaacbd68de040cd78eb2ed5889130cceb4c49268ea4d506)
│   ├── b.txt
│   │   └── "bb" (3b64db95cb55c763391c707108489ae18b4112d783300de38e033b4c98c3deaf)
│   └── c.txt
│       └── "aa" (961b6dd3ede3cb8ecbaacbd68de040cd78eb2ed5889130cceb4c49268ea4d506)
└── res
    ├── d.txt
    │   └── "d" (18ac3e7343f016890c510e93f935261169d9e3f565436429830faf0934f4f8e4)
    └── e.txt
        └── "e" (3f79bb7b435b05321651daefd374cdc681dc06faa65e374e38337b88ca046dea)

 

 

 

 

 

 

 

 

 

 

참고 자료

 

Git 강의 - Git 마스터 패키지(4주) | 코드숨

당신의 두 번째 Git 강의. Git의 내부 구조 학습을 통해 원리부터 응용까지 배워봅니다.

www.codesoom.com

 

반응형

'VCS > Git' 카테고리의 다른 글

[Git] Fork 설치 방법  (0) 2025.09.06
[Git] Git 설치 방법  (0) 2025.09.06