보통 Git 명령어를 사용할 때, 검색해서만 사용하다보니 기본내용을 잊은 것 같아서 정리해보려고 한다.
여기서는 아래 공식 레퍼런스를 참고하여 로컬 저장소 위주로 파일 관리 부분에 대해 정리하였다. 예시나 설명이 자세히 되어있으니 한 번씩 정독하는 걸 추천한다.
git은 아래와 같이 세 가지 단계로 나눌 수 있다.
git에서 파일은 아래와 같은 상태로 관리된다. 파일은 크게 Untracked와 Tracked로 나뉜다.
- Untracked (관리 대상 아님) : 워킹 디렉토리에 있는 파일 중 스냅샷에도 index(Staging
Area)에도 없는 파일- Tracked (관리 대상) : git이 관리하는 파일
- Unmodified (수정하지 않음)
- Modifeid (수정함)
- Staged (커밋으로 저장소에 기록할 예정)
git add
을 통해 Staging Area에 기록되어 Staged 상태가 된다.git commit
명령을 통해 스냅샷이 생성되면 Unmodifid 상태로 변한다.git add
명령으로 수정된 파일을 Staged 상태로 만든다.git status
명령어를 사용하여 파일 상태를 확인할 수 있다.Untracked
)Untracked
로 아직 git이 추적하지 않는 파일이다. 스냅샷에도, Staging Area에도 없는 파일이기 때문이다.Tracked
- Staged
)git add
명령어로 Statging Area에 올리면 파일은 Staged
상태가 되며 git은 test 파일을 추적하기 시작한다.Unmodified
)git commit
을 통해 스냅샷을 생성하면 파일은 Unmodified
상태가 된다.modified
)Changes no staged for commit
로 수정한 파일이 Tracked
상태이지만 아직 Staged
상태는 아님을 보여준다. (modified
상태)Staged
상태로 변경 후 다시 수정하기Staged
상태로 만들고 수정하면 Staged
상태이면서 동시에 Unstaged
상태가 된다.git commit
하는 시점의 파일이 아닌 마지막으로 git add
으로 했을 때의 버전이 올라가게 된다. 따라서 git add
명령을 통해 최신 버전을 Staged
상태로 만들어야 한다.git status -s
또는 git status --short
명령어를 통해 간략하게 확인할 수 있다.
길었던 정보들이 간단한 표시를 통해 표현된다.
(Staging Area에서의 상태)(Working Tree의 상태) 파일명
와 같이 표현된다.M
은 수정한 파일, ??
은 아직 추적하지 않은 파일, A
는 Staged 상태로 추가한 파일 중 새로 생성한 파일을 의미한다.
커밋 내용들은, 항상 스테이징된 녀석들만 올라가는 건가요??