Git Object 란?
- Git 에서 변경사항을 추적하기 위해 사용한다.
Git Object 의 4가지 타입
Blob
- Binary Large OBject 의 줄임말이다.
- 각 버전의 파일이 blob 으로 표현될 수 있다.
- 바이너리 파일이며, Git DB 에서는 SHA1 hash 로 이름이 지정된다.
Tree
- Git 의 디렉터리를 표현한다.
- blob 혹은 다른 tree (하위 디렉토리) 를 참조한다.
- 디렉토리의 각 항목당 한 줄로 구성된다.
- 각 줄에는 오브젝트 유형, SHA1 해시, 파일 이름, 파일 실행 권한이 포함된다.
Commit
- 리포지토리의 현재 상태를 가지고 있다.
- 디렉토리와 파일의 상태를 기록하고 있는 Tree 오브젝트를 가리킨다.
- 작성자, 커미터, 커밋 메세지, 부모 커밋에 대한 링크도 가지고 있다.
Tag
- 커밋과 유사하다.
- 태그 작성자, 태그되는 사람의 이름, 타임 스탬프를 포함한다.
- 표시된 버전 릴리즈에 사용되는 기록의 한 지점을 캡쳐하기 위한 것이다.
- 태그 객체는 체크섬 처리된다.
- 태그 작성자 이름, 이메일, 날짜, 태그 메세지 등을 포함한다.
- GNU Privacy Guard (GPG) 로 서명 및 검증 가능하다.
Git Object 가 작동하는 절차
- Git Repository 의 파일이 변경되면, 상태를 기억하는 새 blob 객체를 생성한다.
- 파일이 스테이징 영역에 추가되면 (
git add
), Git 은 디렉토리의 현재 상태를 나타내는 새 tree 객체를 생성한다. - 변경 사항이 커밋되면 Git 은 새 commit 객체를 생성한다. 이 때 생성된 commit 객체는 이전 단계에서 만든 tree 오브젝트를 가리킨다.
- 태그는 나중에 쉽게 참조할 수 있도록 특정 커밋을 표시하기 위해 언제든 만들 수 있다. 태그가 생성되면 Git 은 새 태그 객체를 만든다.
- 이러한 객체는 모두 Git 리포지토리의
.git/objects
디렉토리에 저장된다. 태그는 오브젝트의 콘텐츠를 기반으로 하는 고유 식별자인 SHA-1 해시로 식별된다.
반응형
'깃' 카테고리의 다른 글
git show 명령어란? (0) | 2023.06.10 |
---|---|
git diff 명령어란? (0) | 2023.06.10 |
git cat-file 명령어란? (0) | 2023.06.07 |
git stash 명령어 설명과 예시 정리 (0) | 2022.06.05 |
git switch 명령어란? (0) | 2022.05.28 |