[Git] Git의 3가지 영역: 작업 디렉터리, 스테이징 영역, 로컬 저장소 완벽 이해

Git이 파일을 관리하는 방식은 다른 버전 관리 시스템과 차별화되는 독특한 구조를 가지고 있습니다. Git을 제대로 이해하기 위해서는 파일이 이동하는 세 가지 핵심 영역을 반드시 알아야 합니다.


## 1. 작업 디렉터리 (Working Directory)

  • 다른 이름: 워킹 트리 (Working Tree)
  • 설명: 사용자가 눈으로 보고 직접 파일을 수정하는 실제 작업 공간입니다. 내 컴퓨터의 폴더에 있는 파일들 그 자체를 의미합니다.
  • 상태: 이곳에 있는 파일들은 Git의 관점에서 ‘추적됨(Tracked)’ 또는 ‘추적되지 않음(Untracked)’, 그리고 ‘수정됨(Modified)’ 상태일 수 있습니다.

## 2. 스테이징 영역 (Staging Area)

  • 다른 이름: 인덱스 (Index)
  • 설명: 다음 버전(커밋)에 포함될 파일들을 임시로 모아두는 공간입니다. 작업 디렉터리에서 수정한 파일 중, 내가 “이 파일들은 이번 커밋에 포함시켜야지”라고 선택(git add)한 파일들이 이곳으로 올라옵니다.
  • 비유: 택배를 보내기 전에 보낼 물건들을 상자에 담아 포장해 두는 ‘포장대’와 같습니다. 아직 택배 기사님(커밋)이 가져간 것은 아닙니다.

## 3. 로컬 저장소 (Local Repository)

  • 설명: 커밋들이 영구적으로 저장되는 곳입니다. 스테이징 영역에 있던 파일들이 git commit 명령어를 통해 **하나의 버전(스냅샷)**으로 기록되어 이곳에 안전하게 보관됩니다.
  • 비유: 포장이 완료된 택배 상자들이 차곡차곡 쌓여 있는 ‘물류 창고’입니다. 언제든지 과거에 보냈던 택배 기록을 찾아볼 수 있습니다.

## 파일의 이동 흐름

Git을 이용한 작업 흐름은 이 세 가지 영역 사이를 오가는 과정입니다.

  1. 작업 디렉터리에서 파일을 수정합니다.
  2. 수정한 파일 중 저장하고 싶은 것만 골라 git add 명령어로 스테이징 영역으로 보냅니다.
  3. 스테이징 영역에 모인 파일들을 git commit 명령어로 로컬 저장소에 영구적으로 기록합니다.

이 3단계 구조 덕분에 개발자는 수정한 모든 파일을 한꺼번에 커밋하지 않고, 논리적으로 연관된 변경 사항만 선택적으로 묶어서 정교하게 버전을 관리할 수 있습니다.