티스토리 뷰

Git의 Database

 🔥 깃 (Git) 의 내부에는 Key-Value 데이터베이스가 존재하고 이러한 데이터베이스에는 모든 종류의 콘텐츠를 저장할 수 있다.

 

𝌞 모든 종류의 콘텐츠 𝌞

  • Git의 Commit 내용
  • Git이 관리하는 폴더 명
  • Git이 관리하는 파일 명
  • Git이 관리하는 파일 내용

 

💡 모든 형태의 데이터는 해쉬 함수를 거쳐 해시 값을 Key로 하여 Key-Value로 저장한다. 동일한 데이터의 경우 하나 만 저장되기 때문에 데이터를 효율적으로 구성할 수 있다. Git이 많은 커밋을 모두 저장 하면서도 데이터를 가볍게 가져갈 수 있는 방법이다.

 

🤔 Git의 데이터 베이스는 데이터가 안전하게 보관될 수 있도록 수정(Update)•삭제(Delete)는 제공하지 않고 검색•추가만 가능하다

 

Git의 커밋 ( Commit )


커밋(Commit) 에 포함되는 데이터

  • 메타 데이터 ( 커밋 메시지, 이메일, 날짜•시간 )
  • 프로젝트 스냅샷 hash
  • 부모 커밋의 hash
% git log
- Commit Hash Value 확인
% git cat-file -p commit-hash-value

tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904
parent b3a5b79e7499a94886f83bf816ddf90db15d6045
author Hero <81640511+icraft2170@users.noreply.github.com> 1663074190 +0900
committer Hero <81640511+icraft2170@users.noreply.github.com> 1663074190 +0900

Commit Hash 값으로 Commit 복구하기(Reset)

git reset --hard 0397f09

💡 reset(복구) 메커니즘
  1. 커밋에 해시 값으로 커밋 정보를 찾는다.
  2. 커밋 정보에 있는 Root Directory의 해시 값으로 해당 디렉터리를 찾는다.
  3. Root Directory에 값에서 각 Directory를 찾는다
  4. 같은 메커니즘으로 반복

 

참조

 

Git - Git Objects

You will get a different hash value because of different creation time and author data. Moreover, while in principle any commit object can be reproduced precisely given that data, historical details of this book’s construction mean that the printed commi

git-scm.com

 

https://www.codesoom.com/courses/git

최근 주요기업 개발자 요구사항 Git등의 분산 버전 관리 시스템에 익숙하신 분 Git을 사용한 프로젝트 관리 경험이 있으신 분 Git을 사용한 소스형상관리 사용 경험이 있으신 분 Git과 Github에 대한

www.codesoom.com

 

댓글