Git을 설명하기에 앞서 버전 관리와 버전 관리 시스템이 무엇인지 살펴봅시다.
소스 코드의 관리를 기준으로 설명하겠습니다.
Version Control?
버전 관리는 수정되는 소스 코드들에 버전을 부여해서 관리하는 것을 말합니다.
버전을 통해 관리하면서 소스 코드의 추적 및 관리가 용이해지며,
개인뿐 아니라 팀이 더 빠르고 스마트하게 작업할 수 있도록 도와줍니다.
Version Control System?
버전 관리를 위해서 버전 관리 시스템을 사용하게 됩니다.
VCS를 사용해서 이전 버전의 상태로 소스 코드를 되돌릴 수 있으며,
누가 언제 수정한 소스 코드가 문제인지 추적할 수 있습니다.
VCS는 로컬, 중앙집중, 분산의 방법으로 버전을 관리하여 사용됩니다.
Local VCS
로컬 버전 관리 시스템은 로컬 컴퓨터 내에 간단한 데이터베이스를 두고 파일의 변경 정보를 관리하는 시스템입니다.
주로 RCS라는 Patch Set(파일에서 변경되는 부분)을 관리하는 도구를 사용합니다.
Central VCS
여러 개발자가 팀을 이루어 작업을 할 경우 생기는 문제를 해결하기 위해서 중앙집중식으로 버전을 관리하여 사용합니다.
CVCS는 파일을 관리하는 서버를 별도로 두어 클라이언트가 중앙 서버에서 파일을 받아서(Checkout) 사용합니다.
CVCS 환경은 Local VCS에 비해서 많은 장점이 있습니다.
누가 무엇을 하는지 알 수 있으며,
관리자는 모든 클라이언트의 로컬 데이터베이스를 관리하는 것보다 VCS 하나를 관리하는 것이 훨씬 쉬울 것입니다.
그러나 CVCS 환경은 중앙 서버의 의존도가 높기 때문에 서버가 다운된다면 그동안 모든 협업이 중단될 수 있으며,
중앙 서버의 데이터베이스에 문제가 생긴다면 프로젝트의 모든 히스토리가 사라진다는 문제가 생길 수 있습니다.
Distributed VCS
분산 버전 관리 시스템은 CVCS처럼 서버 컴퓨터를 하나 두어서 버전을 관리하지만
CVCS와는 달리 각 클라이언트에서 단순히 마지막 스냅샷을 Checkout 하는 것이 아니라
저장소를 모든 버전의 히스토리와 더불어 전부 복제합니다.
이를 통해 만약 서버가 다운되거나 서버의 데이터베이스에 문제가 생겨 모든 히스토리가 사라지더라도
클라이언트 중에서 아무거나 골라 서버를 복원시킬 수 있습니다.
DVCS 환경에서 대부분은 리모트 저장소가 존재하여 다양한 방법으로 협업을 진행할 수 있습니다.
DVCS로는 Git, Mecurial, Bazaar, Darcs 등이 있습니다.
Git의 리모트 저장소로는 GitHub 등이 있습니다.
Reference
https://www.atlassian.com/git/tutorials/what-is-version-control
https://git-scm.com/book/ko/v2
https://ko.wikipedia.org/wiki/%EB%B2%84%EC%A0%84_%EA%B4%80%EB%A6%AC
'ETC' 카테고리의 다른 글
[Version Control System] Git (0) | 2023.07.21 |
---|---|
[Internet] What is hosting? (0) | 2023.07.03 |
[Internet] DNS and how it works? (0) | 2023.07.01 |
[Internet] What is Domain Name (0) | 2023.06.29 |
[Internet] Browsers and how they work? (0) | 2023.06.27 |