프로그래밍 관련 도구/Git

Git(git add의 원리)

benjykim 2017. 7. 30. 00:03
반응형

* git bash에서 작업한 내용입니다.


1. mkdir gitfth2                       


2. git init


3. vim f1.txt (text : 'a' 입력)       //t1.txt를 만든 뒤 git add를 하지 않으면 gistory에 반영되지 않는다.


4. git add f1.txt                       //이 명령(add) 이후부터 gistory에 f1.txt의 내용이 반영된다.


5. vim f2.txt (text : 'z' 입력)


6. git add f2.txt


7. cp f1.txt f3.txt     


8. git add f3.txt                


* 1~8의 명령을 수행한 뒤 gistory 화면 결과


save image



* 1번째 오브젝트를 클릭한 결과   

(\78\981922..........4e85는 78번 디렉터리에 있는 981.....e85파일을 의미한다._


save image



* 2번째 오브젝트를 클릭한 결과는 위의 사진과 같이 z 내용이 출력되고 

그 아래 f2.txt가 출력된다. (사진 생략)


* Index를 클릭한 결과 


save image


->여기에서 주의해야할 점은 f1.txt와 f3.txt는 같은 오브젝트를 가리키고 있다


깃은 어떤 파일을 저장할 때 파일의 이름이 달라도 파일의 내용이 같으면

같은 오브젝트 파일을 가리킨다.


1만개의 파일이 있는데 파일들의 내용이 모두 똑같다면 

1만개의 파일은 똑같은 오브젝트 파일을 가리킨다. (*중요*)

(깃은 위와 같은 경우에 생길 수 있는 어마어마한 중복을 제거한다.)


그러면 깃은 어떻게 내용이 같으면 파일의 이름이 같을까?(추후 공부할 예정)

그리고 여러분의 만든 파일의 text내용이 a라면 그 파일이 저장되어있는 오브젝트의 이름도 7898...e85이다.

(실제 파일상으로는 78디렉터리에 98로 시작하는 파일명에 담겨있게 될 것이다.)


즉, 내용이 같다면 내가 혹은 아무개가 작성하든 간에 이름이 7898...e85이 된다!







*이 포스트는 이고잉님의 '지옥에서 온 Git'강의를 참고하여 작성했습니다.

URL : https://opentutorials.org/course/2708

반응형

'프로그래밍 관련 도구 > Git' 카테고리의 다른 글

Git(branch 정리)  (0) 2017.08.02
Git(git status의 원리)  (0) 2017.07.30
Git(git commit의 원리)  (0) 2017.07.30
Git(objects 파일명의 원리)  (0) 2017.07.30
Git(git init,add,status,commit,log,diff,reset 정리)  (0) 2017.07.28