지옥에서 온 Git (2)

git add의 원리

  • 모든 file의 이름은 index에 담겨 있음

  • 각각의 file 내용은 object에 담겨 있음
  • Git에서는 file의 이름이 달라도 같은 내용을 담고 있는 경우, 같은 object를 참조(하단 설명 참고)

objects 파일명의 원리

  • Git은 파일의 내용을 기반으로 object 파일의 이름을 생성
  • 이는 중복 데이터를 저장하는데 매우 효율적으로 작동
    • 같은 내용을 가진 파일에 대한 object를 생성하지 않기 때문
  • 파일의 내용 + additional information으로 이루어진 값을 "sha1"에 통과시키기 때문에 같은 내용을 지닌 파일은 결국 같은 object명 사용하게 됨

commit의 원리

  • commit message 또한 object화 되어 생성됨

  • commit message에는 현재 version이 참조하는 object들이 tree 형태로 담겨 있음(각각의 버전에 대한 Snap shot)

  • 최초 commit 이후에는 parent commit을 제공하며, 이는 이전 version의 commit message를 참조


  • local에서의 폴더 정보 역시 'tree' 자료형으로 저장됨
  • 즉, object는 tree(directory), blob(file), commit(commit message) 중에 하나의 자료형을 가짐

status의 원리

  • index 내 파일들과 local 파일들을 비교하여 add 필요 여부 판단
  • index 내 파일들과 최신 commit message의 tree 내 파일들의 차이를 비교하여 commit 대기 상태 여부 판단


'Software Convergence > Git' 카테고리의 다른 글

지옥에서 온 Git (3)  (0) 2018.08.27
지옥에서 온 Git (1)  (1) 2018.08.22

+ Recent posts