GIT
은 작업중인 소스코드를 로컬저장소에 저장할 때 3가지의 단계를 거쳐서 저장하게 됩니다.
3가지 영역들에 대한 내용을 확인 해봅시다.
GIT
은 파일을 관리할 떄 Working Directory | Staging Area(Index) | GIT Repository 3가지
단계를 거쳐서 관리합니다.
Working Directory
GIT
에서 git init
를 사용해서 저장소가 생성된 이후에 GIT
이 관리하는 디렉터리git add
명령어를 사용해서 Staging Area
영역에 저장할 수 있음Staging Area
commit
할 준비가 되어있는 파일들이 위치하는 단계index
라고 부름git commit
명령어를 사용해서 저장소에 저장할 수 있다.Repository
commit
된 파일들이 버전별로 관리 되며, 누가 커밋했는지, 언제 저장 되었는지 기록 됨.git
디렉터리를 의미 한다GIT
은 파일의 변경사항을 버전별로 관리할 때 3가지 상태로 관리한다.
Commited | Modified | Staged 3가지 상태에 대해 알아봅시다.
Commited
Staged
상태의 파일들이 commit
을 통해서 로컬 저장소에 안전하게 저장됨을 의미Commited
상태의 파일을 수정하면 Modified
상태가 된다.Modified
commit
하지 않은 파일이다.Working Directory
에 있는 파일을 수정했을 때 나타나는 상태Index
영역에 있는 파일을 수정해야 Modified
상태가 됩니다.Staged
Index
또는 Staging Area
영역에 있는 파일들의 상태commit
하기 위해 기다리고 있는 중위에서는 GIT
으로 저장되는 파일이 저장소에 저장될 때, 어떠한 단계를 거치고 어떤 상태로
분류 하는지 확인 해봤습니다. 이번에는 파일의 관점에서 파일에 변화가 생겼을 시 나타나는
4가지 상태를 확인 해보겠습니다.
❗ 파일이 갖고 있는 상태, 혹은 상태에 대한 변화를 LifeCycle 이라고 합니다.
Untracked
Working Directory
디렉터리에 존재 하는 GIT
이 관리하지 않은 파일git add
명령어를 사용하지 않은 파일들이 이에 해당 됩니다.
Unmodified
commit
된 파일 중에서 수정을 하지 않은 파일 또는 다른 저장소의 파일들을 복사한commited
상태와 같은 상태 Modified
Unmodified
상태의 파일을 수정하면 나타나는 상태이다.Staged
git add
명령어를 사용하면 해당 영역으로 올라오게 된다.commit
될 파일들의 목록을 의미수정한 파일을 인덱스 영역을 거치지 않고 바로 커밋하면 좀더 단순하게 저장소에 저장을
할 수 있을텐데!! 도대체 왜 필요할까요?
조금 더 효율적으로 버전을 관리하기 위해 필요성이 있다고 생각 합니다.
예시를 들자면, 워킹 디렉터리에 있는 수많은 파일들 중 단 1개의 파일만 수정을하고
커밋을 진행 하고 싶을 때, 인덱스 영역이 있다면 해당 파일만 git add
로
인덱스 영역에 상주시킨 후 커밋을 진행 하면 1개의 파일만 따로 저장소에 저장이 되요.
자신이 커밋을 원하는 파일만 저장소에 저장 할 수 있습니다.
하지만, 인덱스 영역이 없다면 워킹 디렉터리에서 바로 저장소로 커밋되므로
단 1개의 파일만 커밋을 원해도 커밋을 하게 되면 디렉터리 내에 모든 파일이 커밋되게 될거에요.
문제가 생기진 않겠지만, 커밋이 필요 없는 파일들도 같이 저장소에 저장되기 때문에
효율성이 떨어질 수 있습니다. 이로 인해 인덱스 영역은 매우 효과적인 기능을
탑재했다고 생각합니다.