[Git] 형상관리와 Git (3편) - Git 스테이징 단계 이해
Git 스테이징단계 이해
Git은 다른 형상 관리시스템과 다르게 소스 코드를 직접 추가하거나 변경하지 않더라도 이를 인지하지 못하며 Git add 명령을 통해서만 인식할 수 있다.
=> Git의 형상 관리가 3가지 영역으로 진행되기 때문
(출처 : http://devstory.ibksplatform.com/2017/09/git-1-git-git.html)
- 워킹 디렉터리 : 소스 코드를 작업하는 영역으로 코드를 추가, 수정, 삭제한느 작업이 이루어지는 영역을 의미
- 스테이징 영역 : 워킹 디렉터리에 Git add 명령을 실행하면 파일들은 Git의 스테이징 영역으로 이동하며 이를 통해 소스 코드의 상태 정보를 확인할 수 있다.
- 저장소 영역 : 스테이징 영역에 있는 소스 코드에 Git commit 명령을 실행하면 최종적으로 Git의 저장소에 반영된다.
파일 관점에서 Git은 다시 4가지 단계로 나눌 수 있다.
- Untracked : 워킹 디렉터리에 추가되었지만 Git에서 관리하지 않는 상태
- Unmodified : 신규로 파일이 추가되었을 때의 상태로 new file 상태와 동일
- Modified : 파일이 추가된 이후 해당 파일이 수정되었을 때의 상태
- Staged : Git의 스테이징 영역에 반영된 상태
스테이징을 이해하기 위해 2개의 파일을 생성
Stage1.txt, Stage2.txt
Git status 명령을 실행하면 untracked 상태로 인식한 것을 알 수 있음
Git add
New file(unmodified) 상태
신규 생성한 파일이므로 new file이며 아직까지 Git 저장소에 반영이 안된 상태이다.
(다른 사용자가 Git저장소에서 소스 코드를 내려받을 때 스테이징 상태는 반영이 되지 않는다.)
스테이징에 있는 파일을 삭제도 가능하다.
Git rm --cached stage2.txt
Git status
삭제한 stage2.txt는 Untracked상태로 변경되었음을 볼 수 있다.
최종적으로 Git commit을 수행하면 stage1.txt파일만 저장소에 반영된다.
스테이징 기능은 저장소에 반영하기 전에 검증할 수 있는 환경을 제공해 주어 개발자 혹은 관리자의 실수로 저장소의 파일에 영향을 주는 것을 한번 더 확인할 수 있는 기회를 준다.
** 커밋에 제외할 파일이 있다면 디렉터리에 .gitignore 파일을 만들고 제외할 파일들을 기술하면 된다.
** 그리고 Git 저장소에 커밋할 때 .gitignore에 등록되어 있는 파일은 커밋되지 않는다.