시스템 개발 및 관리/Git 사용법

Git의 3가지 작업 영역

Data Jun 2025. 3. 9. 20:00

Git을 효과적으로 사용하려면 내부적으로 **세 가지 작업 영역(Working Directory, Staging Area, Repository)**이 어떻게 동작하는지 이해하는 것이 중요합니다. 이 개념을 확실히 익혀두면 Git을 활용할 때 어려움 없이 효율적으로 관리할 수 있습니다.

 

Working Directory (작업 디렉토리)

Working Directory는 사용자가 직접 작업하는 공간으로, 프로젝트 파일들이 위치하는 디렉토리를 의미합니다. 예를 들어, 현재 해당 디렉토리에서 작업 중이라면, 이 디렉토리가 Working Directory입니다.

 

Staging Area (스테이징 영역)

Staging Area는 git add 명령어를 통해 변경된 파일들이 저장되는 공간입니다. 즉, 커밋을 하기 전에 어떤 변경 사항을 포함할지 결정하는 단계라고 볼 수 있습니다. Git에서는 git add를 실행해야 해당 변경 사항이 Staging Area로 이동하며, 이후 커밋을 하면 Staging Area의 내용만 반영됩니다.

 

Repository (저장소)

Repository는 프로젝트의 변경 이력을 관리하는 공간으로, 커밋된 내용들이 저장되는 곳입니다. Git은 Repository에 스냅샷(snapshot) 방식으로 변경 사항을 기록하며, 필요할 때 과거 버전으로 되돌릴 수도 있습니다. 실제로 Repository는 프로젝트 디렉토리 내부의 .git 폴더에 저장되며, 모든 변경 이력이 이곳에서 관리됩니다.

 

 

 

  • A.txt, B.txt 파일을 Working Directory에서 생성.
  • git add A.txt, git add B.txt 실행 → Staging Area에 올림.
  • git commit -m "Ver_1" 실행 → Repository에 저장.

결과:

  • A.txt와 B.txt의 내용이 그대로 커밋됨.
  • Repository에는 Ver_1이라는 커밋이 생성됨.

 

 

  • A.txt의 내용을 Hello Python~으로 수정.
  • B.txt의 내용을 Good Morning!으로 수정.
  • git add B.txt 실행 → B.txt만 Staging Area에 올림.
  • git commit -m "Ver_2" 실행 → Repository에 저장.

결과:

  • A.txt는 Staging Area에 올라가지 않았기 때문에 이전 버전 그대로 유지됨.
  • B.txt는 Staging Area에 올라갔기 때문에 수정된 최신 내용이 커밋됨.
  • Ver_2 커밋에는 수정된 B.txt만 반영되었으며, A.txt는 여전히 Ver_1 상태를 유지.

 

Staging Area가 필요한 이유

 

"그냥 git commit으로 바로 저장하면 안 될까?"라고 생각할 수 있지만, Staging Area는 세밀한 버전 관리를 위해 필수적입니다.

Staging Area의 역할

선택적인 커밋 가능 → 모든 파일을 한꺼번에 커밋하는 것이 아니라, 원하는 파일만 선택하여 반영 가능.
부분적인 변경 적용 가능 → 특정 파일 또는 특정 변경 사항만 포함할 수 있음.
커밋을 더 세밀하게 관리 가능 → 하나의 변경을 여러 단계로 나누어 커밋할 수 있음.

실제 프로젝트에서는 한 번에 여러 파일을 수정하는 경우가 많습니다. 이때 Staging Area가 없다면 모든 변경 사항이 한꺼번에 커밋되어 세밀한 버전 관리가 어렵습니다.

 

정리

  • Working Directory: 실제 파일이 존재하는 작업 공간.
  • Staging Area: git add를 실행하면 커밋할 파일이 올라가는 공간.
  • Repository: git commit을 하면 최종적으로 변경 사항이 저장되는 공간.

Staging Area 덕분에 우리는 원하는 파일만 선택적으로 커밋할 수 있으며, Git을 보다 유연하게 사용할 수 있습니다.
이 개념을 확실히 이해하면 Git을 활용하는 데 훨씬 수월해질 것입니다!

 

추가 팁
✔ Working Directory는 Working Tree라고도 함.
✔ Staging Area는 Index라고도 불림.
✔ 따라서 다른 문서에서 Working Tree, Index라는 용어가 등장해도 당황하지 말고, 같은 개념임을 기억하세요