1. Git 방식으로 버전 관리하기
1.1. 저장소.
버전 관리 시스템에서 저장소(repository)는 사용자가 변경한 모든 내용을 추적하는 공간이다.
대부분의 버전 관리 시스템은 코드의 현재 상태는 물론이고 변경이 언제 발생했는지, 누가 변경했는지, 변경 사항을 설명하는 텍스트 로그 메시지까지 저장한다.
CVS, SVN은 중앙 집중식 저장소 모델을 따른다.
중앙 집중식 저장소는 컴퓨터에 직접 접근해야 하는 문제는 개선했지만, 여전히 한계가 있다.
먼저, 사용자는 최신 버전의 코드만 가지고 있다. 변경 이력을 보려면 저장소에 정보를 요청해야 한다.
정보를 요청해야 한다는 점 때문에 2번째 문제가 발생한다. 대개 네트워크상에서 원격 저장소로 접근해야 한다는 점이다.
이렇게 인터넷에 연결할 수 없는 환경은 Git이 따르는 모델인 분산 버전 관리 시스템의 가장 큰 장점 하나를 부각시킨다.
모든 팀원이 변경사항을 전송하는 중앙 저장소를 가지는 대신, 각자가 프로젝트의 전체 이력이 있는 자신만의 저장소를 가진다. 커밋할 때는 원격 저장소에 연결할 필요 없이, 변경사항을 지역 저장소에 기록한다.
개발자가 직접 변경 사항을 중앙 저장소에 전송하려고 접속할 수 있다. 이런 행동을 Git에서는 푸싱(pushing)이라고 한다. 또는, 변경사항을 모아둔 패치를 만들어 프로젝트를 관리하는 사람에게 제출해서 중앙 저장소에 반영하게 할 수 있다.
1.2. 무엇을 저장해야 하나.
프로젝트를 진행하는데 필요한 전부.
1.3. 작업 트리
모든 변경은 작업 트리에서 이뤄진다.
작업 트리는 저장소를 바라보는 자신의 현재 시점이다.
작업 트리는 소스 코드, 빌드 파일, 단위 테스트 등 프로젝트의 모든 파일을 가지고 있다.
다른 버전 고나리 시스템에서는 작업트리를 작업 복사본(working copy)이라고 한다.
서브버전 같은 버전 관리 시스템에서 저장소는 ‘저 너머’의 다른 서버에 존재한다.
Git에서 ‘저 너머’란 로컬 컴퓨터의 프로젝트 디렉터리에 있는 .git/ 디렉터리를 의미한다.
즉, 저장소의 이력을 보고 변경사항을 살펴보려고 다른 서버에 있는 저장소와 통신하지 않아도 된다.
작업트리를 가져오려면, Git에게 자신의 프로젝트를 저장소에 초기화하도록 요청하거나, 기존 저장소의 프로젝트를 복제(clone)할 수 있다.
복제하기는 지역 저장소를 만든 후, 개발의 기본 흐름인 마스터 브랜치에서 복사본을 checkout한다. checkout은 Git이 사용자의 작업 트리를 저장소의 특정 시점과 일치하도록 변경하는 작업이다. 복제하기는 7.2절에서.
1.4. 파일 다루고 동기화하기
1.5. 프로젝트, 디렉터리, 파일 추적하기.
최하위 계층에서 Git은 저장소에 저장한 파일을 내용 단위로 추적한다. 이런 점에서 파일을 추적하는 여타 버전 관리 시스템과는 다르다.
Git는 models.py 파일을 추적하는 대신 models.py에 있는 변수나 함수 등을 구성하는 각 문자와 줄을 추적하며, 이름, 파일모드, 심볼릭 파일 여부와 같은 메타데이터를 models.py에 추가한다.
이러한 점은 저장소의 전체 이력을 저장하는데 필요한 공간을 줄인다. 그리고 2 파일사이에서 함수나 클래스의 이동을 알아내거나 어디에서 복사된 코드인지 결정하는 것과 같은 작업이 가능해졌으며 빠르다.
1.6. 태그를 이용해 마일스톤 추적하기
1.7. 브랜치로 분기 이력 만들기
1.8. 합치기
1.9. 잠금 옵션
'형상관리 > Git' 카테고리의 다른 글
Git, 분산버전 관리시스템(11) - Git으로 옮겨가기 (0) | 2012.04.23 |
---|---|
Git, 분산버전 관리시스템(10) – 기본을 넘어서 (0) | 2012.04.23 |
Git, 분산버전 관리시스템(9) - 저장소 조직하기 (0) | 2012.04.23 |
Git, 분산버전 관리시스템(8) - 원격 저장소를 이용하여 작업하기 (0) | 2012.04.23 |
Git, 분산버전 관리시스템(7) - Git 이력 이용하기(2) – 변경 취소하기 (0) | 2012.04.23 |
Git, 분산버전 관리시스템(6) - Git 이력 이용하기(1) – 로그/리비전범위/버전간차이점/blame/내용따라가기 (0) | 2012.04.23 |
Git, 분산버전 관리시스템(5) - 브랜치 이해하고 활용하기 (0) | 2012.04.23 |
Git, 분산버전 관리시스템(4) – Git 기초: 추가하고 커밋하기 (0) | 2012.04.23 |
Git, 분산버전 관리시스템(3) – 첫 프로젝트 만들기 (0) | 2012.04.23 |
Git, 분산버전 관리시스템(2) - Git 설정하기 (0) | 2012.04.23 |