#2 Pro Git Study - 버전관리 시스템

#2 Pro Git Study - 버전관리 시스템

Git을 설치하고 사용하기 전에 Git이 무엇인지에 대해서 먼저 알아보자 Git은 버전관리 시스템중 하나이다.

버전관리란?

버전관리란 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점으로 돌아갈 수 있도록 관리해주는 시스템을 말한다.

소스코드 뿐만 아니라 이미지나 다른 모든 파일들도 가능하다.

만약 작업하다가 일부분을 이전 시점으로 되돌리거나 삭제한 파일을 복구하는것도 쉽게 할 수 있다.

버관관리 시스템을 나누자면 로컬 버전 관리 시스템, 중앙 집중식 버전 관리 시스템, 분산 버전 관리 시스템 이렇게 3개로 나눌 수 있다.

먼저 로컬 버전 관리 시스템이란 버전을 관리하기 위해 디렉터리를 통해 파일을 복사하는 방법이다.

다른 툴이 필요하거나 뭐 그런것이 아니라 단순히 새로운 폴더를 만들고 관리할 파일을 붙여넣어 관리한다.

이 방법은 간단하고 자주 사용한다. 그렇지만 잘못되기도 쉽다. 해당 디렉토리를 삭제하거나 실수로 잘못 고치거나 잘못 복사할 수 있다.

(나는 Git을 몰랐을 때, 프로젝트를 압축하여 압축본의 파일명을 시간순서로 하여 관리했었다.)

이런 이유때문에 프로그래머들은 오래전에 로컬 VCS라는걸 만들었다.

VCS는 아주 간단한 데이터베이스를 사용해서 파일의 변경 정보를 저장하는 것이다.

위의 이미지 처럼 로컬 컴퓨터에 버전을 관리하는 데이터베이스를 생성한 뒤, 관리할 파일을 버전에 따라 저장하여 관리하는것을 말한다.

많이 사용되는 VCS 도구 중에는 rcs라고 하는 것이 있는데 아직까지도 사용하고 있다고 한다…

다음으로는 중앙집중식 버전 관리 시스템인데 이는 여러사람이서 동시에 작업을 가능하도록 해준다.

프로젝트를 진행할때 많은 사람들과 함께 작업하는데 서버가 별도로 존재하고 클라이언트가 서버에 저장되어 있는 프로젝트를 가져와 사용한다.

꽤 오랜시간 이러한 시스템을 사용해왔다.

CVCS (중앙 집중식 버전관리 시스템) 은 로컬 vcs에 비해 장점이 많다. 프로젝트에 참여한 사람이면 누가 무엇을 했는지 알 수 있다. 관리자는 누가 무엇을 하고있는지 볼수도 있다.

그러나 CVCS는 단점이 존재하는데 대표적으로 중앙 서버에서 발생하는 문제이다. 만약에 서버에 문제가 생긴다면 그동안 다른 사람 모두다 작업을 할 수 없으며 백업할 방법도 없다. 물론 이미 받아놓은것을 바탕으로 복구할 수 있겠지만 없다면 다 날아간것이다.

마지막으로 분산 버전 관리 시스템 이다. Git도 이 중 하나이다. DVCS (분산 버전 관리 시스템)에서는 클라이언트가 파일의 마지막 스냅샷을 체크아웃 하지 않는다. 저장소의 모든것을 복제한다. 서버에 문제가 생기면 이 복사된 것을 바탕으로 다시 작업을 할 수 있다.

게다가 대부분의 DVCS 환경에서는 리모트 저장소가 존재한다.