기타 툴/Git

Git 파일의 네 가지 상태 - Untracked, Unmodified, Modified, Staged

Julie825 2022. 10. 4. 18:46

Git은 리눅스 프로젝트의 관리를 위해 리눅스 토르발즈가 만들어낸 형상관리 툴이다.

처음 터미널로 git을 쓸 때 뭐가 뭔지도 모르겠고 너무 복잡해서 열심히 강의를 들었는데, 그중 생활코딩님의 강의 OT가 내 마음속 git과의 거리를 좁히는데 큰 도움이 되었다.

 

git이 어려운 게 아니라 git이 하는 일이 어려운 거라서, git이 무엇을 하는지만 파악하면 어려울 게 없다. 그리고 드롭박스가 일반인들을 위한 git을 (유료로) 만든 프로젝트라고 하니 너무 어려울 때는 드롭박스를 생각하자!

 

만약 git이 처음인 사람들이 있다면, 이 말을 듣고 자신감을 얻었으면 좋겠다!! 그럼 이제 본론으로 넘어가 보자.

 

Git에서 파일은 Untracked, Unmodified, Modified, Staged 네가지 상태를 가진다.

UX 공작소 블로그의 '그림으로 보는 git 개념'에 완벽한 그림이 있길래 참고용으로 가져왔다.

 

Git은 컴퓨터 파일의 변경 사항을 추적하고 여러 명의 사용자들 간에 파일 작업을 조율하는 분산 버전 관리 시스템이다.

내 컴퓨터에 일반 공간, 스테이지 공간, Local repo라는 공간이 있고, 내 컴퓨터 외부에 Remote repository가 있다고 보면 된다.

그림에서 보듯이 working directory 내부의 파일은 상태가 4가지로 나뉜다.

 

1. Untracked

터미널 환경에서 새로 만들어진 Untracked file을 보여준다.

.git이 추적하지 않는 상태의 파일. 새로 만들어졌을 때 많이 보인다. git add 명령어를 통해 stage에 올려줘야 한다.

저장소에 저장하고 싶지 않다면 .gitignore 파일에 추가해주면 git status로 확인할 때 목록에 뜨지 않게 된다.

 

2. Unmodified

마지막 커밋과 비교했을 때 아무 차이도 없는 상태이다.

 

3. Modified

Local repo에 있는 마지막 커밋 버전과 차이가 생겨서 stage에서 떨어져 나온 상태.

변화를 저장할 거라면(커밋할 거라면) git add로 다시 스테이지에 붙여줘야 한다.

git stash로 스테이지가 아닌 별도의 저장소에 잠깐 갖다 놨다가 git stash pop으로 꺼낼 수도 있다.

 

4. Staged

git add 명령을 통해 스테이지로 올라온 상태. 여기 올라온 파일들만 커밋되어 Local repo에 저장된다.

.git 파일이란?

: 서버와의 링크 정보, 변경된 히스토리 정보 등을 저장하며, 컴퓨터를 로컬 저장소로 이용할 수 있게 해 준다. 이 파일이 없다면 working directory로 인식하지 않는다. 따라서 커밋 기록을 보거나, 이전 커밋으로 돌리거나, 내 파일을 remote repo에 올릴 수 없게 된다.