[Git] Staging Area란? commited, modified, staged 상태 - Git 기초(2)

Git status
[그림 1] 세 가지 상태 ( 출처 : Git 공식 홈페이지 )

 

 

Git은 파일을 Commited, Modified, Staged 이렇게 세 가지 상태로 관리한다. 각 상태의 의미는 다음과 같다.

 

  • Commited : 데이터가 로컬 데이터베이스에 안전하게 저장됨
  • Modified : 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은 상태
  • Staged : 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태

 

Git Directory는 Git이 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳으로 Git의 핵심이다. 다른 컴퓨터에 있는 저장소를 Clone 할 때 이 Git 디렉터리가 만들어진다.

 

Working Directory는 프로젝트의 특정 버전을 Checkout한 것이다. 쉽게 말하면 내가 작업하고 있는 프로젝트의 디렉터리를 뜻한다. Git Directory는 지금 작업하는 디스크에 있고 그 디렉터리 안에 압축된 데이터베이스에서 파일을 가져와 Working Directory를 만든다.

 

Staging Area는 Git Directory에 있으며 곧 커밋할 파일에 대한 정보를 저장하는 곳이다. Git의 동작을 기본적으로 살펴보면 다음과 같다.

 

 

 

Git의 동작
[그림 2] Git의 동작

 

1. Working Directory에서 파일을 수정한다. 수정한 파일을 git add를 통해 Staging Area에 올린다.

2. Staging Area에 파일을 Stage 해서 커밋할 스냅샷(Snapshot)을 만든다. 모든 파일 혹은 일정 파일을 선택하여 추가할 수 있다.

3. Staging Area에 있는 파일들을 commit 해서 Git Directory(Repository)에 영구적인 스냅샷으로 저장한다.

 

Git 디렉토리에 있는 파일들은 Committed 상태다. 파일을 수정하고 Staging Area에 추가했다면 Staged 상태이다. 만약 Checkout 한 뒤 수정했지만, 아직 Staging Area에 추가하지 않았다면 Modified 상태이다. 

 

 

[그림 3] 파일의 상태

 

파일의 관점에서 보면 파일은 4가지 단계로 나뉜다.

 

  • Untracked : Git으로 버전 관리를 하지 않는 상태. 파일을 추적 관리하지 않는 상태
  • Unmodified : git add로 파일이 Staging Area에 올라갔지만 파일에 변경은 없는 상태. Git은 이 파일을 추적 관리한다.
  • Modified : 추적 관리하던 파일이 수정된 상태
  • Staged : Staging Area에서 file이 staged 되어 반영된 상태.

 

 

 

 

 


참고

 

1. https://git-scm.com/book/ko/v2

 

반응형

댓글

Designed by JB FACTORY