git 배워보기 / gistory로 본 git add, object 원리

이상기·2023년 3월 24일
0

git

목록 보기
8/9
post-thumbnail

git의 관여 범위

Git이 있는 파일에 단순하게 파일을 추가했다고 Git이 관여하지 않는다. 본격적으로 Git의 관리 대상이 되기 위해선

fit add <파일명>

이 선행되어야 한다.

이 명령어를 작업후 gistory를 새로고침을 해주면 바뀐 것을 알게되는데 아래 사진을 보자.

해당 사진에 Objects 파일이 추가된것을 볼 수 있다.

이 파일을 눌러보니 내가 vim editor를 통해 작성한 f1.txt파일의 파일명과 내용이 출력이 되는것을 볼 수 있다.

그렇다면 이 Objects 파일에 이 내용이 든게 아니고 gistory가 편의성을 위해 보여주는 것일 뿐이다. Objects하위 파일에는 이러한 정보들은 들어있지 않다

이러한 정보는 index 파일의 기록되게 되는데 아래의 사진을 보면 된다.

이 index에는 파일명이 담겨있고 Objects에서는 이 파일의 내용이 들어있게된다.

만약 f1. txt를 f3.txt로 복사하여 이를 add 한다면 어떻게 될까?

f2.txt는 무시하고 보면된다.

지금 'f1.txt의 d0~4d'와 'f3.txt의 d0~4d' 가 완전히 일치한다는 것을 알 수 있다. 그리고 기존 f1.txt가 내용이 저장된 objects 파일을 들어가 보니 아래와 사진처럼 f1.txt와 f2.txt가 같은 파일을 가리킨다는 것을 알 수 있다.

이를 통해 내용이 같다면 모두 같은 인덱스로 처리한다는 것을 알 수 있다.

이는 어떻게 가능한가?

gistory - Objects 의 원리

git은 우리가 어떤 내용을 입력하면 그 내용을 Sha1 Hash 알고리즘을 적용시켜서 아래 사진과 같은 값으로 만든다.

그후 앞의 두 자리를 따와서 objects의 내부 파일을 만들어 해당 내용의 정보를 저장하는 것이다. 그 후 인덱스 파일에서 내가 만들 파일의 이름과 objects 내부의 저장된 sha1 hash 알고리즘으로 변환된 내용이 기술 된다.

profile
DBA가 되고싶은 사람입니다

0개의 댓글