만들면서 배우는 Git+GitHub 입문 책을 보면서 학습하였습니다.
버전관리란 ?
- 동일한 정보에 대한 여러 버전을 관리하는 것을 말한다.
- 공학과 소프트웨어 개발에서 팀 단위로 개발중인 소스코드, 설계도 등의 디지털 문서를 관리하는 데 사용된다.
쉽게말해 팀 단위로 데이터의 과거와 현재 상태를 관리하는 것을 말함 !
( Ex. 리포트를 작성할 때 오류로 인하여 작성한 리포트가 모두 날라갔던 경험이 있을 것입니다. 이러한 일을 방지하기 위해 문장을 작성할때 마다 저장했던 순간을 생각하면 이해하기 쉬울 것 같습니다 ^-^ ! )
버전관리 시스템이란 ?
- 말그대로 버전을 관리해주고 프로젝트의 사본 생성, 보존, 복원을 도와주는 도구이다.
- Version Control System이라고 하며, VCS용어로 많이 부른다.
- SVN, CVS 등 다양한 버전관리 시스템이 있다.
버전관리 시스템의 종류
1. 클라이언트-서버 모델
- 클라이언트-서버 모델은 하나의 중앙 저장소를 공유한 후 각각의 클라이언트는 저장소의 일부분만 갖는 형태
- 자신이 작업한는 부분만 로컬에 임시로 저장한 후 작업하는 형태이다.
- 이 모델은 중앙 저장소에서 프로젝트 관리의 모든 것을 처리한다. 따라서 서버가 고장 난다면 불완전한 로컬의 파일 사본들만 남게된다.
- CVS(Concurrent Versions System) : 클라이언트-서버 방식의 버전관리 시스템
- 서브버전 : CVS의 여러 단점을 개선한 버전관리 시스템이다. CVS와 달리 커밋이 원자적이며 파일 이름 변경, 복사, 이동, 삭제 등의 작업 내역을 유지하는 히스토리를 만든다는 장점이 있다.
2. 분산 모델
- 분산 모델은 프로젝트에 참여하는 모든 클라이언트가 전체 저장소에 대한 개별적인 로컬 저장소를 갖고 작업하는 형태이다.
- 클라이언트-서버 모델과 달리 각자가 온전한 전체 저장소의 사본을 로컬에 가지게된다.
- 모든 컴퓨터 각각에 로컬 저장소가 있으므로 저장소와 하는 모든 상호작용이 로컬 저장소에도 반영될 수 있다.
- 머큐리얼 : 2005년 매트 맥컬이 개발한 분산 모델의 버전관리 시스템 Git의 기본 개념과 크게 다르지 않지만 Git은 필요한 기능을 골라서 사용한다는 차이가 존재한다. 기존 서브버전 시스템에서 분산 모델 버전관리 시스템에 적응하기 쉽다는 장점이 있다.