프로그래밍 관련 도구/Git

Git(git status의 원리)

benjykim 2017. 7. 30. 10:48
반응형

* Index와 objects 파일을 비교하면 커밋할 것이 있는지 없는지를 확인할 수 있다.


-> 예를 들어 working directory의 d1/f1.txt와 index의 d1/f1.txt의 내용이 일치한다면 

    현재 커밋할 것이 없다. ( working directory는 git bash에서 작업하는 디렉터리로 이해하면 된다.)



1. f1.txt 의 파일을 수정한 뒤 git status를 하면 

   f1.txt가 빨간색 텍스트로 표시된다.



-> 결국 gistory에서 working directory의 f1.txt의 내용과  Index상에서의 f1.txt의 내용이 다르면 

    파일이 수정된 것을 알 수 있다.


-> 이후 git add f1.txt를 한 뒤 다시 gistory를 reload 하면 수정한 내용이 반영됨을 알 수 있다. 

    f1.txt의 내용과 수정한 f1.txt의 내용이 같으니 git은 f1.txt파일이 커밋 대기상태임을 알 수 있다.


* git add 한 뒤 Index와 objects 파일 비교

save image


save image



-> object ID가 다르다는 것을 알 수 있다.(*중요*)

( 커밋하지 않아서 ID가 다르다. 이후 커밋하면 object ID가 동일해짐. )


-> 즉, 깃은 인덱스의 내용과 최신 커밋의 트리가 가리키는 f1.txt의 내용이 다르다면 

    현재 f1.txt는 index에 add가 되어서 커밋 대기상태임을 알 수 있다.



2. f1.txt 파일을 add한 뒤 commit 한다.


-> f1.txt 파일을 커밋한 뒤 reload 하면 최신 objects의 f1.txt의 오브젝트 ID+내용,

    Index의 오브젝트 ID+내용 그리고 working directory 에서의 f1.txt의 내용이 정확하게 일치하기 때문에

    git status를 했을 때 더이상 커밋할 것이 없다고 알려준다.


* commit

save image



* Index

save image



3. git status 명령어로 현재 상태를 확인한다.




* 참고 : working directory - index, staging area, cache - repository





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

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



반응형

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

Git(branch_log,diff 정리)  (0) 2017.08.02
Git(branch 정리)  (0) 2017.08.02
Git(git commit의 원리)  (0) 2017.07.30
Git(objects 파일명의 원리)  (0) 2017.07.30
Git(git add의 원리)  (0) 2017.07.30