깃 Object
깃 Object 종류에는 크게 3가지가 있다.
1. Blob
2. Tree
3. Commit
Blob
파일의 실제 내용이 저장된다.
파일 이름이나 다른 메타데이터는 저장하지 않는다.
파일 내용에 따라 해시를 생성한다.
일종의 불변 객체
SHA1 체크섬을 이용해서 파일 내용을 식별할 수 있다.
Tree
Blob 또는 다른 Tree 객체의 해시값이 저장된다.
Git에서 일종의 스냅샷 역할을 한다.
Commit
해당 커밋이 가리키는 트리 객체의 해시값과 이전 커밋을 가리키는 커밋 객체의 해시값이 저장된다.
사실상 Git에서 가장 중요한 객체
커밋 메세지도 포함한다.
Git add, commit 시, Git Object의 변화
Git add
1. 파일이 생성된다.
2. Git add를 한다.
git add A
3. 파일을 해시화하여 저장한 Blob 객체를 생성한다.
4. Index에 어떤 파일이 추가되었는 지 기록한다.
이때 index에는 "파일 모드", "Blob 객체의 해시값", "스테이지 번호", "원본 파일 경로"를 기록한다.
Git commit
1. index 내용을 바탕으로 Tree 객체를 생성한다.
2. 이 Tree 객체에는 파일명과 해시값이 저장된다.
이때 tree object에는 "파일 모드", "파일 타입", "Blob 객체의 해시값", "원본 파일 경로"를 저장한다.
그리고 해당 내용을 다시 해시화한 것이 Tree Object의 디렉토리명 및 파일명이 된다.
3. Tree 객체를 생성한 후, Commit 객체도 생성한다.
4. Commit 객체에는 이전 Tree의 해시값과 현재 생성된 Tree 객체의 해시값을 저장한다.
이때 commit object에는 "현재 Tree Object의 해시값", "이전 Tree Object의 해시값", "커밋 작성한 사람", "커밋 메세지"가 들어간다.
'부스트캠프 > 챌린지' 카테고리의 다른 글
[부스트캠프 웹모바일 9기] 챌린지 Day16 학습정리 (0) | 2024.08.05 |
---|---|
[부스트캠프 웹모바일 9기] 챌린지 3주 차 회고 (1) | 2024.08.05 |
[부스트캠프 웹모바일 9기] 챌린지 Day11 학습정리 (0) | 2024.07.29 |
[부스트캠프 웹모바일 9기] 챌린지 2주 차 회고 (0) | 2024.07.28 |
[부스트캠프 웹모바일 9기] 챌린지 Day 9 학습 정리 (0) | 2024.07.25 |