progit_한글.zip<==참조문서 원문 다운로드
git 이란?
분산형 버전 관리 시스템 (DVCS - Distributed Version Control System) 중 하나입니다.
CVS, Subversion(SVN) 은 같은 버전 관리시스템이지만 VCS 라고만 불렸습니다.
이를 중앙집중식 버전관리시스템 CVCS(Centralized Version Control System) 라고도 부릅니다.
두가지 모두 사용 목적은 버전관리임에는 동일합니다.
차이는 Distributed 와 Centralized 이구요.
CVS, SVN 등 의 Centralized 방식은 작업내용의 버전을 관리하는 VCS서버가 한 군데 있고
클라이언트(개발자가 사용하는 로컬PC)에서 이를 checkout 하는 방식을 사용합니다.
로컬에서 작업이 된 소스는 다시 VCS서버에 업데이트하게 되면 이를 다른 어떤 클라이언트에서든 내려받을 수 있습니다.
물론 버전관리를 통해 프로그램 중복수정에 의한 문제들이 해결되구요.
이는 현재도 많은 프로젝트에서 사용되고 있는 방식이며 특별히 문제가 없어보이는 방식입니다. ^^;
그러나 이 시스템의 단점이 있는데 그것은 바로 vcs 서버 자체의 문제가 발생한 경우 입니다. .
실제 경험에 의하면 개발자 PC의 네트워크가 끊긴 경우 vcs 서버로부터 어떤 추가적인 정보도 가져올 수 없었습니다.
만약 개발자 PC 가 아닌 vcs 서버의 네트웍이 끊어졌다면 다른 모든 클라이언트들이 데이터를 커밋하거나 업데이트하지 못하게 되죠.
그리고 최악의 경우 vcs 서버에서 관리하던 버전관리 소스가 저장된 디스크가 깨진다면. 그야말로 OTL 입니다.
Distributed 방식VCS 의 설명에 앞서 Centralized 방식의 단점을 설명드렸는데요.
DVCS 는 위에서 언급한 CVCS 의 문제점을 분산이라는 개념을 통해 모두 해결합니다..
CVCS 에서 최신버전의 프로그램만을 체크아웃하는 것과 달리 DVCS 에서는 버전이력정보를 같이 체크아웃합니다.
버전이력정보를 내려받으면 최신 버전 프로그램뿐만이 아니라 이전 작업이력을 서버를 거치지 않고 확인할 수 있게 되죠.
거기에 더해서 서버가 아닌 로컬에서 커밋까지 할수 있습니다. 커밋된 정보는 로컬PC에만 저장되겠지만 그 내역을 다시 서버(리모트저장소라고 하겠습니다) 에 올릴 수도 있습니다.
저는 이러한 차이점을 그냥 서버를 통으로 복사하는거라고 이해를 하고 있습니다.
네트워크가 끊긴 상태일 경우 로컬에서 커밋한 후 네트워크가 활성화 될 때 리모트저장소에 올릴 수 있습니다.
CVCS 에서 문제가 되었던 리모트저장소가 폭파된 경우 먼저 누군가 클라이언트에 내려받았다면 이를 이용해서 다시 리모트 저장소를 복원할 수 있습니다.
물론 로컬에서 버전관리를 위한 저장소를 생성하는것도 가능합니다.
다음 포스팅에서는 git 사용방법을 포스팅하겠습니다.