이번포스팅은 Git 을 사용하기에 앞서, Git 의
기본 지식에 대해서 공부해 보는 시간을 가지고자 한다.
이 포스팅의 그림은 Pro Git 사이트에 있는 그림들을 가져왔음을 밝힌다.
Git 은 다른 버전 관리 툴들과는 달리, file 들의
변경이력을 snapshot 이라는 관점으로 관리를 한다.
예를 들어, CVS, Subversion 등은 변경이력을 변경된 정보를 저장하는 방식으로 변경
이력을 추적한다.
CVS 나 Subversion 같은 툴들은 각각의 파일에
대해서 처음버전에 변경된 정보를 가진다.
Git 은 프로젝트가 시간에 지남에 따라 변경되는 것들을
Snapshot 이라는 관점으로 정보를 저장한다.
Git 을 가지고 프로젝트 버전관리를 하게 되면, 모든
작업을 자신의 PC 에서 할 수 있는 이득을 얻을 수 있다.
CVS 나 Subversion 은 해당 Repository에 변경을 가하고 commit 을 하기 위해서는
반드시 Repository 를 저장하고 있는 중앙 서버에 접근을 할 수 있어야만 한다. 하지만, Git 은 그럴 필요가 없다. 이 이유는 이전 포스팅 Git 의 소개 란에서 자세히 설명한 바가
있다.
Git 시스템에서는 파일들의 check-sum 정보를
가지고 있기 때문의 파일들의 무결성을 보장할 수 있다. 파일의 내용이 아주 조금이라도 변경되더라도 이는 check-sum 에 바로 반영이 되기 때문이다. Git 은 check-sum 을 계산하기 위해서, SHA-1 hash 알고리즘방식을
사용한다. 이렇게 SHA-1 hash 로 나온 check-sum 은 40개의 16
진수로 표현이 된다.
(i.e. 1abdf3456a2234b1234599999000003245a0294)
Git 은 이렇게 파일의 이름이 아닌 자체 Database 에
이러한 check-sum 으로 참조할 수 있는 정보를 이용하여 버전관리를 한다.
Git 에서 버전관리를 위해서 Git 시스템은 3 가지 상태를 가진다.
1. commit 된 상태 2. 수정된 상태 3. stage 된 상태 |
commit 된 상태는 정보가 안전하게
database 에 저장된 상태를 의미한다. 그래서
commit 이라함은 정보를 database 에 입력하는 것을 뜻한다. 수정된 상태는 파일을 수정하였지만, database 에 아직 commit 을 하지 않은 상태를 의미한다.
마지막으로 stage 된 상태는 현재버전의 수정된 파일을 다음 commit snapshot 에 넣겠다고 표시를 하는 것을 의미한다.
아래 그림은 Git 으로 관리되는 Project 의
세가지 중요한 부분들을 보여준다.
git directory 는 Git 이 프로젝트를
위한 metadata 와 database 를 저장하는 곳을
뜻한다.
이 디렉토리는 저장소를 clone (복제) 할 때
같이 복사되는 디렉토리이기도 하다.
working directory 는 프로젝트의 특정 버전을
checkout 한 하나의 작업공간을 의미한다. 그래서 개발자는 이 디렉토리에서 소스코드를
수정하기도하고 사용할 수도 있다.
staging area 는 git directory 에
있는 단순한 하나의 파일인데, 이것은 다음 commit 에
대한 정보를 가지고 있다. 종종 이것은 index 라고도
불리운다.
기본적인 Git 작업 흐름도는 아래와 같다.
1. working
directory 에 있는 파일들을 수정한다. 2. 수정한 파일들을 staging area 에 추가한다. 3. staging
area 와 수정된 파일들을 commit 하여 Git
directory 에 추가한다. |
그래서 파일은 세 가지 상태를 가진다고 볼 수 있다.
1. committed, 2. modified 3. staged
'Programming > Git' 카테고리의 다른 글
9. github 계정설정 (0) | 2011.07.03 |
---|---|
8. github 소개 (0) | 2011.07.03 |
6. Git Repository (저장소) 를 얻어오기 (0) | 2011.07.03 |
5. Git 도움말 얻기 (0) | 2011.07.03 |
4. Git 설정하기 (0) | 2011.07.03 |