[GitHub 기초] 영역과 상태
카테고리: GitHub
태그: Git
영역
Git은 Working Directory, Staging Area, Git Directory(Repository) 3가지 작업영역으로 파일을 관리한다.
- Working Directory : Git이 추적 중인 파일들이 위치하는 영역으로 git init을 통해서 git이 관리하도록 지정된 디렉토리를 의미한다. 작업한 파일들이 저장되는 영역이다.
- Staging Area : commit 할 준비가 된 파일들이 위치하는 영역으로 버전으로 만들고자 하는 파일이 저장되는 영역이다. git에서는 index라고 부르기도 한다.
- Git Directory(Repository) : 커밋되어 버전을 관리하는 파일들이 위치하는 영역으로 프로젝트의 메타데이터와 객체 데이터베이스를 저장하고 프로젝트의 버전 정보를 관리하기 위한 모든 파일들이 저장되는 영역이다.
영역을 이해한다면 Git으로 하는 일은 다음과 같이 설명할 수 있다.
- Working Directory에서 파일을 수정한다.
- Staging Area에 파일을 스테이징해서 커밋할 스냅샷을 만든다. 모든 파일을 추가할 수도 있고 선택하여 추가할 수도 있다.
- 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 를 통해 스테이징을 완료한 파일들의 상태라고 볼 수 있다.
status 명령어를 통해 위의 상태들을 확인해 볼 수 있다.
$ git status