본문 바로가기

카테고리 없음

Git의 3가지 작업 영역

내용을 수정한 파일 중 커밋을 반영하고 싶은 파일은 git add를 해야한다.

Git은 내부적으로 크게 3가지 종류의 작업 영역으로 동작하고,

각 작업 영역의 이름은

  1. working directory
  2. staging area
  3. repository

이다.

첫 번째 작업 영역인 working directory는 작업을 하는 프로젝트 디렉토리이다.  실습상황에서는 MathTool 디렉토리.

두 번째 작업 영역인 staging areagit add를 한 파일들이 존재하는 영역이다.  커밋을 하게되면 staging area에 있는 파일들만 커밋에 반영된다.

세 번째 작업 영역인 repository는 working directory의 변경 이력들이 저장되어 있는 영역.   커밋들이 저장되는 영역인 셈이다.  풀어서 설명하자면

  • working directory에서 뭔가 작업을 하고,
  • 작업한 파일들을 git add 해주고,
  • 커밋을 하면 staging area에 있던 파일들의 모습이 마치 영화의 한 장면, 스냅샷(snapshot)처럼 이 repository에 저장된다.

실제로는 MathTool 디렉토리 안에 숨겨져 있던 .git 디렉토리가 repository이다.

 

예를 들자면, 

  1. working directory에서 A.txt 파일과 B.txt 파일을 작성하고 
  2. git add A.txt git add B.txt를 실행해서 A.txt, B.txt 둘다 staging area에 올리면
  3. 그 다음 git commit -m "Ver_1"를 실행해서 staging area에 있는 파일들을 가져와 커밋으로 남긴다.

 

  1. working directory에서 A.txt 파일 내용에 Python~이라는 단어를 추가, B.txt 파일 내용에 Morning!이라는 단어를 추가. 
  2. 그런데 이번에는 git add B.txt만 실행해서 B.txt 파일만 staging area에 올린다.
  3. 그 다음 git commit -m "Ver_2"로 두 번째 커밋을 하면,

A.txt는 staging area에 올리지 않고, B.txt만 staging area에 올렸다.

그럼 지금 repository에서 그 결과가 어떠할까?? 

  • A.txt는 staging area에 있던 모습, 그러니까 수정하기 이전의 모습이 Ver_2 커밋에 반영되었고
  • B.txt도 staging area에 있던 모습, 하지만 A.txt와는 달리 수정한 이후의 모습이 Ver_2 커밋에 반영된다.

A.txt, B.txt 둘다 working directory에서 수정했다는 사실은 같지만, staging area에 올렸는지 여부에 따라 그 최신 모습이 커밋에 반영되는지가 달라진다. 바로 이 점이 Git을 사용할 때 잘 알고 기억해야하는 부분입니다.