우리는 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

+ Recent posts