본문 바로가기

Tool/Git

(GIT) GIT 내부 파헤치지 - ADD (with gistory)

index : 파일의 이름 저장

objects: 파일의 내용 저장

 

 

똑같은 java 파일을 복사하고 add 하였을 때

cp src/main/java/org/example/gitTest2.java src/main/java/org/example/gitTest3.java

git add .

복사한 대상과 복사한 파일은 같은 오브젝트를 가리킨다.

즉, 깃은 파일을 저장할 때 파일의 이름이 달라도 파일의 내용이 같으면 같은 object파일을 가리킨다.


깃은 왜 내용이 같으면 왜 같은 파일로 취급하는 것일까?

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

 

hi가 hash 알고리즘을 통과하면 

c22b5f9178342609428d6f51b2c5af4c0bde6a42 이러한 텍스트를 얻을 수 있다.

 

objects 하위 : c2라는 디렉터리 생성

objects 하위 c2 하위 : b5로 시작해서 42로 끝나는 파일을 생성하여 hi라는 정보를 생성한다.

 

파일 경로 : [objects/c2/b5......42]

 

최종적인 해쉬값은 다를지언정 메커니즘은 똑같다.

 

정리

1. add 실행

2. git이 파일의 내용을 본다.

3. 파일의 내용과 특정 부가적인 정보를 조합하여 sha-1 알고리즘을 실행하여 해시 값 도출

4. 해당 값을 이용하여 위에선 언급한 폴더구조로 파일 저장

5. index에는 파일명을 저장

 

 

 

'Tool > Git' 카테고리의 다른 글

(GIT) Branch 정보확인  (0) 2019.12.25
(GIT) Branch 만들기  (0) 2019.12.25
(GIT) reset과 checkout의 원리  (0) 2019.12.25
(GIT) GIT 내부 파헤치지 - COMMIT (with gistory)  (0) 2019.12.25
(GIT) 명령어 정리  (0) 2019.12.25