" async="async">
', {
cookie_domain: 'auto',
cookie_flags: 'max-age=0;domain=.tistory.com',
cookie_expires: 7 * 24 * 60 * 60 // 7 days, in seconds
});
Git Object (깃 오브젝트, 깃 객체) 란? — 제이크서 개발 블로그
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 해시로 식별된다.