git 작업 영역과 상태 구분
git 설치가 완료되면, 초기화를 진행한 후, 브랜치를 생성하고, 작성한 코드를 git에 추가하고, 추가한 코드를 로컬 저장소에 반영하는 과정을 거치며 진행한다. 앞의 로컬/원격 저장소 개념까지는 이해하기 크게 어렵지 않은 부분이었는데 이제부터 나오는 개념은 처음 접한다면 조금 혼란스러울 수도 있겠다.
git 동작 방식을 이해하려면 몇가지 용어(?)와 그에 대한 개념에 익숙해져야 한다.
작업 영역에 따른 구분
- 워킹 디렉토리 (Working Directory)
- 스테이지 영역 (Stage Area)
워킹 디렉토리 (Working Directory)
말 그대로 파일을 생성하고 수정하는 작업을 하는 로컬 저장소의 공간을 의미한다.
스테이지 영역 (Stage Area)
실제로 로컬 저장소인 작업 컴퓨터에 존재하는 물리적인 디렉토리가 아니고, 워킹 디렉토리에 작업한 파일의 상태를 임시로 저장해 두는 논리적인 공간이라고 생각하면 이해하기 쉽다. 실제 파일이 동일하게 복제되는 것이 아니라 파일의 상태 변경에 대한 정보만 임시로 가지고 있는 것이다.
파일 상태에 따른 구분
- untracked vs. tracked
- unstaged vs. staged
- unmodified vs. modified
untracked vs. tracked
untracked는 '추적되지 않는 상태'이고, tracked는 '추적되는 상태'를 말한다.
워킹 디렉토리에서 파일을 생성하고, 수정하는 작업을 했다고 해서 git이 바로 이를 알 수 있는 것은 아니다.
git이 이 파일을 인식할 수 있도록 알려줘야 한다.
git에게 알려주기 전의 상태가 untracked이고, git에게 알려주고 추적을 시작하라고 하면 tracked상태가 된다.
이 때 사용하는 git 명령이 add이다.
~ git add filename
위와 같이 입력하면 git이 해당되는 파일의 추적을 시작한다.
참고로 현재 작업 폴더의 모든 파일과 폴더의 추적을 시작하려면 아래와 같이 .을 입력한다.
~ git add .
tracked 상태가 된다는 것은 스테이지 영역에 반영되어 추적을 시작한다는 의미이다.
unstaged vs. staged
이 두 가지 상태는 스테이지 영역에서 확인할 수 있는 상태이다.
git이 변경 이력을 기록하기 위한 상태는 staged이다.
- staged : 워킹 디렉토리에서 작업한 상태와 동일하게 스테이지 영역에 등록 되었음을 의미
- unstaged : 워킹 디렉토리 작업 내용과 스테이지 영역의 내용과 차이가 존재함을 의미
git add 명령으로 추가한 파일들은 tracked이자 동시에 staged 상태가 되는 것이고, git add로 추가하지 않은 파일들도 untracked이자 unstaged 된 상태인 것이다. 변경 이력을 추가하기 위해서 git add로 추가할 수 있다.
unmodified vs. modified
스테이지 영역에 등록한 파일을 워킹 디렉토리에서 수정하면 두 영역 간 내용이 일치하지 않는다.
- modified : tracked된 파일이 수정되면 modified 상태로 변경되고, 스테이지 영역에서 제외된다. git add로 다시 스테이지에 등록해야 한다.
- unmodified : tracked된 상태에서 수정되지 않으면 unmodified 상태이다.
위에서 설명한 개념을 그림으로 표현하면 아래와 같다.
개념적인 부분이라 처음에는 잘 이해되지 않을 수도 있지만, 실제로 파일을 추가하고 git을 사용하다 보면 자연스럽게 이해되는 부분이다.
막상 이렇게 그림으로 표현해 보니 한번 더 정리 해 볼 수 있는 기회가 되었다.
2022.09.23 - [Dev.] - [git] 한번 제대로 써보자
[git] 한번 제대로 써보자
지금까지 git은 주로 GUI 클라이언트인 소스트리(SourceTree)를 통해 사용했다. 대부분 커밋, 머지, 커밋, 머지의 반복이었다. 그것만으로도 git을 사용하는데 큰 불편함을 느끼지 못했다. 그러다가 실
littleneedle.tistory.com
2022.09.24 - [Dev.] - [git] 설치 및 초기 설정
[git] 설치 및 초기 설정
설치 git을 사용하기 위해서 먼저 로컬 컴퓨터에 git을 설치한다. Homebrew를 이용한 설치 homebrew는 MacOS에서 패키지 관리를 위해 사용한다. homebrew를 처음 설치한다면 homebrew 사이트의 설치하기 명령
littleneedle.tistory.com
2022.10.05 - [Dev.] - [git] 커밋하기
[git] 커밋하기
개발 과정에서 지속적으로 수정되는 코드의 변경 사항을 모두 기억하고 기록하는 것은 불가능하기 때문에, 코드의 변경 이력과 시점의 변화를 기록해 두는 것이 커밋이다. 이 커밋이 코드를 과
littleneedle.tistory.com
'IT & Dev.' 카테고리의 다른 글
[git] 사례별 주요 명령어 모음 (2) | 2022.11.04 |
---|---|
[git] 커밋하기 (1) | 2022.10.05 |
맥 개발 환경 세팅 ( iTerm2 + Oh my zsh + powerlevel10k ) (0) | 2022.09.26 |
[git] 설치 및 초기 설정 (0) | 2022.09.24 |
[git] 한번 제대로 써보자 (1) | 2022.09.23 |