깃저장소로 지정된 파일은 깃에의해 3가지의 논리적 저장 공간으로 분류된다
먼저 로컬깃허브 저장소를 만들고 touch명령어로 텍스트파일을 추가했다.
add명령어는 워크디렉토리에 있는 작업물을 깃에서 관리할 수 있도록 등록(tracked)상태로 변경하는 역할을 한다. tracked상태가된 파일들은 stage 공간으로 이동해 commit이 되기 직전에 위치한다.
밑의 사진을 보면 파일생성후 status명령어를 실행시키면 파일이 untracked상태인 것을 확인할 수 있다.
이상태에서 텍스트 파일을 수정해보도록 하겠다.
등록된(tracked)된 파일을 워킹디렉토리에서 수정하게 되면 unmodified상태에서 modified상태로 회귀하게 된다. 이때 파일은 stage공간에서 배제되고 untracked상태로도 돌아가게 된다.
등록 직후 파일
- unmodified
- on stage
- tracked
- can commit
등록후 수정된 파일
- modified
- working directory(not on stage)
- untracked
- can't commit
깃은 커밋직전 가장 최근에 컷밋된 부모커밋(HEAD포인터에 저장)와 커밋될 스테이지 저장소를 비교후 새로운 커밋 객체를 만든다.
마지막으로 수정된 파일을 다시 등록하고 commit해 보도록하겠다.
위의 예시는 로컬저장소만을 활용 했음으로 push를 사용하지 못한다.
만약 원격저장소를 로컬로 clone했다면 commit한 내용을 push 명령어로 원격저장소에 업로드 할 수 있다.