728x90
반응형

아직 커밋까진 안했지만 이러저러한걸 조금씩 해봤습니다. 일단 지금까지 해왔던걸 바탕으로 공식사이트에 있는 워킹 디렉토리, Staging Area,  Git 디렉토리 등에 대해 조금 살펴보겠습니다.

공식 사이트에 더 자세한 설명과 사용방법 등이 나와 있습니다.

https://git-scm.com/book/ko/v2




1. 워킹 디렉토리, 스테이징 에리어, 깃 디렉토리


1-1 Working Directory


처음에 저희들이 작업하게 되는 공간은 바로 'Working Directory' 입니다. 아래 그림의 주황색 부분에 해당되죠.

공식 사이트에서의 설명은

'워킹 디렉토리는 프로젝트의 특정 버전을 Checkout 한 것이다. Git 디렉토리는 지금 작업하는 디스크에 있고 그 디렉토리 안에 압축된 데이터베이스에서 파일을 가져와서 워킹 디렉토리를 만든다.'

라고 나와 있습니다.

여기서의 Checkout란 예를 들어 A라는 장소에 있는 것을 B라는 곳으로 복사 하는 것으로 생각하시면 됩니다.

여기서 A에 해당하는건 두가지가 될 수 있습니다.

첫째는 중앙 저장소, 둘째는 로컬 저장소 입니다.

Git은 저장소가 SVN과는 다르게 local에서도 있습니다.

SVN같은 경우는 작업을 하고 나서 다이렉트로 중앙저장소로 넘겨지지만

Git 같은 경우는 local에서 한번 세이브가 되고 이 세이브 된걸 중앙으로 한번 더 세이브 합니다.

(원래 이 의미가 맞을지 모르겠으나 처음 시작하는 사람의 입장에서 이해해본 설명중에 적합하다 판단하였습니다.)

Git 시스템은 장점은 중앙 저장소가 뻥! 터져도 local에 있는 기록을 넘겨주면 설정만을 제외한 기록들이 복구가 됩니다.

그리고 인터넷이 없어도 언제든지 로컬에서 버전관리를 하고 나중에 인터넷이 연결 되면 로컬에서 버전관리된 것을 중앙 저장소로 넘겨주면 됩니다.

아무튼..;;

Working Directory 는 다른 저장소의 파일을 다운 받은 것도 되고..

내가 신규로 뭐 작업을 시작해도 됩니다. 프로젝트의 시작을 여기서 해도 상관 없어요.

1-2 Staging Area


스테이징 에리어 에서는 작업한 내용을 로컬 저장소에 세이브 하기 위해 워킹 디렉토리에서 수정되거나 새로 만들어진 파일을 이 Staging Area로 가져오는 작업을 합니다.

이렇게 가져온 목록들이 바로 5장에서 나왔던 Tracked(관리 대상 파일)를 하려고 하는 겁니다.

바로 그 커밋 이라고 하기 위한 바로 전단계 인것이죠.

commit 란 마무리된 작업에 작업 이력을 기록해서 저장소로 보내는 행위, 즉 Staging Area의 Tracked된 파일들을 저장소에 저장 을 의미합니다. 이건 1-3 Git diractory에서 한번 더 설명하겠습니다.

위의 그림을 보시면 Stage Fixes 이란게 보이실 꺼예요. 이런 행위를 해서 나온걸 '스냅샷' 이라고 합니다.

바로 그걸 4, 5장에서 저희가 git add ~~ 를 통해 해왔던 것입니다. git add ~~~ 은 ~~~ 에 해당하는 파일을 Tracked시키는 것이지. 스냅샷을 만든거야! 라고 생각하시면 이해가 될꺼같습니다.




1-3 Git directory


여기서는 commit 란 마무리된 작업에 작업 이력을 기록해서 저장소로 보내는 행위, 즉 Staging Area의 Tracked된 파일들을 저장소에 저장 을 하게 됩니다.

만약 안전하게 잘 저장 됬다면 이게 바로 Committed상태 라고 합니다.

아직 커밋을 안해봤기에 이정도의 설명만 하고 커밋을 해보고 난 후 조금 더 자세한 내용을 보충하겠습니다.


이제 공식 홈페이지에 나온 내용이 조금은 이해되는듯 합니다.


Git으로 하는 일은 기본적으로 아래와 같다.

1. 워킹 디렉토리에서 파일을 수정한다.

2. Staging Area에 파일을 Stage해서 커밋할 스냅샷을 만든다.

3. Staging Area에 있는 파일들을 커밋해서 Git 디렉토리에 영구적인 스냅샷으로 저장한다.








2. 파일의 라이프 사이클

굉장히 중요한 내용입니다. 하지만 공식 홈페이지에 있는 그림은 역시나 정말 알아보기 쉽게 해놓았습니다. 내용을 그대로 복사해서 넣었습니다. 이보다 더 완벽한 설명은 없다고 생각됩니다.


워킹 디렉토리의 모든 파일은 크게 Tracked(관리대상임)와 Untracked(관리대상이 아님)로 나눈다. Tracked 파일은 이미 스냅샷에 포함돼 있던 파일이다. Tracked 파일은 또 Unmodified(수정하지 않음)와 Modified(수정함) 그리고 Staged(커밋으로 저장소에 기록할) 상태 중 하나이다. 그리고 나머지 파일은 모두 Untracked 파일이다. Untracked 파일은 워킹 디렉토리에 있는 파일 중 스냅샷에도 Staging Area에도 포함되지 않은 파일이다. 처음 저장소를 Clone 하면 모든 파일은 Tracked이면서 Unmodified 상태이다. 파일을 Checkout 하고 나서 아무것도 수정하지 않았기 때문에 그렇다.

마지막 커밋 이후 아직 아무것도 수정하지 않은 상태에서 어떤 파일을 수정하면 Git은 그 파일을 Modified 상태로 인식한다. 실제로 커밋을 하기 위해서는 이 수정한 파일을 Staged 상태로 만들고, Staged 상태의 파일을 커밋한다. 이런 라이프사이클을 계속 반복한다.





https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EA%B8%B0%EC%B4%88-%EC%88%98%EC%A0%95%ED%95%98%EA%B3%A0-%EC%A0%80%EC%9E%A5%EC%86%8C%EC%97%90-%EC%A0%80%EC%9E%A5%ED%95%98%EA%B8%B0



http://bsnippet.tistory.com/10

반응형