본문 바로가기

Programming/Git

Git이 보는 파일의 4가지 상태

Git의 "작업 영역"은 3가지가 있었다.

작업 영역과 관련해서 한 가지 더 알아두면 좋은 내용이 있는데

그건 바로 Git으로 관리되는 파일은 일종의 '상태(status)'라는 걸 가진다는 사실이다.

 

일단 Git에서 파일들은 크게 다음 2가지 상태를 가진다.

  • Untracked 상태
  • Tracked 상태 

그리고 Tracked 상태는 다시 아래와 같은 3가지 상태로 나눌 수 있다

  • Staged 상태
  • Unmodified 상태
  • Modified 상태

 

 

1. Untracked 상태

Untracked는 '추적되지 않고 있는'이라는 뜻이다.

파일을 새로 생성하고 그 파일을 한 번도 git add 해주지 않았다면 이 상태입니다

그래서 이 상태는 파일이 Git에 의해서 그 변동사항이 전혀 추적되고 있지 않는 상태를 뜻한다.  

 

2. Tracked 상태

파일이 Git에 의해 그 변동사항이 추적되고 있는 상태. 이 상태는 다시 그 특성에 따라 3가지 상태로 나뉜다.

(1) Staged 상태

파일의 내용이 수정되고나서, staging area에 올라와있는 상태를 Staged(스테이징된, stage area에 올려진) 상태라고 한다.

새로 생성한 파일에 내용을 쓰고 git add를 해주거나
한 번이상 커밋에 포함됐었던 파일이라도 내용을 수정하고 git add를 해주면 이 상태이다.

(2) Unmodified 상태

현재 파일의 내용이 최신 커밋의 모습과 비교했을 때 전혀 바뀐 게 없는 상태면 그 파일은 Unmodified(수정되지 않은, 변한 게 없는)이다. 커밋을 하고 난 직후에는 working directory 안의 모든 파일들이 이 상태가 된다.

 

(3) Modified 상태

최신 커밋의 모습과 비교했을 때 조금이라도 바뀐 내용이 있는 상태면 그 파일은 Modified(수정된) 상태이다.

이렇게 Git에서 파일은 매 순간 4가지 상태 중 하나의 상태에 있게 된다. 이 내용을 그림으로 정리하면 아래와 같습니다.

어떤 경우에, 어떻게 상태 전환이 발생하는지 설명해보자면

  • Add the file : Untracked 상태의 파일을 처음으로 git add 해주면 Staged 상태가 된다.
  • Edit the file : 최신 커밋과 비교했을 때 차이가 없는 Unmodified 상태의 파일의 내용을 수정하면 Modified 상태가 된다
  • Stage the file : Modified 상태의 파일을 git add 해주면 Staged 상태가 된다
  • Remove the file : 파일을 삭제하면 Git에선 더이상 인식하지 않는다.
  • Commit : 커밋을 하면 staging area에 있던 파일들이 커밋에 반영되고, 이제 모든 파일들은 최신 커밋과 차이가 없게 되니까 Unmodified 상태가 된다.