-
버전 관리 도구에 대한 이해와 Git을 설치하는 방법을 설명하고 Git 탄생 배경, Git을 사용하는 이유에 대해서 다시 학습을 하고자 합니다.
🔍 버전 관리란? (Version Control System)
버전 관리 시스템은 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템이다.
🤔 왜 버전관리를 해야하지..?
- 무언가 잘못되었다면 되돌릴 수 있다. (복구)
- 시간에 따라 수정 내용을 비교해 볼 수 있다.
- 누가 문제를 일으켰는지도 추적하고 누가 언제 만들어낸 이슈인지 확인할 수 있다.
- 작업 내용을 병합할 수 있다.
🖥️ 로컬 버전 관리
디렉토리로 파일을 복사하면서 버전을 관리
보고서.doc 최종_보고서.doc 진짜_최종_보고서.doc 진짜_진짜_최종_보고서.doc⚠️ 문제
- 디렉토리를 실수로 삭제
- 실수로 파일을 수정
💡 이런 로컬 파일들을 관리하기 위해서 RCS 라는 파일 기반 버전 관리 시스템 이 등장
🖥️ RCS (Revision Control System)

파일의 변경된 부분 에 대해서 저장
- 파일 단위의 버전관리
- 각 파일의 변경 내역을 순차적으로 추적하는 것이 목적
⚠️ 문제
- 외부의 사람들이 사용할 수 없다.
- 로컬 컴퓨터에 문제가 생겼을 경우 작업 내용에 문제가 생길 수 있다.
🖥️ CVCS - 중앙집중식 버전관리 (Centralized Version Control System)

중앙 서버에서 모든 버전 기록을 관리 하는 방식
- 네트워크 연결을 통해서 진행
특징
- 로컬의 VCS와 달리 CVCS는 모두 누가 무엇을 하고 있는지 알 수 있다.
- 모든 사람들의 로컬 데이터베이스를 관리하는 것보다 VCS 하나를 관리하기가 훨씬 쉽다.
- 모든 히스토리를 한곳에서 관리
⚠️ 문제
- 중앙 서버에 문제가 발생하면?? ⇒ 그동안 다른 사람들과 협업, 파일 백업등의 방법을 할 방법이 없다.
- 중앙 데이터베이스에 문제가 생기면 모든 히스토리가 없어질 수 있다.
🖥️ DVCS - 분산 버전 관리 시스템 (Distributed Version Control System)

중앙 서버 없이도 버전관리를 할 수 있는 방식
- RCS (로컬 버전 관리)의 장점 + CVCS (중앙 집중 버전 관리) 장점
- 버전 정보를 로컬에 전체 복사해서 작업할 수 있는 시스템
특징
- 원격 저장소 자체를 로컬저장소로 가져온다.
- 로컬에서 원격저장소로 올리거나 원격저장소의 파일을 로컬로 가져올 때 네트워크 통신
- 로컬에서 버전관리를 할 때는 네트워크 통신을 필요로 하지 않는다.
- 대표적인 DVCS - Git
🚀 Git- 2005년, 리누스 토르발즈(Linus Torvalds, 리눅스 창시자)가 개발
- 기존에 사용하던 상용 버전관리 시스템(BitKeeper)에서 분쟁이 생기면서 대체 도구로 Git 개발
- Git은 다음 목표를 세워서 요구사항을 충족하고자 함
- 속도 빠름
- 분산 방식
- 강력한 무결성 검증 (SHA-1 → SHA-256로 이행 중)
- 분기 및 병합이 쉽고 강력함