Important
- 로컬 설정 파일
Nice To Have
- refs 디렉토리
- HEAD 파일
- 해싱 함수의 기초
- 깃 오브젝트
이번 섹션은 깃을 사용하는데에 있어서 크게 중요하지는 않다.
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
'프로그래밍 > Git & Github' 카테고리의 다른 글
[Git & Github] 20. 사용자 지정 Git Alias 작성하기 -完- (0) | 2022.11.06 |
---|---|
[Git & Github] 19. Reflog의 힘 - '사라진' 작업 복구하기 (0) | 2022.11.06 |
[Git & Github] 17. Git tag: 히스토리상의 중요한 순간에 표시하기 (0) | 2022.11.04 |
[Git & Github] 16. Interactive Rebase를 사용하여 히스토리 삭제하기 (0) | 2022.11.04 |
[Git & Github] 15. 리베이스(Rebase)는 가장 까다로운 Git 명령어일까? (0) | 2022.10.27 |