Git은 컴퓨터 파일의 변경사항을 추적하고 여러 사용자들의 작업을 조율하는 분산 버전 관리 시스템(DVCS)이다.

 

여기서 분산 버전 관리 시스템은 뭘까? 그 전에 버전 관리는?

 

버전 관리 시스템(VCS)은 컴퓨터 파일의 모든 변경사항을 시간에 따라 기록했다가, 특정 시점의 버전을 꺼내올 수 있는 시스템이다. VCS는 소프트웨어의 소스 코드뿐 아니라 거의 모든 종류의 파일의 버전을 관리할 수 있다. 쉽게 말해서 텍스트 문서를 작성할 때 VCS를 이용하면, 내용을 추가/삭제한 후 임시저장을 할 때마다 새로운 파일(정확히는 스냅샷)이 생성된다고 볼 수 있다.

 

버전 관리에는 크게 세 가지 종류가 있다.

 

로컬 버전 관리 시스템(Local VCS)은 단순한 형태의 VCS로, 단일 사용자가 사용한다. 로컬에 버전 데이터베이스를 생성해 파일의 버전 정보를 관리한다.

 

Local VCS

 

 

앙 집중식 버전 관리 시스템(CVCS)은 중앙의 서버가 파일 버전을 관리하고, 클라이언트들이 파일을 받아와 checkout(최신 변경사항 가져오기)할 수 있다. 여러 사용자가 함께 작업할 수가 있다. 그러나 서버에 모든 파일 정보가 있어, 서버가 다운되거나 하는 일이 발생하면 클라이언트들이 가지고 있는 스냅샷을 제외하고는 복구할 방법이 없다. 또 특정 버전을 가져오는 것이 일반적으론 불가능하며, 서버에서 해당 버전을 커밋 번호를 이용해 업데이트해야 가능하다. 

 

Centralized Version Control System

 

 

분산 버전 관리 시스템(DVCS)은 서버와 클라이언트를 동기화한다. CVCS와 달리 클라이언트도 로컬 저장소를 가지며, 서버의 히스토리를 전부 복제한다. 로컬에서의 변경 후 푸시(push)를 하면 서버로 전달할 수 있는 것은 같으나, 서버에 문제가 생겨도 로컬의 복제물로 서버 복구가 가능하다는 장점이 있다. 또 CVCS와 달리 로컬 저장소가 있어 개발자가 원하는 특정 버전을 가져올 수 있다.

 

Distributed Version Control System

 

 

이런 버전 관리 시스템을 이용하지 않고 단순히 파일을 복사하여 버전을 관리하는 원시적인 방법을 쓸 수도 있으나, 파일을 실수로 삭제하거나 잘못 고치는 문제가 발생할 수 있다. 또한 VCS는 변경된 부분(patch)만을 저장하는 반면, 이 방법은 파일 전체를 저장해 저장공간 등의 관리 비용이 커질 수 있다.

 

따라서 효율적인 관리를 위해선 버전 관리 시스템을 이용하는 것이 현명하다.

 

그 중에서도 DVCS는 분산 개발 및 협업 등의 측면에서 CVCS에 비해 장점이 많아 많이 이용된다.

깃은 속도, 단순한 브랜치 생성(브랜치를 중요하게 다룸), 협업의 용이성의 측면에서 강점을 가져 개발자들이 가장 많이 쓰는 버전 관리 시스템 중 하나다.

 


출처: https://git-scm.com/book/ko/v2/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-%EB%B2%84%EC%A0%84-%EA%B4%80%EB%A6%AC%EB%9E%80%3F

'git' 카테고리의 다른 글

[git] git 기초 및 용어  (4) 2024.07.16

+ Recent posts