빨간색코딩

git object 파헤치기 본문

Git

git object 파헤치기

빨간색소년 2017. 6. 3. 20:27

이전 포스팅(http://sjh836.tistory.com/37)에서도 정리했지만, 과 후배들에게 git에 대해 발표자료를 준비하다보니 시각적으로 좀더 보이는게 필요했다.. 명령어를 쳐보며 직접 git object들이 생성되가는 것을 본다면 git의 원리를 좀더 쉽게 이해할 수 있지 않을까 한다.


git은 4개의 object로 관리한다. 객체명은 SHA1로 40자리로 해쉬된다. 따라서 내용이 같으면 객체명이 같다. 객체들은 .git/objects에 위치한다. 내용을 까볼려면 git cat-file –p 객체명 으로 보면된다.

  1. blob
  2. tree
  3. commit
  4. tag

구조도

 

시나리오

test 디렉터리에 git init를 한 뒤에, hello.txt를 만들고 "안녕 나는 공부중이야" 를 저장한다. 그 뒤 git add하고 git commit한다. 마지막으로 git tag를 한다. 이 과정중에서 생성되는 object들을 보자.

1. blob

git add할 때 생성된다. 파일 내용이 들어 있다

2. tree

git commit할 때 생성된다. 타입과 객체명, 파일명이 기록된다.

3. commit

git commit할 때 생성된다. tree객체명, 부모commit객체명, author, committer, message를 기록한다. 이는 commit할때 git config에 있는 name과 email이 찍히는 거다.

4. tag

git tag할 때 생성된다. commit 객체명, tag이름, tagger, message가 기록된다.

Comments