Git 교과서

코드 이력, 하나도 놓치지 마라!

버전 관리 시스템의 이해와 설치부터 커밋, 브랜치, 임시 처리, 병합, 복귀, 서브모듈, 태그까지
깃, 소스트리, 깃허브로 실습하며 기본기를 탄탄하게 다진다!

Yes24 교보문고 알라딘 인터파크 길벗

파일의 modified 상태와 unmodified 상태


코드를 변경한다는 것은 워킹 디렉터리에서 파일을 수정하는 것을 의미합니다.
파일이 수정되면 워킹 디렉터리와 스테이지 간 내용이 일치하지 않습니다.
따라서 스테이지는 수정한 파일과 원본 파일을 구분하려고 수정함(modified) 상태와 수정하지 않음(unmodified) 상태로 표현합니다.
파일 수정 작업은 스테이지 영역과 긴밀한 상관관계를 맺습니다.


modified 상태


스테이지에 등록된 파일은 깃이 추적 관리합니다. 깃이 실제로 기록한 파일이며, 사실상 버전을 의미합니다. 파일 수정은 개발 과정에서 뗄 수 없는 작업입니다. 개발 작업에서 수많은 코드가 변경되고, 깃을 사용하면 이 변경 내역은 영구적으로 기록됩니다.

앞에서 설명했듯이 깃은 tracked 상태인 파일만 수정 여부를 관리할 수 있습니다.
tracked 상태인 파일이 수정되면 스테이지는 파일 상태를 modified 상태로 변경합니다.

파일 수정 여부 확인

그러면 수정된 파일은 스테이지에서 잠시 제외됩니다.
깃은 수정 여부만 체크해 주기 때문에 modified 상태로 변경된 파일은 스테이지로 재등록해야 합니다.
수정된 파일을 스테이지 영역으로 다시 적용하려면 git add 명령어로 재등록합니다.


unmodified 상태


unmodified 상태는 tracked 상태이면서 스테이지에서 한 번도 수정하지 않은 원본 상태를 의미합니다. 이처럼 수정하지 않은 파일들은 재등록하지 않아도 됩니다. 스테이지에 등록한 후 어떤 수정도 하지 않았다면 unmodified 상태입니다. 깃은 파일의 수정 여부를 체크하고, 스테이지 영역의 갱신 작업 여부를 작업자에게 알려 줍니다.

3.2절과 3.3절에서 배운 개념을 그림 하나로 정리하면 다음과 같습니다. 워킹 디렉터리에서 등록 명령(git add 명령어)을 실행하면 스테이지에 등록됩니다. 이때 자동으로 tracked 상태가 됩니다. 파일을 수정하지 않으면 계속 stage 상태에 머무릅니다. 파일이 수정되면 modified 상태가 되고, 스테이지에서 떨어져 나와 unstage 상태가 됩니다. unstage 상태의 파일은 워킹 디렉터리에 잠시 담아 둡니다. 이때 다시 등록 명령을 실행하면 stage 상태로 변경됩니다.

워킹 디렉터리와 스테이지 상태 구분