[Git-Pro] 1.1. 시작하기 - 버전 관리란?



1.1. 시작하기 - 버전 관리란?

  • 1.1-1. 로컬 버전 관리
  • 1.1-2. 중앙집중식 버전 관리(CVCS)
  • 1.1-3. 분산 버전 관리 시스템(DVCS)



1.1 시작하기 - 버전 관리란?


버전 관리 시스템(VCS - Version Control System)은 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템이다.

  • 각 파일을 이전 상태로 되돌릴 수 있고, 프로젝트를 통째로 이전 상태로 되돌릴 수 있다.
  • 시간에 따라 수정 내용을 비교해 볼 수 있고, 누가 언제 만들어낸 이슈인지도 알 수 있고 추적 할 수 있다.
  • 쉽게 복구할 수 있다.
  • 거의 모든 컴퓨터 파일의 버전을 관리할 수 있다.


1.1-1. 로컬 버전 관리


  • 보통 학교/회사 내 문서를 작성 할 때 파일을 복사하여 시간과 이름으로 나름 관리를 한다. 하지만 단점은 실수가 발생 할 수가 있다.
  • 데이터베이스를 사용해서 파일의 변경 정보를 관리 VCS라는 게 있다.


1.1-2. 중앙집중식 버전 관리(CVCS)


  • 프로젝트를 진행하다 보면 다른 개발자와 협업하다 생기는 문제를 해결하기 위해 CVCS(중앙집중식 VCS)가 개발됐다.
  • CVS, Subversion, Perforce 같은 시스템은 파일을 관리하는 서버가 별도로 있고 클라이언트가 중앙 서버에서 파일을 받아서 사용(Checkout)한다.
  • 중앙 서버에 문제가 발생하면 다른 사람과 협업할 수 없고 사람들이 하는 일을 백업할 방법이 없는 치명적인 결점이 있다.


1.1-3. 분산 버전 관리 시스템(DVCS)


  • Git, Mecurial, Bazaar, Darcs 같은 DVCS에서의 클라이언트는 단순히 파일의 마지막 스냅샷을 Checkout 하지 않는다. 그냥 저장소를 히스토리와 더불어 전부 복제한다.
  • 서버에 문제가 생기면 이 복제물로 다시 작업을 시작할 수 있다.
  • 클라이언트 중에서 아무거나 골라도 서버를 복원할 수 있다.
  • Clone은 모든 데이터를 가진 진정한 백업이다.
  • DVCS 환경에서는 리모트 저장소가 존재한다.
  • 리모트 저장소가 많을 수도 있다. 그래서 사람들은 동시에 다양한 그룹과 다양한 방법으로 협업할 수 있다. 계층 모델 같은 중앙집중식 시스템으로는 할 수 없는 워크플로를 다양하게 사용할 수 있다.




출처