programming/TIL

[지옥에서 온 Git]개념_기본

mimyo_ 2020. 7. 28. 19:49

[2020. 07. 28 ~ 29]

Git은 object 간의 연결로 구성된다.

그림 1. git의 기본 구조

1. object 식별자

  -sha-1알고리즘에 의해 생성된다.

  -파일의 내용으로 식별자가 생성된다.(파일의 내용이 같다면 같은 식별자를 가진다.)

 

2. git add 실행 시 back ground 처리

  -식별자 별로 object가 생성된다.

  -각 파일과 식별자의 index정보가 저장된다.(link 정보)

 

3. git commit 실행 시 back ground 처리

  -object tree정보를 담은 object가 생성된다.(link 정보의 object)_snapshot을 찍었다고 표현.

  -commit 정보를 연결하는 object가 생성된다.(link 정보의 object)

   ・commit 정보에는 관련 object tree object 식별자와 parent commit 식별자가 함께 저장된다.

 

4. git status 실행 시 back ground 처리

 -working directory의 contents와 blob object를 비교 : 변화가 있는 지 확인

 -tree obejct와 index의 비교 : 변화가 commit 대기상태인지 확인

소감. multi table로 구성된 관계형DB와 같은 형태인 듯 하다.
       하나의 object가 최소단위의 data 항목을 소지하고 있는 듯 보인다.
       내용을 기준으로 blob object를 구성하는 것이 git이 data의 부하를 줄인다고 하는데,
      코드가 조금이라도 다를 경우 다른 blob object가 된다면 부하를 줄이는 데 얼마나 효과적일 것인가? 하는 의문.