우리는 Git 상에서 파일을 생성하거나 변경 후 커밋할 파일에 대해서 git add "파일명"을 하게 된다.
git add "파일명"을 하게 되면 git 내부적으로 index 파일이 위와 같이 수정된다. 위의 내용은 f1.txt가 Git 상에 add되었고 f1.txt 파일 내용이 objects/78/98~에 위치하고 있다는 뜻이다.
objects/78/98~ 파일을 보면 f1.txt의 내용이 "a"인 것을 알 수 있고 해당 파일이 f1.txt라고 명시되어 있지는 않지만 index 파일을 통해서 해당 파일이 f1.txt 라는 것을 알 수 있다. 또한, Git에서는 objects/78/98~ 파일을 객체라고 부른다.
위 사진을 보다시피 f3.txt의 내용을 f1.txt의 내용과 같이 해서 생성했다. index 파일을 보면 f3.txt가 f1.txt와 똑같은 객체를 가리키는 걸 알 수 있다. 이 뿐만 아니라 다른 사람들이 다른 git 저장소에서 "a"라는 내용으로 똑같이 파일이 생성해도 위와 같이 objects/78/98~ 객체를 가리킨다.
즉, 파일 내용이 같으면 같은 객체 파일을 가진다. 그 이유는 파일 내용에 특정 절차를 거친 후 sha-1 알고리즘을 통해 변환 시키기 때문이다. 그래서 데이터의 중복을 없앨 수 있다.
'Git(생활코딩)' 카테고리의 다른 글
Git 혁신(1) - branch (0) | 2017.06.12 |
---|---|
Git 원리(2) - commit (0) | 2017.06.11 |
Git 기본(4) - 변경사항, 과거 돌아가기 (0) | 2017.06.05 |
Git 기본(3) - add (0) | 2017.06.04 |
Git 기본(2) - 버전 만들기(commit) (0) | 2017.06.04 |