728x90
이번 포스팅에서는 매번 헷갈리는 Git의 스테이징과 상태에 대해 정리해보고자 한다.
깃의 상태는 관점에 따라서 2가지로 나눌 수 있는데, 한개는 파일을 관리하는 관점으로 봤을 때의 3가지 상태이고,
나머지 한개는 깃의 LifeCycle 관점으로 봤을 때의 4가지 상태이다.
📌 Git의 3가지 영역
- Working Directory : Git이 관리하는 파일들이 위치하는 영역
- 지정 디렉토리에서 .git 디렉토리를 제외한 모든것(파일, 하위 디렉토리)
- 작업한 파일(생성 및 수정)들이 저장되는 곳
- Staging Area : Commit할 준비가 된 파일들이 위치하는 영역
- .git 디렉토리에 단순한 파일로 존재
- 작업한 파일들 중 버전으로 만들고자(commit)하는 파일을 저장
- git 기술용어로 "Index"라고 부름
- Git Directory(Repository) : Commit이 되어 버전을 관리하는 파일들이 위치하는 영역
- Git이 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳
- .git 디렉토리 == Git Directory(Repository)
- 프로젝트 버전 정보 관리가 필요한 모든 파일이 저장됨
📌 Git의 3가지 상태 (파일을 관리하는 관점)
- Modified : 기존에 Commit했던 파일을 수정한 상태
- working directory 영역에 있는 파일들 중 수정을 한 파일들
- Staged : 수정한 파일들 중 Commit할 것이라고 표시한 상태
- Staging Area 영역에 있는 파일들의 상태
- Commited : Staged 상태의 파일들이 로컬 데이터베이스에 안전하게 저장된 상태
- commit된 대상 파일은 Working Directory 영역으로 돌아가게 되고, 대상 파일의 버전을 관리하는 파일들은 Git Directory(Repository)에 저장된 상태
- Commited 상태의 파일을 수정하면 Modified 상태가 된다.
📌 Git의 4가지 상태 (Git LifeCycle 관점)
- Untracked : Working Directory에 존재는 하지만 git이 관리하지 않는 파일들의 상태
- Working Directory에 새롭게 만들어진 파일들
- git status에서 "Untracked files"에서 확인가능
- Unmodified : 기존에 Commit했던 파일 중 수정하지 않은 상태
- 한번 이상 commit된 파일 중 수정을 하지 않은 파일
- 혹은, 다른 저장소의 파일들을 clone 했을 때 파일들
- 3가지 상태에서의 Commited 상태와 같은 개념
- Modified : 수정을 한 파일의 상태
- Unmodified 상태의 파일을 수정한 상태
- git status에서 "changes not staged for commit" 문구가 뜬다.
** changes not staged for commit : Tracked 상태이지만 아직 Staged 상태는 아닌 파일들의 목록
- Staged : Commit하고자하는 파일의 상태
- git영역 중에서 Staging Area 영역에 있는 파일의 상태
- 3가지 상태에서의 Staged와 같은 개념
- Untracked 상태의 파일 or Commit 이후 수정이 진행된 파일(==Modified)을 git add 명령 수행시 Staged상태가 된다.
- git status에서 "changes to be committed" 에 있는 파일들
[참고]
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 |