Git의 구조와 파일의 상태

JaeungE·2021년 7월 28일
0

개발자의 친구들

목록 보기
1/5
post-thumbnail

개발자라면 플랫폼은 달라도 대부분 Git을 이용해서 협업 및 버전 관리를 할 것으로 생각한다.

그만큼 자주 사용하는 프로그램이기 때문에 Git을 좀 더 이해하기 위해서 Git의 기본 구조와 파일의 상태에 대해 다뤄보려고 한다.🙂



Git의 구조

Gitworking directory, staging area, repository의 세 영역으로 구분되어 있다.


working directory

working directory는 말 그대로 현재 작업 중인 공간을 의미한다.

working directory에 있는 파일들은 tracked 상태 혹은 untracked 상태를 가지게 되는데, 파일의 상태에 대한 자세한 설명은 아래에서 다시 하도록 하겠다.



staging area(index)

staging areaindex라고도 불리는데, working directory의 파일 중에서 repository에 저장할 파일을 임시로 보관하는 영역이다.

git add 명령을 사용하면 파일을 working directory에서 staging area로 올리게 되는데, 이동이 아니라 복사를 한다는 사실을 기억하자!😠

이 뜻은 파일을 git add 명령을 이용해서 staging area에 올렸다면, 그 뒤에 해당 파일을 수정하더라도 다시 git add를 하지 않는다면 해당 내용이 commit에 반영되지 않는다는 의미다.



repository

staging area에 있는 파일들을 git commit 명령을 이용해서 repository에 저장하게 된다.

commit을 통해 저장된 내용은 물리적으로 git init 명령을 통해 생성된 .git 폴더에 저장하기 때문에, 실수로 .git 폴더를 지워버리면 해당 프로젝트의 로그가 사라지게 되니 조심하도록 하자!🙂





파일 상태

위에서 설명한 Git의 구조와 아래의 파일 상태까지 이해하면, Git의 전체적인 흐름을 이해하는데 도움이 많이 된다!😃


Untracked

Untracked 상태의 파일은 말 그대로 Git이 추적하고 있지 않은 상태다.

보통 파일을 처음 추가하고 git add 명령으로 staging area에 올리지 않았다면 갖게되는 상태다.

이 상태의 파일을 staging area에 한 번이라도 올리게 된다면, 의도적으로 cache를 제거하지 않는 한 tracked 상태를 유지하게 된다.



Tracked

Tracked 상태는 Git이 해당 파일의 변동을 추적하고 있는 상태다.

Tracked 상태의 파일은 Tracked 외에도 다양한 상태를 가질 수 있는데, 아래에서 자세히 설명하겠다!



Staged

Staged 상태는 해당 파일이 staging area에 올라가 있는 상태를 말한다.

파일이 한 번이라도 staging area에 올라가게 되면 tracked 상태를 유지하므로, staged 상태의 파일은 동시에 tracked 상태이기도 하다.

기본적으로 새로 생성한 파일은 위의 세 가지 상태를 가지게 된다.



Commit 이후의 상태

staging area에 있던 파일을 commit 하게 되면, tracked 상태의 파일이 staged 상태가 되기 전에 두 가지 상태를 가지게 된다.

사실상 Modified 하나만 알아도 무방하지만, 그래도 분리해놨다 ㅎㅎ..;😅


Unmodified

commit 이후에 Git이 추적하고 있는 파일, 즉 tracked 상태의 파일이 수정되지 않으면, unmodified 상태를 가지게 된다.

파일의 내용이 변하지 않았기 때문에 commit의 대상이 되지 않는다.



Modified

Git이 추적하고 있는 tracked 상태의 파일의 내용이 수정되면, modified 상태를 가지게 된다.

파일의 내용이 변했기 때문에 git add 명령을 이용해서 다시 staging area에 올려줘야 commit이 가능하다.





여기까지 Git의 기본적인 구조와 파일의 상태에 대해 알아보았다.

위에서 설명한 내용을 몰라도 Git을 사용하는 데 딱히 지장은 없으나, 알고 있으면 Git이 어떻게 동작하는지 흐름을 제대로 파악할 수 있다고 생각해서 정리해봤다.😋

0개의 댓글