Git에서 구성되는 3가지 영역에 대해 알아봤습니다.
알아보는 과정에 tracked, untracked 등의 파일 상태를 나타내는 용어들이 있었습니다.
이번엔 파일의 상태를 알아보고자 합니다.
Git에서는 파일의 상태를 다음과 같이 다양하게 구분하고 있습니다.
- tracked(추적) 상태와 untracked(비추적) 상태
- stage(스테이지에 등록된) 상태와 unstage(스테이지에 등록되지 않은) 상태
- modified(수정된) 상태와 unmodified(수정되지 않은) 상태
- committed(커밋된) 상태
예를 들어 보겠습니다.
[상황1] 최초 파일A를 하나 만들었습니다.
Git은 워킹 디렉토리에서 파일이 하나 만들어졌다는 것은 알지만
추적을 하고 있지 않은 상태로 untracked 상태입니다.
untracked(비추적) 상태의 파일은 다른 어떠한 상태가 될 수 없습니다.
[상황2] add 명령어로 파일A를 스테이지에 등록합니다.
파일A의 상태는 tracked(추적) 상태가 되는 동시에 stage(스테이지에 등록된) 상태가 됩니다.
이 때는 워킹 디렉토리의 파일A와 스테이지에 등록된 파일A의 내용이 동일합니다.
그래서 unmodified (수정되지 않은) 상태입니다.
정리하면 파일A의 상태는 tracked 상태, stage 상태, unmodified 상태를 가집니다.
[상황3] 파일A를 수정합니다.
파일A를 수정한 영역은 워킹 디렉토리입니다.
워킹 디렉토리에서 파일A를 수정함으로써 스테이지에 등록된 파일A의 내용과 달라지게 됩니다.
내용이 달라짐으로 인해 Git은 다른 내용의 파일A로 인식하고 스테이지에 등록된 내용이 아니라고 인식합니다.
그래서, 여기서 파일A의 상태는 tracked 상태, unstage 상태, modified 상태가 됩니다.
[상황4] 수정한 파일A를 다시 add 명령어로 스테이지에 등록합니다.
다시 워킹 디렉토리의 파일A와 스테이지에 등록된 파일A의 내용이 같아졌습니다.
그래서 unmodified (수정되지 않은) 상태입니다.
정리하면 여기서 파일A의 상태는 tracked 상태, stage 상태, unmodified 상태를 가집니다.
[상황5] 스테이지에 등록된 파일A를 커밋해 저장소에 기록합니다.
저장소에 파일A가 기록됨으로 인해 파일A는 committed(커밋된) 상태를 가집니다.
커밋이 되면 스테이지를 비우게 되므로 파일A는 unstage 상태도 됩니다.
워킹 디렉토리의 파일A는 계속 추적 중인 상태를 유지합니다.
그래서 여기서 파일A의 상태는 tracked, unstage, unmodified, committed 상태를 가집니다.
이 과정을 그림으로 나타내면 다음과 같습니다.
편의상 파일의 상태를 각 영역에 나눠서 표기를 했지만,
전부가 파일A에 대한 Git이 인식하는 상태라고 이해하면 좋겠습니다.
다음엔 직접 실습을 통해 위 내용을 살펴보겠습니다.
'코딩해보니 > Git' 카테고리의 다른 글
[Git_15] 커밋(Commit)의 이해 - 커밋 하기 (0) | 2022.12.06 |
---|---|
[Git_14] 실습을 통해 Git 완벽 이해하기 (0) | 2022.11.22 |
[Git_12] Git 개념 잡기 - 워킹 디렉토리, 스테이지, 저장소 (0) | 2022.11.17 |
[Git_11] Git 개념 잡기 - Git 영역 살펴보기 (0) | 2022.11.14 |
[Git_10] GitHub(깃허브) 사용하기 - 서버(원격) 저장소 만들기 (0) | 2022.11.13 |
댓글