CS/Git

[Git] Git의 스테이징 영역과 상태(add, commit, push)

young_3060 2023. 12. 8. 19:46
728x90

이번 포스팅에서는 매번 헷갈리는 Git의 스테이징과 상태에 대해 정리해보고자 한다.

깃의 상태는 관점에 따라서 2가지로 나눌 수 있는데, 한개는 파일을 관리하는 관점으로 봤을 때의 3가지 상태이고,

나머지 한개는 깃의 LifeCycle 관점으로 봤을 때의 4가지 상태이다.

 

📌 Git의 3가지 영역

  1. Working Directory : Git이 관리하는 파일들이 위치하는 영역
    • 지정 디렉토리에서 .git 디렉토리를 제외한 모든것(파일, 하위 디렉토리)
    • 작업한 파일(생성 및 수정)들이 저장되는 곳
  2. Staging Area : Commit할 준비가 된 파일들이 위치하는 영역
    • .git 디렉토리에 단순한 파일로 존재
    • 작업한 파일들 중 버전으로 만들고자(commit)하는 파일을 저장
    • git 기술용어로 "Index"라고 부름
  3. Git Directory(Repository) : Commit이 되어 버전을 관리하는 파일들이 위치하는 영역
    • Git이 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳
    • .git 디렉토리 == Git Directory(Repository)
    • 프로젝트 버전 정보 관리가 필요한 모든 파일이 저장됨

 

 

📌 Git의 3가지 상태 (파일을 관리하는 관점)

  1. Modified : 기존에 Commit했던 파일을 수정한 상태
    • working directory 영역에 있는 파일들 중 수정을 한 파일들
  2. Staged : 수정한 파일들 중 Commit할 것이라고 표시한 상태
    • Staging Area 영역에 있는 파일들의 상태
  3. Commited : Staged 상태의 파일들이 로컬 데이터베이스에 안전하게 저장된 상태
    • commit된 대상 파일은 Working Directory 영역으로 돌아가게 되고, 대상 파일의 버전을 관리하는 파일들은 Git Directory(Repository)에 저장된 상태
    • Commited 상태의 파일을 수정하면 Modified 상태가 된다.

 

 

📌 Git의 4가지 상태 (Git LifeCycle 관점)

 

 

  1. Untracked : Working Directory에 존재는 하지만 git이 관리하지 않는 파일들의 상태
    • Working Directory에 새롭게 만들어진 파일들
    • git status에서 "Untracked files"에서 확인가능
  2. Unmodified : 기존에 Commit했던 파일 중 수정하지 않은 상태
    • 한번 이상 commit된 파일 중 수정을 하지 않은 파일
    • 혹은, 다른 저장소의 파일들을 clone 했을 때 파일들
    • 3가지 상태에서의 Commited 상태와 같은 개념
  3. Modified : 수정을 한 파일의 상태
    • Unmodified 상태의 파일을 수정한 상태
    • git status에서 "changes not staged for commit" 문구가 뜬다.
      ** changes not staged for commit : Tracked 상태이지만 아직 Staged 상태는 아닌 파일들의 목록
  4. Staged : Commit하고자하는 파일의 상태
    • git영역 중에서 Staging Area 영역에 있는 파일의 상태
    • 3가지 상태에서의 Staged와 같은 개념
    • Untracked 상태의 파일 or Commit 이후 수정이 진행된 파일(==Modified)을 git add 명령 수행시 Staged상태가 된다.
    • git status에서 "changes to be committed" 에 있는 파일들

 

 

 

[참고]

https://kimvampa.tistory.com/124

728x90

'CS > Git' 카테고리의 다른 글

[Git] Github으로 협업하기  (0) 2024.01.07
[Git] error:failed to push some refs to 에러 해결방법  (2) 2023.11.22
[Git] 한글깨짐 현상  (0) 2023.07.16
Git 시작하기(mac)  (0) 2021.07.07