Git 이론 (1)

김태규·2024년 6월 21일
0

Git 공식문서 학습

목록 보기
3/9

버전 관리

버전 관리란?

버전 관리 시스템(VCS)은 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템이다. 소프트웨어 소스 코드 뿐만 아니라 그래픽 디자이너나 웹 디자이너도 이미지나 레이아웃의 버전을 관리할 수 있다. VCS를 사용하면 이전 버전과 비교하거나 누가 어떤 변경을 했는지도 알 수 있다. 또한 잃어버린 파일을 찾거나 잘못 고쳤을 때 쉽게 복구할 수 있다.

로컬 버전 관리

버전 관리를 위해 이전에 하던 방식은 디렉토리 파일을 복사하는 방법이다. 이 방법은 간단하지만 디렉토리를 지우거나, 파일을 잘못 고치는 등 실수하기 쉽다. 이런 이유료 프로그래머들이 간단한 데이터 베이스를 사용한 로컬 VCS를 만들어 파일의 변경 정보를 관리하기 위해 사용하기도 했다.

많이 쓰는 VCS 도구로는 RCS(Revision Control System)로, 오늘날에도 많은 회사가 사용하고 있다. RCS는 기본적으로 Patch Set(파일에서 변경되는 부분)을 관리한다. 이 Patch Set은 특별한 형식의 파일로 저장한다. 그리고 일련의 Patch Set을 적용해서 모든 파일을 톡정 시점으로 되돌릴 수 있다.

중앙집중식 버전 관리(CVCS)

다른 개발자와 함께 작업해야 하는 경우에 생기는 문제를 해결하기 위해 CVCS가 개발되었다. CVCS는 CVS, Subversion, Perforce 같은 시스템은 파일을 관리하는 서버가 별도로 있고, 클라이언트가 중앙 서버에서 파일을 받아서 사용(Checkout)한다.

로컬 VCS에 비교한 CVCS의 장점은 다음과 같다. 먼저, 사용자는 서로 누가 무엇을 하고 있는지 알 수 있다. 다음으로, 관리자는 관리가 용이해진다. 관리자는 누가 무엇을 할지 꼼꼼하게 관리할 수 있다. 또한, 모든 클라이언트의 로컬 데이터베이스를 관리하는 것보다 VCS 하나를 관리하기가 훨씬 쉽다.
CVCS의 단점은 다음과 같다. 먼저, 중앙 서버에 문제가 발생할 경우 협업이 불가능해지고, 일을 백업할 방법도 없다. 또한 중앙 데이터베이스가 있는 하드디스크에 문제가 생기면 사람마다 가지고 있는 스냅샷은 괜찮지만, 다른 프로젝트의 모든 히스토리를 잃는다. 로컬 VCS 시스템도 이와 비슷한 단점이 있다.

분산 버전 관리 시스템(DVCS)

DVCS에는 Git, Mecurial, Bazaar, Darcs 등이 있다. DVCS 에서 클라이언트는 단순히 파일의 마지막 스냅샷을 Checkout 하는 것이 아니라 저장소를 히스토리와 더불어 전부 복제한다. 때문에 서버에 문제가 생기면 이 복제물로 다시 작업을 시작할 수 있다. 즉, 클라이언트 중에서 아무거나 골라도 서버를 복원할 수 있다. Clone 은 모든 데이터를 가진 진정한 백업이다.

대부분 DVCS 환경에서는 리모트 저장소가 한 개 이상 존재한다. 때문에 동시에 다양한 그룹과 다양한 방법으로 협업할 수 있다. 계층 모델 같은 중앙집중식 시스템으로는 할 수 없는 워크플로우를 다양하게 사용할 수 있다.

profile
Frontend, Mobile Developer

0개의 댓글