[GIT] 깃의 영역

MJ·2022년 8월 8일
0

GIT

목록 보기
3/33
post-thumbnail

GIT의 저장 단계

GIT은 작업중인 소스코드를 로컬저장소에 저장할 때 3가지의 단계를 거쳐서 저장하게 됩니다.
3가지 영역들에 대한 내용을 확인 해봅시다.


🍏 GIT의 3가지 단계

GIT은 파일을 관리할 떄 Working Directory | Staging Area(Index) | GIT Repository 3가지
단계를 거쳐서 관리합니다.


Working Directory

  • 소스코드를 작업하고 있는 디렉터리 폴더
  • 작업한 파일들이 저장되는 공간
  • GIT에서 git init를 사용해서 저장소가 생성된 이후에 GIT이 관리하는 디렉터리
  • git add 명령어를 사용해서 Staging Area영역에 저장할 수 있음

Staging Area

  • 로컬저장소에 저장하기전에 준비하는 과정
  • commit할 준비가 되어있는 파일들이 위치하는 단계
  • 보통 index 라고 부름
  • git commit 명령어를 사용해서 저장소에 저장할 수 있다.

Repository

  • 로컬저장소, 폴더 및 파일들을 저장하는 공간
  • commit 된 파일들이 버전별로 관리 되며, 누가 커밋했는지, 언제 저장 되었는지 기록 됨
  • .git 디렉터리를 의미 한다



🍋 GIT의 3가지 상태

GIT은 파일의 변경사항을 버전별로 관리할 때 3가지 상태로 관리한다.
Commited | Modified | Staged 3가지 상태에 대해 알아봅시다.


Commited

  • Staged 상태의 파일들이 commit을 통해서 로컬 저장소에 안전하게 저장됨을 의미
  • Commited 상태의 파일을 수정하면 Modified 상태가 된다.

Modified

  • 파일의 내용을 수정 했을 때 나타나는 상태
  • 로컬 저장소에 저장되지 않은 내용 = commit 하지 않은 파일이다.
  • Working Directory에 있는 파일을 수정했을 때 나타나는 상태
    → 커밋된 파일이나 Index 영역에 있는 파일을 수정해야 Modified 상태가 됩니다.

Staged

  • Index 또는 Staging Area영역에 있는 파일들의 상태
  • 수정한 파일을 commit 하기 위해 기다리고 있는 중



❗ GIT에 있는 파일들의 4가지 상태

위에서는 GIT으로 저장되는 파일이 저장소에 저장될 때, 어떠한 단계를 거치고 어떤 상태로
분류 하는지 확인 해봤습니다. 이번에는 파일의 관점에서 파일에 변화가 생겼을 시 나타나는
4가지 상태를 확인 해보겠습니다.

❗ 파일이 갖고 있는 상태, 혹은 상태에 대한 변화를 LifeCycle 이라고 합니다.

Untracked

  • Working Directory 디렉터리에 존재 하는 GIT이 관리하지 않은 파일
  • git add 명령어를 사용하지 않은 파일들이 이에 해당 됩니다.


Unmodified

  • 수정을 하지 않은 상태
  • commit된 파일 중에서 수정을 하지 않은 파일 또는 다른 저장소의 파일들을 복사한
    파일들의 상태를 나타낸다. = commited 상태와 같은 상태

Modified

  • 파일을 수정한 상태
  • Unmodified 상태의 파일을 수정하면 나타나는 상태이다.


Staged

  • Staging 영역 (Index)에 있는 파일의 상태
  • 파일에 git add 명령어를 사용하면 해당 영역으로 올라오게 된다.
  • 해당 파일들은 Changes to be committed 상태로 표시 된다.
    commit 될 파일들의 목록을 의미


❓ Staging Area (Index) 영역이 필요한 이유?

수정한 파일을 인덱스 영역을 거치지 않고 바로 커밋하면 좀더 단순하게 저장소에 저장을
할 수 있을텐데!! 도대체 왜 필요할까요?
조금 더 효율적으로 버전을 관리하기 위해 필요성이 있다고 생각 합니다.

예시를 들자면, 워킹 디렉터리에 있는 수많은 파일들 중 단 1개의 파일만 수정을하고
커밋을 진행 하고 싶을 때, 인덱스 영역이 있다면 해당 파일만 git add
인덱스 영역에 상주시킨 후 커밋을 진행 하면 1개의 파일만 따로 저장소에 저장이 되요.
자신이 커밋을 원하는 파일만 저장소에 저장 할 수 있습니다.

하지만, 인덱스 영역이 없다면 워킹 디렉터리에서 바로 저장소로 커밋되므로
단 1개의 파일만 커밋을 원해도 커밋을 하게 되면 디렉터리 내에 모든 파일이 커밋되게 될거에요.

문제가 생기진 않겠지만, 커밋이 필요 없는 파일들도 같이 저장소에 저장되기 때문에
효율성이 떨어질 수 있습니다. 이로 인해 인덱스 영역은 매우 효과적인 기능을
탑재했다고 생각합니다.

profile
프론트엔드 개발자가 되기 위한 학습 과정을 정리하는 블로그

0개의 댓글