[Git] Git 파해치기 - #1 Git 객체

    이전글

    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 객체명, 태그 이름, 태그 생성자, 태그 메시지 등을 저장

    댓글

    Designed by JB FACTORY