[Git] Git 파해치기 - #1 Git 객체
- 본업/etc.
- 2023. 7. 7.
이전글
2023.06.29 - [본업/etc.] - [Git] Git이란? - #2 Git의 주요 특징
Git의 객체
https://git-scm.com/book/en/v2/Git-Internals-Git-Objects
Git - Git Objects
You will get a different hash value because of different creation time and author data. Moreover, while in principle any commit object can be reproduced precisely given that data, historical details of this book’s construction mean that the printed commi
git-scm.com
Git은 프로젝트의 변경 사항을 추적하고 관리하기 위해 내부적으로 .git/objects
디렉토리에서 네 가지 유형의 객체(object)를 관리한다.
이객체들은 Git의 핵힘적인 작동 방식을 이해하는데 중요한 역할을 한다.
각각의 객체 유형은 개별적인 파일로 존재한다.
(예를 들어 한 번의 커밋과 두 개의 blob 객체는 총 세 개의 파일로 존재하게 된다)
각각의 객체는 고유의 SHA-1 해시를 가지며 이 해시를 통해 식별 및 참조된다.
즉, 객체의 내용이 같다면 해시의 내용도 같은 셈이다.
Blob 객체
add
명령어가 수행되는 시점에 생성- 순수하게
add
된 컨텐츠의 내용만을 저장 - 하지만 이름이나 파일 타입(확장자) 등의 메타 데이터는 저장되지 않음
Commit 객체
commit
명령어가 수행되는 시점에 생성- 커밋에 대한 정보(부모 커밋, 작성자, 실행자, 날짜, 메시지 등)와 커밋 시점에 생성된 Tree 객체의 이름(id)을 저장
- Tree 객체를 통해 해당 커밋에서의 디렉토리 및 파일의 상태를 확인할 수 있음
Tree 객체
commit
명령어가 수행되는 시점에 생성- 커밋 시점의 디렉토리와 파일 상태를 표현, 이를 위해 추가적은 Tree 객체와 Blob 객체를 가질 수 있음
Tag 객체
tag
명령어가 수행되는 시점에 생성- 태그 시점의 commit 객체명, 태그 이름, 태그 생성자, 태그 메시지 등을 저장
'본업 > etc.' 카테고리의 다른 글
[NGINX] Nginx 서비스 중단 및 제거 (0) | 2023.09.07 |
---|---|
[Git] Git이란? - #2 Git의 주요 특징 (0) | 2023.06.29 |
[Git] Git이란? - #1 Git의 설계 목표 (0) | 2023.06.26 |
[Git] 버전 관리 시스템의 종류 (0) | 2023.06.22 |
[Git] 버전 관리 시스템(Version Control System)의 역사? (2) | 2023.06.19 |