Git의 3가지 상태
Git은 파일을 Committed, Modified, Staged 이렇게 세 가지 상태로 관리합니다.
Committed : 데이터가 로컬 데이터베이스에 안전하게 저장됐다는 것을 의미
Modified : 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은 것
Staged : 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태를 의미
이 세 가지 상태는 Git 프로젝트의 세 가지 단계와 연결돼 있습니다.
Git 디렉토리, 워킹 트리, Staging Area 이렇게 세 가지 단계를 알아보겠습니다.
Git 디렉토리
Git이 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳.
이 Git 디렉토리가 Git의 핵심이다. 다른 컴퓨터에 있는 저장소를 Clone 할 때 Git 디렉토리가 만들어집니다.
워킹 트리 (워킹 디렉토리)
프로젝트의 특정 버전을 Checkout 한 것
Git 디렉토리는 지금 작업하는 디스크에 있고 그 디렉토리 안에 압축된 데이터베이스에서 파일을 가져와서 워킹 트리를 만듭니다.
Staging Area (Index)
Git 디렉토리에 위치하며 단순한 파일이고 곧 커밋할 파일에 대한 정보를 저장합니다.
Git으로 하는 일은 기본적으로 아래와 같습니다.
1. 워킹 트리에서 파일을 수정한다.
2. Staging Area에 파일을 Stage 해서 커밋할 스냅샷을 만든다. 모든 파일을 추가할 수도 있고 선택하여 추가할 수도 있다.
3. Staging Area에 있는 파일들을 커밋해서 Git 디렉토리에 영구적인 스냅샷으로 저장한다.
Git 디렉토리에 있는 파일들은 Committed 상태입니다.
파일을 수정하고 Staging Area에 추가했다면 Staged입니다.
그리고 Checkout 하고 나서 수정했지만, 아직 Staging Area에 추가하지 않았으면 Modified입니다.
Git 저장소를 하나 만들었고 워킹 디렉토리에 Checkout도 했으면 파일을 수정하고 파일의 스냅샷을 커밋해보는 과정을 알아보겠습니다. 파일을 수정하다가 저장하고 싶으면 스냅샷을 커밋합니다.
워킹 디렉토리의 모든 파일은 크게 Tracked(관리대상임)와 Untracked(관리대상이 아님)로 나뉩니다.
Tracked 파일
이미 스냅샷에 포함돼 있던 파일
Tracked 파일은 또 Unmodified(수정하지 않음)와 Modified(수정함) 그리고 Staged(커밋으로 저장소에 기록할) 상태 중 하나입니다. 간단히 말하자면 Git이 알고 있는 파일이라는 것입니다.
Untracked 파일
Tracked 파일이 아닌 모든 파일
Untracked 파일은 워킹 디렉토리에 있는 파일 중 스냅샷에도 Staging Area에도 포함되지 않은 파일입니다. 처음 저장소를 Clone 하면 모든 파일은 Tracked이면서 Unmodified 상태입니다. 파일을 Checkout 하고 나서 아무것도 수정하지 않았기 때문에 그렇습니다.
마지막 커밋 이후 아직 아무것도 수정하지 않은 상태에서 어떤 파일을 수정하면 Git은 그 파일을 Modified 상태로 인식합니다. 실제로 커밋을 하기 위해서는 이 수정한 파일을 Staged 상태로 만들고, Staged 상태의 파일을 커밋하는 이런 라이프사이클을 계속 반복합니다.
'IT' 카테고리의 다른 글
[Git] Git이란? 버전관리를 하는 이유 (0) | 2023.06.01 |
---|---|
웹 프레임워크란? 프레임워크의 구조, MTV 패턴 (0) | 2022.09.04 |
folium 라이브러리 (0) | 2022.08.30 |
Matplotlib 란? NumPy 라이브러리 (0) | 2022.08.30 |
pandas 란? pandas 라이브러리 (0) | 2022.08.30 |
댓글