[GitHub 기초] 영역과 상태

업데이트:

카테고리:

태그:

영역

Git은 Working Directory, Staging Area, Git Directory(Repository) 3가지 작업영역으로 파일을 관리한다.

  • Working Directory : Git이 추적 중인 파일들이 위치하는 영역으로 git init을 통해서 git이 관리하도록 지정된 디렉토리를 의미한다. 작업한 파일들이 저장되는 영역이다.
  • Staging Area : commit 할 준비가 된 파일들이 위치하는 영역으로 버전으로 만들고자 하는 파일이 저장되는 영역이다. git에서는 index라고 부르기도 한다.
  • Git Directory(Repository) : 커밋되어 버전을 관리하는 파일들이 위치하는 영역으로 프로젝트의 메타데이터와 객체 데이터베이스를 저장하고 프로젝트의 버전 정보를 관리하기 위한 모든 파일들이 저장되는 영역이다.

image

영역을 이해한다면 Git으로 하는 일은 다음과 같이 설명할 수 있다.

  1. Working Directory에서 파일을 수정한다.
  2. Staging Area에 파일을 스테이징해서 커밋할 스냅샷을 만든다. 모든 파일을 추가할 수도 있고 선택하여 추가할 수도 있다.
  3. Staging Area에 있는 파일들을 커밋해서 Git Directory(Repository)에 영구적인 스냅샷으로 저장한다.

상태 , 파일 Life cycle

Working Directory의 파일은 크게 Tracked 상태와 Untracked 상태로 분류된다. Tracked 상태는 세부적으로 Unmodified, Modified, Staged 상태로 분류되므로 총 4개의 상태로 분류된다.

Git의 모든 파일은 이 4가지 상태 중 하나의 상태를 가지며 반복적으로 순환하게 된다.

  • Untracked : Working Directory에 존재는 하지만 git이 관리를 하지 않는 파일 상태로 Working Directory에서 새로 생성된 파일의 상태가 이에 해당된다.
  • Unmodified : 수정을 하지 않은 파일 상태로 한번이상 commit이 진행되었으나 현재 수정을 하지 않은 파일 또는 clone을 통해 복제해온 파일의 상태가 이에 해당된다.
  • Modified : 수정이 일어난 파일 상태로 Unmodified 상태의 파일을 수정하였으나 스테이징을 하기 전 상태라고 할 수 있다.
  • Staged : commit 하고자 하는 파일의 상태로 Staging Area에 있는 파일들의 상태가 이에 해당되고 add 를 통해 스테이징을 완료한 파일들의 상태라고 볼 수 있다.

image

status 명령어를 통해 위의 상태들을 확인해 볼 수 있다.

$ git status