- working directory(우리가 실제로 작업하는 공간)
- staging area(작업 후 히스토리에 저장 할 준비가 된 파일들을 옮겨놓는 공간)
- git directory(버전의 히스토리를 저장하는 공간)
설명충) 1번 환경에서 작성 완료된 파일들을 add명령어를 활용해 2번 환경으로 이동, 다음 commit명령어를 활용해 3번에 저장한다. 3번 환경에 저장된 버전들은 checkout이라는 명령어를 이용해 언제든 원하는 버전으로 이동 가능하다.
- untracked -> 새로 만들어진 파일
- tracked -> git이 이미 알고있는 파일
2-1. tracked unmodified -> 수정되지 않은 파일(이전 버전과 비교해 수정 x -> staging area로 이동 불가능)
2-2. tracked modified -> 수정된 파일(staging area로 이동 가능)
설명충) 아직 작성중인 파일이 untracked이고, 파일작성이 완료되어 add 명령어로 staging area로 이동한 파일이 tracked이다. tracked파일 중 수정한 파일은 수정된 부분이 있으니 다시 staging area로 이동이 가능하고, 수정하지 않은 파일은 이미 staging과 동일한 파일이니 이동이 불가능하다.
local 작업환경 server에 저장
GitHub와 같은 server에 push라는 명령어를 이용해 3번 환경을 업로드 할 수 있다. 그리고 pull, clone이라는 명령어를 활용해 server에서 local로 다운로드 받을 수 있다.
버전에 저장되는 정보
각각 commit에는 스냅샷된 정보 기반으로 고유 해쉬코드 부여 및 해쉬코드로 버전 참조
commit 정보> 해쉬코드, 작성자, 날짜, 시간, 메시지 등(확실하지 않아서 등)