Git의 원리

2024. 6. 14. 09:56카테고리 없음

Git은 총 3가지 영역으로 이루어져 있다.

  • Working Directory : 내가 작업하고 있는 프로젝트의 디렉토리
  • Staging Area : 커밋을 하기 위해 $ git add 명령어로 추가한 파일들이 모여있는 공간
  • Repository : 커밋들이 모여있는 저장소

 

열심히 코드를 작성하다가 커밋을 해야하는 순간이 오면 git add .를 통해 커밋할 파일들을 추가한다.

이 파일은 바로 Repository에 올라가지 않고, Staging Area에 올라가게 된다.

 

 

Staging Area에 추가한 파일들을 Commit을 한다면 최종적으로 저장소(Repository)로  저장된다.

 


File Status LifeCycle

 

 

File 관점에서는 다시 4가지 단계로 나뉜다.

  • Untracked : Working Directory에 있는 파일이지만 Git으로 버전관리하지 않는 상태
  • Unmodified : 신규로 파일이 추가되었을 때, new file 상태와 같다. ( $ git add 상태 )
  • Modified : 파일이 추가된 이후 해당 파일이 수정되었을 때의 상태
  • Staged : Staging Area에 반영된 상태

 

Working Directory

  • untracked: 아직 tracking이 되지 않은 파일
    → 기존에 존재하던 프로젝트에서 git을 초기화하거나 파일을 새로 만들면(또는 처음 저장소를 clone하면) untracked 상태이다.
  • tracked: unmodified/modified로 나눌 수 있다. checkout된 이후 수정사항이 있지만 stage되지 않으면 modified된 상태이다.
    → modified된 파일만 staging area로 옮겨갈 수 있다.

 

Staging Area

  • tracked & staged 상태
  • add 명령어를 통해 파일을 Staging Area에 올릴 수 있다.
  • git rm --cached를 이용하면 unstage(Staging Area-> Working Directory)가 가능하다.
  • git diff --cached는 index와 HEAD 사이의 변화를 보여준다.

 

.git directory

  • commit 명령어를 실행하면 Staging Area에 있는 파일들이 하나의 버전으로서 git directory에 저장된다.
  • commit 후에는 파일 상태가 staged에서 unmodified로 변경된다.