git 에는 여러가지 영역이 있는데
1. working directory(local)
개인 코드 작성하는 공간을 말한다. 사용자의 작업공간, 실제로 파일를 생성하고 수정하는 공간.
working directory 에서는 파일을 tracked, untracked 상태로 구분한다.
tracked 상태의 파일일 때에만 git이 이력을 추적한다.
- 명령어(tracked → untracked) : git rm --cached <파일명>
untracked 상태의 파일인 경우 git이 이력을 추적하지 않는다.
- 명령어(untracked → tracked) : git add <파일명>
새로운 파일과 폴더는 untracked 상태!
untracked 에서 tracked 으로 바뀔 때에 해당 파일은 stage 로 올라가지만,
tracked 상태이면 무조건 git의 stage 에 올라가는게 아니다.
tracked 상태의 파일의 변경이 발생하는 경우, 이 파일은 tracked이지만 unstage가 된다.
2. stage
working directory 에서 tracked 상태의 파일의 변경점을 기록하는 곳이다.(파일의 추적 상태 정보 만 가지고 있다. )
stage 는 stage 와 unstage 로 구분되는데
- stage : 스테이지에 파일이 올라온 상태를 말한다.
- unstage : 스테이지에서 파일이 내려간 상태를 말하며,
그렇다고 해서 untracked 상태로 변경되지는 않는다. tracked 상태의 파일로 남아있게 된다.
stage 는 수정된 파일과 원본 파일을 구분하기 위해 modified 와 unmodified 상태로 나눈다.
- unmodified : stage에 올라왓지만, stage 에서 한번도 수정하지 않은 원본 파일을 말한다.
- modified : stage 에서 수정한 파일.
tracked 상태의 파일이 수정되면, 해당 파일은 tracked 상태 이면서 unstage 와 modified 상태이다.
수정된 파일을 stage 에 재등록 해야, git 이 실제 내용을 반영한다.
3. repository
git 에 파일을 commit 을 통해서 최종 수정본을 저장한다.