#13 Git : 원리 - status

김현준·2022년 10월 10일
0

GIT

목록 보기
13/41

이번에는 index 라는 파일이 무엇인지 status 라는 명령이 어떻게 동작하는지 지레짐작해보겠습니다.

📌 index파일과 status의 원리는 무엇인가?

git status 명령을 했을때 커밋할 파일이 없다는것을 git 은 어떻게 알고있을까요?

gistoryindex 파일과

가장 최근에 생성된 object 파일의 트리의 내용을 비교했을때
두 내용이 같으면 현재 커밋할 것이 없다고 판단합니다.

f2.txt 파일의 내용을 y\nz 에서 x\ny\nz 로 변경해보겠습니다.

이때 git status 명령을 쓰면 f2.txt 파일이 변경되었다고 알려줍니다.
git 은 과연 어떻게 이 사실을 알게되었을까요?

📌 git은 어떻게 status를 통해 변경된 사항을 알려줄까?

추정해보면 , gistory 에서 index 파일의 f2.txt 해쉬값
현재 f2.txt 파일의 내용이 가지는 해쉬값이 다르다면 우리에게 f2.txt 라는 파일이 수정되었다는것을 알려줄 수 있습니다.

현재 f2.txt 파일은 add 를 하지 않은 상태이기 때문에 수정만 했을뿐 커밋의 대상이 되지않습니다.

하지만 git add f2.txt 를 통해서 f2.txt 는 커밋의 대상이 됩니다.

gistoryobject 에서 f2.txt 파일의 내용과

gistory 에서 indexf2.txt 파일의 내용이 같을때 f2.txt 파일이 커밋가능한 상태임을 확인 할 수 있습니다.

또한 이때 해쉬값인 04ec35a6dc0776b83fdb3d9d238007c7dea360c8

가장 최근 커밋의 트리파일에서 f2.txt 의 해쉬값이 2795c87096b42d4b7b8fda82a67dabded5c72c97 로 서로 다르다는 것을 확인할 수 있는데 이를 통해 f2.txt 파일은 add 가 된 상태이고 커밋가능한 상태임을 확인할 수 있습니다.

이후 git commit 을 하겠습니다.

커밋을 했기 때문에 가장 최근의 커밋 트리의 f2.txt 해쉬값이
indexf2.txt 해쉬값과 04ec35a6dc0776b83fdb3d9d238007c7dea360c8 로 같게됩니다.

또한 디렉토리에있는 f2.txt 파일의 내용도 x\ny\nz 로 일치합니다.

따라서 3가지 조건이 총족하게 됩니다.

  • 저장소 - repository
  • 인덱스 - index
  • 프로젝트 폴더 - working directory

위 3가지 요소가 모두 내용이 같을때 gitstatus 명령을 통해
더이상 커밋할 파일이 없다 라는것을 확인 할 수 있습니다.

git working directory vs index vs repository 라고 구글에 검색을 하면 다음과 같은 사진을 얻을 수 있습니다.

프로젝트 폴더( workspace , working directory ) 에서 add 를 하게 되면 그 내용들이 index 파일에 등록됩니다. 이후 커밋을 하면 index 파일에 등록된 내용들이 여러분의 repositoryobject 로 저장됩니다.
commit object , tree , file 총 3가지가 저장됩니다.

또한 index 는 커밋되기전 상태를 뜻하므로 staging area 라고도 부릅니다.

지금까지 status 의 원리와 index 파일에 대해 알아보았습니다.

profile
울산대학교 IT융합학부 22학번

0개의 댓글