status의 원리
19 Feb 2019 | github 지옥에서 온 gitstatus의 원리
- 
    
index라는 파일, status의 명령이 어떻게 동작하는지에 대한 공부(직관적인 이해)
 - index 파일과 최신 커밋 파일(tree)의 비교를 통해 
git status가 커밋할 파일이 있는지, 없는지를 결정- 두 내용이 일치하면 
git status에서 커밋할 내용이 없다고 판단 
 - 두 내용이 일치하면 
 vim f2.txt로 내용을 변경 후,git status로 확인해보면f2.txt파일이 수정 된 것을 확인 할 수 있음- git은 index 파일에 적혀있는 
f2.txt의 내용의 값과 실제f2.txt의 내용이 다르다면, 해당 파일이 수정 되었다고 감지 
- git은 index 파일에 적혀있는 
 git add f2.txt를 하고,git status로 확인하면, 수정 된 것은 똑같으나changes to be committed를 확인 가능- 즉, 커밋 대상에 포함 된 상태가 됨
 - 두 개의 상태를 
gistory로 확인해보면, object에 새로운 파일이 추가된 것을 확인 가능(커밋 대기 상태) 
- 이를 통해 git은 index의 내용과 최신 커밋의 tree가 가르키고 있는 
f2.txt의 내용이 다르다면, 현재f2.txt는 index에 add되어 커밋 대기 상태가 된 것을 알 수 있음 git commit을 하고 커밋 메세지를 작성 후 gistory를 확인하면, 커밋이 만들어졋고 그 tree에는f2.txt의 고유번호가 index과 tree가 같게 된 것을 확인 가능- index와 저장소와 프로젝트 폴더 세가지가 정확하게 일치하기 때문에 
git status로는 더이상 커밋할게 없다고 알려주게 됨 
- index와 저장소와 프로젝트 폴더 세가지가 정확하게 일치하기 때문에 
 - index 파일과 commit의 tree 사이의 관계를 정리해보면?
 
- workspace는 우리가 
.git디렉터리 바깥의 프로젝트 폴더를 의미 - workspace에서 
git add를 하게 되면 해당 내용들이index파일에 등록되고, 커밋을 하면index에 등록된 내용들이local repository에 저장됨- object가 저장 되며, commit object, tree, 파일이 저장 됨
 
 
- staging area는 위의 그림에서 index파일, 즉 커밋 대기 상태인 staging area에 올라간 상태를 의미
 - 
    
woriking directory에서
git add를 하게 되면 saging area,git commit하면 repository에 저장 됨 - git의 구조
    
- workspace = working directory = work tree
 - index = staging area = cache
 - repository
 
 
        
            Seongkyun Han's blog