워킹 디렉터리란?


깃은 버젼 컨트롤 시스템(VCS)이 가지고 있는 특성 때문에 코드 작업을 하는 영역저장을 담당하는 영역으로 구분합니다.
이 영역들은 논리적으로 분리되어 있으며, 처음 깃을 학습할 때는 이러한 논리적 공간의 분리 때문에 깃을 학습하는데 어렵게 느끼곤 합니다.
하지만, 깃을 오류없이 원활하게 사용을 하기 위해서는 먼저 워킹디렉터리의 개념을 확실히 알고 가는 것이 나중에 더 혼란을 막을 수 있습니다.


저장공간


깃은 크게 작업 영역을 3개로 분리하여 관리 합니다.

  • 작업을 하는 공간(working)
  • 임시로 저장하는 공간(stage)
  • 실제로 저장하여 기록하는 공간(repository)

이렇게 깃이 여러개의 공간을 논리적으로 분리하는 이유는, 깃의 코드의 작업등의 동작과 작업 결과물의 이력을 저장하는데 좀 더 효율적으로 처리하기 위해서입니다.


작업을 하는 공간


깃의 3개의 작업 영역중 워킹 디렉터리는 코드를 생성하고 수정을 하는 작업 공간 입니다.

워킹 디렉터리 작업 공간은 컴퓨터 운영체제가 일반적으로 인식하는 폴더와 같은 상태 입니다. 코드 편집기, IDE등에서 신규로 코드 파일을 생성할 때 운영체제는 워킹디렉터리에 파일을 추가합니다. 또한 수정을 할때도 파일을 수정하여 변경된 내용을 워킹 디렉터리 안에 파일로 저장을 합니다.

워킹 디렉터리는 개발자의 작업, 운영체제에 의해서 수많은 변경이 잦은 영역이 됩니다. 워킹 디렉터리 안에서 작업되는 모든 잦은 변경 사항들이 다 의미가 있는 작업들은 아닙니다. 불필요한 의미의 수정작업들도 많기 때문입니다. 따라서, 깃은 무의미한 수정작업들을 분리하고 이를 구분하기 위해서 순수한 작업 영역인 워킹 디렉터리를 만들어 관리하는 것입니다.

깃은 워킹디렉터리 안에 있는 모든 파일과 상태들을 관리하지 않습니다. 개발자가 깃에게 관리를 요하는 통보를 한 파일들만 관리를 합니다. 이를 위해서 워킹 디렉터리는 임시영역인 스테이지 영역과 연관하여 파일을 추적하게 됩니다.

스테이지 영역은 나중에 좀더 자세히 설명하도록 합니다.


깃교과서

버전 관리 시스템의 이해와 설치부터 커밋, 브랜치, 임시 처리, 병합, 복귀, 서브모듈, 태그까지
깃, 소스트리, 깃허브로 실습하며 기본기를 탄탄하게 다진다!