본문으로 바로가기

gistory를 이용해 git add의 원리에 대해 알아봅시다.

 

새로운 폴더를 만들고 git init을 한 뒤에 f1.txt 파일을 생성하겠습니다.

그러면 어떻게 될까요?

 

objects폴더 밑에 f1.txt의 파일이 생겼습니다.

사실 f1.txt파일은 우리가 보기 쉽게 표현한 파일명이구요.

진짜 파일의 이름은 object\78\~~~ 입니다.

 

f2.txt 파일을 생성하게 되면 아래처럼 다른 이름을 가진 파일을 생성합니다.

objects 아래에 있는 파일들을 앞으로는 오브젝트 혹은 객체라고 말하겠습니다.

 

 

그럼 모든 파일이 생성 될때마다 다른 이름을 가질까요? 결론은 아닙니다.

기존의 있던 파일을 복사해서 새로운 파일을 생성하게 된다면?

 

 

 

??????????????????????????????????????????????????????????????????????????????

예상대로면 objects 폴더밑에 하나가 더 추가되어 3개가 보여야 하는데 

위의 그림처럼 두개만 보입니다.

왜 그럴까요? git은 파일의 내용을 보고 파일을 만든다고 합니다.

그렇기 때문에 내용이 같으면 파일명이 같아지는 것입니다.

 

 

 

어떤 원리로 파일명을 만들어질까요?

암호화 방식인 SHA1을 사용한다고 합니다.

 

http://www.sha1-online.com/

 

SHA1 online

sha-1 md5 md2 md4 sha256 sha384 sha512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru gost adler32 crc32 crc32b haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 ha

www.sha1-online.com

위 사이트를 들어가서 글자를 입력하면 SHA1 방식으로 변하는것을 알수있습니다.

그런데 파일에 있는 내용을 넣어도 만들어진 파일명과 다르다는것을 볼수 있을것입니다.

정확히 말하면 파일의 내용만을 가지고 만드는것은 아니고 좀 더 추가하는 부분이 있다고 합니다.

 

SHA1 방식으로 만들어진 파일명은 앞에서 두자리가 디렉토리 나머지가 파일명이라고 합니다.

 

예) 86f7e437faa5a7fce15d1ddcb9eaeaea377667b8

 

\objects\86\7e437faa5a7fce15d1ddcb9eaeaea377667b8