이번 포스팅에서는 깃(Git)의 영역에 대하여 공부를 해보고자 한다.
Git의 3가지 영역
Git은 Working Directory, Staging Area, Git Directory(Repository) 3가지 작업영역으로 파일들을 관리한다.
working directory
현재 작업하고 있는 영역. 즉, 작업한 파일(생성, 수정한 파일)들이 저장되는 공간을 말한다.
Git에서 git init를 사용해서 저장소가 생성된 이후에 Git이 관리하는 디렉터리
.git 디렉토리를 제외한 모든 것(파일, 하위 디렉토리)
working tree라고 말하기도 한다.
staging area
로컬저장소에 저장하기전에 준비하는 과정이 발생하는 영역이다.
$git add 명령어로 전달한 파일들이 존재하는 영역
commit할 준비가 되어있는 파일들이 위치한다.
commit을 하게 되면 staging area에 있는 파일들만 commit에 반영된다.
.git 디렉토리에 단순한 파일로 존재한다.
index라고 하기도 한다.
repository
로컬저장소, 폴더 및 파일들을 저장하는 공간을 말한다.
commit 된 파일들이 버전별로 관리 되며, 누가 커밋했는지, 언제 저장 되었는지 기록된다.
프로젝트의 버전 정보를 관리하기 필요로 한 모든 파일이 저장되어 있다.
working directory의 변경 이력들이 저장되어 있는 영역이다.
commit들이 모여있는 저장소라고 할 수 있다.
Git의 3가지 상태
Git은 파일의 변경사항들을 버전별로 관리하기 위해서 파일들을 Committed, Modified, Staged 3가지 상태로 관리한다.
위에 3가지 영역과 연관지어 생각해보면 이해하기 쉽다.
Modified
파일이 수정되었으나, 로컬 데이터베이스에 commit 되지 않는 상태를 말한다.
Working Directory 영역에 있는 파일들 중 수정을 한 파일들의 상태를 의미한다.
→ 커밋된 파일이나 Index 영역에 있는 파일을 수정해야 Modified 상태가 된다.
로컬 저장소에 저장되지 않은 내용은 commit 하지 않은 파일이다.
Staged
수정한 파일들 중 commit 할 것이라고 표시한 상태를 말한다.
Index 또는 Staging Area 영역에 있는 파일들의 상태를 의미한다..
수정한 파일을 commit 하기 위해 기다리고 있는 중이다.
Commited
Staged 상태의 파일들이 로컬 데이터베이스에 안전하게 commit 된 상태(스냅샷으로 저장된 상태)를 말한다.
commit 된 대상 파일은 Working Directory 영역으로 돌아가게 되고 대상 파일의 버전을 관리하는 파일들은 Git Directory(Repository)에 저장된 상태를 의미한다.
Commited 상태 대상 파일을 수정하게 되면 Modified 상태가 된다.
Git 파일의 LifeCycle 관점에서 본 4가지 상태
파일이 갖고 있는 상태, 혹은 상태에 대한 변화를 LifeCycle 이라고 한다.
LifeCycle 관점에서 본 파일들은 크게 Tracked 상태, Untracked 상태 2가지 상태로 나뉜다.
이때, Tracked 상태는 Tracked, Unmodifeid, Modified, Staged 4가지 상태 로 분류된다.
Git의 파일들은 반드시 해당 4가지 상태중 하나의 상태를 가지게 되고, 4가지 상태를 반복적으로 순환한다.
Untracked
Working Directory에 존재는 하지만 git이 관리를 하지 않는 파일들의 상태를 말한다.
Working Directory에 새롭게 만들어진 파일들도 해당된다.
git add 명령어를 사용하지 않은 파일들이 이에 해당 된다.
Unmodified
수정을 하지 않은 파의 상태를 말한다.
한 번 이상 commit 된 파일 중 수정을 하지 않은 파일 또는 다른 저장소의 파일들을 clone 하였을 때의 파일들을 의미한다.
→ committed와 같은 상태
Modified
수정을 한 파일의 상태를 말한다.
Unmodified 상태의 파일을 수정을 하게 되면 Modified 상태 파일이 된다.
Staged
commit 하고자 하는 파일의 상태를 말한다.
위에서 살펴본 Staging Area 영역에 있는 파일의 상태이다.
Untracked 상태의 파일 혹은 commit 된 이후 수정이 진행된 파일(Modified 상태의 파일)을 git add 명령을 수행하게되면 해당 파일들은 Staged 상태가 된다.
'Git & GitHub' 카테고리의 다른 글
[Git] 깃(Git) 협업을 위한 명령어(2) (6) | 2022.11.07 |
---|---|
[Git] 깃(Git) 협업을 위한 명령어(1) (2) | 2022.11.06 |
[Git] 깃(Git) 기본 명령어 (0) | 2022.11.05 |
[Git] 깃(Git) 기본 설정 (0) | 2022.11.04 |
[Git] 깃(Git)은 무엇인가? (0) | 2022.11.02 |