index : 파일의 이름 저장
objects: 파일의 내용 저장
똑같은 java 파일을 복사하고 add 하였을 때
cp src/main/java/org/example/gitTest2.java src/main/java/org/example/gitTest3.java
git add .
복사한 대상과 복사한 파일은 같은 오브젝트를 가리킨다.
즉, 깃은 파일을 저장할 때 파일의 이름이 달라도 파일의 내용이 같으면 같은 object파일을 가리킨다.
깃은 왜 내용이 같으면 왜 같은 파일로 취급하는 것일까?
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 |