[Git] 인프런 - 지옥에서 온 Git - git의 원리

June·2021년 5월 28일
0

[Git] 

목록 보기
2/12

분석도구 gitstory 소개

git add

새로운 두개가 생긴걸 알 수 있다.

1이라는 파일이 담겨있는 파일의 이름은 index에 담겨있다.

즉 파일의 이름은 index에 파일 내용은 objects에 있다.

f1을 복사한 것이 f3인데 index에 보면 같은 objects 인것을 알 수 있다.
git에서는 파일의 이름이 달라도 내용이 같으면 같은 object 파일을 가리킨다.

깃은 어떻게 내용이 같으면 같은 파일로 생각하는걸까?

Objects 파일명의 원리

git은 우리의 파일 내용을 sha-1을 이용해서 해쉬 값을 얻는다. 해쉬 값의 맨앞 두글자로 폴더 이름을 짓고 나머지로 파일명을 정한다.

commit의 원리

커밋메세지가 objects로 저장된 것을 알 수 있다. 또한 tree라는 값을 클릭하면f1.txt, f2.txt, f3.txt 내용을 알 수 있다.

트리에 parent라는 것이 생겼다

바뀌기 전이다

바뀌고 난 후이다.

커밋에는 이전 커밋이 무엇인지 (부모), 커밋이 일어난 시점에 작업 디렉토리의 파일의 이름과 파일 내용이 담겨져 있다. 이런거를 스냅샵이라 부른다. 즉 버전별 스냅샷을 트리를 이용해 관리한다.

복사한 것이니 d1/f1.txt와 f1.txt의 해쉬값은 같다.

objects는 크게 3가지다. 1. 파일의 내용을 담는 것 2. 디렉토리의 파일명과 파일명에 해당하는 내용을 담는 blob을 담는 정보, 3. 커밋

status의 원리

어떻게 git status 명령어를 입력했을 때 커밋할 것이 있는지 없는지 알 수 있을까?

index와 최신 커밋을 비교하면된다.

workspace가 프로젝트 폴더이다. 여기서 add를 하면 index 파일에 등록된다. commit을 하면 respository에 저장된다.

0개의 댓글