버전관리 시스템(VCS)
주요 기능
파일의 과거 상태 복원
변경 내역 추적 (누가, 언제, 무엇을 수정했는지)
실수 복구 (잘못된 변경이나 삭제를 되돌림)
협업 지원 (여러 명이 동시에 작업 가능)

특징: 로컬(개인 컴퓨터)에서 파일 변경 이력을 관리함
작동 방식: 단일 사용자의 컴퓨터에 데이터베이스 형태로 변경 내용을 저장
장점: 구현이 간단하고 빠름
단점: 실수로 파일이 삭제되면 복구 불가, 협업에 취약
대표 도구: RCS (Revision Control System)

특징: 중앙 서버가 모든 버전 정보를 저장하며, 클라이언트는 서버로부터 데이터를 가져옴
작동 방식
개발자는 중앙 서버에서 Checkout하여 작업하고
변경 사항을 Commit하여 서버에 반영
장점: 팀 기반 프로젝트에서 중앙 집중 관리 가능
단점
중앙 서버에 장애 발생 시 전체 작업 중단 가능성
오프라인 작업에 불리함
대표 도구: CVS, Subversion (SVN), Perforce

특징: 모든 개발자가 전체 저장소(코드 + 이력)를 로컬에 복제(Clone) 하여 작업
작동 방식
Clone: 전체 저장소를 로컬로 복제
Commit: 로컬에서 버전 관리 가능
Push/Pull: 원격 저장소와 동기화
장점
오프라인에서도 작업 가능
중앙 서버에 문제가 생겨도 다른 개발자의 저장소로 복구 가능
다양한 방식의 협업이 유연하게 가능
단점: 초기 복제 시 저장소가 크면 느릴 수 있음
대표 도구: Git, Mercurial, Bazaar, Darcs
| 구분 | 로컬 VCS | 중앙집중식 VCS | 분산 VCS |
|---|---|---|---|
| 저장 위치 | 개인 로컬 | 중앙 서버 | 로컬 + 서버 |
| 협업 지원 | 불가능 | 가능 | 매우 유연 |
| 오프라인 작업 | 불가능 | 제한적 | 가능 |
| 서버 장애 시 영향 | 전체 손실 | 전체 중단 | 복구 가능 |
| 대표 도구 | RCS | SVN, CVS | Git, Mercurial |
참고자료
- Git 공식 문서: https://git-scm.com