Important

  • 로컬 설정 파일

 

Nice To Have

  • refs 디렉토리
  • HEAD 파일
  • 해싱 함수의 기초
  • 깃 오브젝트

 

이번 섹션은 깃을 사용하는데에 있어서 크게 중요하지는 않다.

 

 

.git 폴더의 구성요소들

config 파일을 직접 수정하거나 명령어를 통해서 깃의 설정을 로컬 또는 글로벌로 바꿀 수 있다.

 

refs/

브랜치 포인터, 태그 포인터 등 커밋을 가리키는 참조값이 저장된다.

 

HEAD

커밋 해시(분리된 상태) 또는 브랜치/태그 포인터를 가리키는 참조값이 저장된다.

 

object/

저장소의 모든 데이터를 저장한다. 커밋, 트리, 블롭, 주석 태그 4종류의 깃 객체가 저장된다.

 

 

깃은 SHA-1이라는 해시 함수를 사용한다.

key(해시)-value(파일) 형식으로 작동한다. 사용자가 해시를 제시하면 파일을 반환해주는 구조이다.

깃의 해시는 반드시 깃 오브젝트와 연결되어있다.

 

깃은 해시값의 변경 여부를 확인해서 파일의 변경여부를 체크하게 된다.

오브젝트 폴더에는 해싱된 파일들이 저장되고 브랜치나 커밋 변경 시 해시 값으로 파일들을 참조하게 되는것으로 보인다.

 

$ git cat-file -p <hash>

 

위의 명령어로 해시값을 건네서 값을 돌려받을 수 있다.

 

블롭(Blob, Binary Large Object)

파일 내용을 저장하는 객체. 파일이 담고 있는 내용 그 자체이다. 파일명을 제외하고 오직 내용만 저장한다.

 

트리

디렉토리 내용을 저장한다. 블롭을 가리키는 포인터와 트리를 가리키는 포인터 둘 다 가지고 있다.

블롭의 파일명은 트리가 저장한다.

 

커밋

커밋을 하게되면 트리, 부모 등이 저장된다. 체크아웃이나 브랜치를 생성하면 해당 커밋의 트리를 토대로 작업 영역을 구성하게 된다.

 

$ git cat-file -t <hash> # 객체의 종류를 알려준다. tree/blob/commit

+ Recent posts