Git는 파일의 상태라는 것이 있다. 이부분이 중요하니 꼭 알아두고 가셔야 됩니다. 위의 그림을 참고 하면서 읽으면 편하실 겁니다.
워킹 디렉터리(프로젝트 파일)의 모든파일을 가장 크게 분류하면 Tracked(관리대상)과 Untracked(비관리대상)으로 나눌 수 있습니다.
Untracked(비관리대상)은 추적을 하지 않는 상태입니다.
간단하게 생각하면 관리대상의 수정에만 신경 쓰지 비관리대상 파일은 수정이 되건 말건 내알바 아니다 라고 신경도 안쓰는 겁니다.
만약 중요한 main.c라는 코드 파일파일이 있으면 둘중 어디에 넣어야 될까요?
당연히 Tracked(관리대상)입니다. Untracked냐 tracked냐는 명령어를 입력하여 변경할 수 있습니다.
Tracked(관리대상)를 세분화 하면 Unmodified(수정전), Modified(수정후), Staged(저장)상태가 있습니다.
Unmodified(수정전)는 아무것도 수정된 것이 없는 상태입니다.
Modified(수정후)는 main.c파일에 코드를 추가 하고 저장하게 되면 이 상태가 됩니다.
(명령어 필요없이 관리대상을 추적하고 있다가 파일이 수정되면 자동으로 상태가 변경된다.)
Staged(저장)는 명령어를 눌러 commit를 하면 저장소에 저장이 됩니다.
저장소에 저장이 되야지 나중에 버전을 찾아 복원하는데 사용할 수 있도록 해줍니다.
저장이 했으니 아무것도 수정된 것이 없는 상태 이니까 다시 Unmodified(수정전)상태로 돌아가게 됩니다.
추적을 해제할 때 까지 사용자가 파일을 건드릴 때 마다 반복이 됩니다.
[출처] [Git] GIT기본명령어-2|작성자 fundoong