티스토리 뷰

728x90
반응형

본 내용은 생활코딩 - 지옥에서 온 git을 보고 공부했습니다. 조언은 언제든지 감사합니다 !

(Git add의 원리 이어집니다.)


commit을 하게 되면 이 commit된 내용 역시 add와 마찬가지로 객체화 되어 .git/objects 디렉토리 안에 저장이 된다.

commit 객체의 내용을 살펴보면

tree

parent

작성자 정보

commit 내용

이 있다.

중요한 것은 2가지 인데,

tree는 commit했을 당시 작업 공간에 있던 파일들의 이름과 내용(해당 objects 디렉토리 정보)을 참조하고 있다. (index를 따로 묶어 놓았다고 생각)

parent는 이전 버전의 commit 객체 디렉토리를 참조하고 있다. 최초의 commit 객체에는 당연히 이 정보가 없다.

 

이런 식으로 commit이 객체처럼 보관되고 이 commit은 다시 tree라는 객체와 이전 버전의(commit) 객체를 가리키고 있다. 쉽게 말해서 트리 구조처럼 묵여 있는 것 같다.


commit을 다른 식으로 표현하면 작업했을 당시를 스냅샷으로 남기는 것이라고 한다.


이로써 objects 디렉토리 안에 객체로 저장되는 정보는 3가지가 된다.


blob - 파일의 내용(을 담고있는 객체를 참조) + 파일 이름

tree - blob들을 묶어놓은 객체 + 경우에 따라서 다른 tree도 참조

commit - tree(혹은 blob) + 이전 commit 참조 + 작성자 정보 + commit 작성 내용


이것들을 바탕으로 working directory(init을 했던 폴더) - stage area(index) - repository 관계를 보면


My Git Workflow

지금까지 add, commit이란 명령어에 대해 배웠고, 그로인한 workspace - staging area - (local)repository 의 관계에 대해 공부했다.

즉 주로 저장소에 데이터를 저장하는 것들을 배운 것이고, 앞으로 저장했던 버전들을 이제 끌어 오는 걸 공부할 것이다.

그리고 더 나아가 remote repository (원격 저장소) 에 대해 배워 협업까지 가능하도록 공부해 보겠다.

728x90
반응형

'Git 공부' 카테고리의 다른 글

Git branch merge  (0) 2019.03.11
Git branch  (0) 2019.03.10
Git add의 원리  (0) 2019.03.09
Git 변경사항 확인 git log -p, git diff  (0) 2019.03.09
Git stage area  (0) 2019.03.08
댓글