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로 변경된다.