Git 파헤치기 - Git의 3가지 작업 영역 🐾

Yubin's velog ! ·2023년 8월 11일

Git 101 😎

목록 보기
3/8

Git 의 3가지 작업 영역

1. Working directory (= Project directory, Working tree)
2. Staging area ( = index)
3. Repository

보통 수정한 파일 중에서 커밋에 반영하고 싶은 파일은 git add 하여서 진행을 하는데, 향후 Git의 사용을 보다 더 이해하기 위해서 해당 과정을 digging 해보자 !

Definition / Process

  • 첫번째 작업 영역인 working directory은 작업을 하는 디렉토리를 일컫기
  • 두번째 작업 영역인 staging areagit add 한 파일들이 존재하는 영역이며, commit을 하게되면 staging area에서 있는 파일들만 커밋에 반영
  • 세번째 작업 영역인 repository는 working directory의 변경 이력들이 저장되어 있는 곳 = 커밋들이 저장되어 있는 영역

즉, working directory에서 무언가 작업 + 작업한 파일들을 git add 진행 + 커밋을 하면 staging area에 있던 파일들의 모습이 snapshot 처럼 repository에 저장

staging area에 있는 파일들만 커밋 대상이 된다는 것을 명심하자 !
즉, staging area에 올렸는지 여부에 따라 어떤 최신 모습이 커밋에 반영되는지 달라진다.

** Staging area에 있던 것들은 커밋을 하더라도 그것과 상관없이 계속 남아있다는 것을 잊지 말자 !


Example case

a. ver_2의 경우를 보면, 처음 버전인 ver_1 "Hello" & "Good" 에서 각각 "Python~" & "Morning" 이 추가되었다.

  • 플젝 디렉토리 (= working directory)에서 작업

b. 여기서 "Morning" 이 수정된 B.txt 파일만 add가 되었다.

  • B.txt만 staging area에 올렸다 (= staging area에는 B.txt만 존재한다)

c. 커밋에 반영된 모습은 A.txt는 수정하기 이전의 모습 (ver_1) & B.txt는 수정하기 이후의 모습

  • Why? 수정하고 나서 staging area에 올린 파일은 B.txt 이기에

이쯤되면 왜 working directory에서 바로 커밋해버리는 구조가 아닌 git add를 통한 staging area가 중간에 껴있는지 궁금할 수 있지만, 파일을 작업하다 보면 많이 마주하게 되는 (?) 항상 모두 반영을 원치 않을 때가 종종 있기 때문이다.

즉, 세밀한 버전 관리를 위해서 staging area 가 있고, 이는 원하는 것들만 선별적으로 커밋에 반영할 수 있게끔 해준다 !



Reference: Codeit

0개의 댓글