IT's Jenna

CH 9. Git 내부 동작 원리 본문

Git/팀 개발을 위한 Git, GitHub 시작하기

CH 9. Git 내부 동작 원리

developer Jenna 2024. 8. 26. 07:52

1. git add 명령의 동작 원리

동작원리 확인 명령어 : 저수준(low level) 명령어

 

git status : 워킹트리, 스테이지, HEAD 커밋 세 가지 저장 공간의 차이를 비교

git hash-object 파일명 : 해시 체크섬 확인, 같은 내용의 파일인 경우 늘 같은 값이 나옴, 값이 다르면 텍스트가 다른 것

 

git add 명령시

체크섬 값과 동일한 이름을 가지는 blob(binary large object)객체가 생성됨

객체는 .git/objects 파일에 저장, 스테이지 내용은 .git/index에 기록됨

 

2. git commit 명령의 동작 원리

git status했을 때 clean 하다는 것은 워킹트리, 스테이지, HEAD의 내용이 모두 똑같다는 것!

 

커밋하면 스테이지의 객체로 tree 객체 생성

커밋에는 커밋 메시지와 tree 객체 포함

 

3. 커밋 객체 살펴보기

커밋 순서

  1. 트리 객체 생성
  2. HEAD 갱신 (이전 HEAD를 부모로 하는 커밋 객체 생성 후 새로운 커밋을 HEAD로 지정)

 

중복 파일 관리

blob 객체는 내용이 같으면 같은 체크섬을 가지기 때문에 수정한 내용이 같으면 같은 내용의 체크섬을 가질 수 있음

커밋을 여러개 만들거나 같은 파일을 다른 폴더에 복사해서 여러개 만드는 경우라도 파일 내용이 같으면 하나의 blob 객체로 관리됨

-> 사용자들은 신경쓸 필요 없음, git이 알아서 중복 파일들을 동일한 blob 객체로 처리하는 것!

 

4. 브랜치 작업 동작 원리

브랜치는 커밋의 참조일 뿐!

브랜치 생성하면 .git/refs/heads 위치에 브랜치 명의 파일이 하나 생성되는 것 뿐

브랜치 삭제하면 해당 파일이 삭제됨

 

git switch 순서

  1. .git/HEAD 파일을 수정하여 참조하는 브랜치를 변경
  2. 스테이지와 워킹트리를 HEAD가 가리키는 커밋과 동일한 내용으로 변경하는 것

 

5. 9장 요약

Comments