git

index / object

HUCHUCHU 2019. 12. 2. 16:11

.git의 원리

 

python 설치 

cmd 에서 pip install gistory 명령어로 gistory 설치

git bash로 .git이 있는 디렉토리에서 gistory실행하자 Please execute in .git directory 라는 문구 뜸

gistory .git으로 실행함

실행 후 localhost:8805 로 접속

gistory 끌 때 : ctrl+c

 

** 상위 경로로 이동할 때 cd ..

.git 안에있는 파일들. 이 파이들에대해 알아보자!

 

디렉토리에 f1.txt파일 추가 후 gistory를 보면 아무런 변화가 없음!

=>파일을 생성하기만하면 git에서 관여 할 부분이 없기때문

 

git add

생성한 파일을 add 후 gistory를 보면 index와 objects가 새로 생김

index : 각각의 파일명과 파일명에대한 정보가 있다

objects : 객체들의 내용에 대한 정보가 있다

 

1) f1.txt add

index와 objects에 f1.txt에대한 정보가 생성

2) f2.txt add

index와 objects에 f2.txt에대한 정보가 생성

3) f1.txt를 copy 한 f3.txt 생성 후 add

f1.txt와 f3.txt가 같은 object를 가리키고있다

***git은 파일을 저장할 때 파일 명이 달라도 내용이 같으면 같은 object파일을 가리킨다

==> 중복파일관리에 용이함

그리고 이것은 내가 생성한 파일에 국한되는것이아니다

 

objects 파일명

SHA1 Online 접속

검색창에 입력하면 hash알고리즘을 통하여 text를 얻는다. text 중 앞 두글자를 따서 objects아래 디렉토리를 만들고, 그 아래  f4~4d에 해당하는 파일을 만들어서 그 안에 hello라는 정보를 저장한다

따라서 git add를 하게되면 git은 add되는 정보를 확인하고 hash알고리즘을 거쳐 고유 index값을 부여한다

index에는 내가 지정한 파일명+index

objects에는 index에 담긴 정보가 있다

 

commit

commit 또한 object로 관리된다

tree: 버전에 해당하는 파일의 이름과 index를 확인할 수 있다

 

f2.txt 수정 후 commit

commit object에 이전 commit과 최근 commit에 대한 정보가 담겨져있다

tree에는 commit한 시점의 정보들이 담겨져있기때문에 tree를 통해 버전에 대한 정보를 알 수 있다

**object는 크게 세가지 종류가 있다: tree, commit, blob

 

출처: 생활코딩