공사중

쉽게 정리한 Git 사용법 : 분산 버전 관리 시스템DVCS 본문

개발 | Git

쉽게 정리한 Git 사용법 : 분산 버전 관리 시스템DVCS

행운개발자 LuckyDeveloper 2019. 2. 18. 18:24

Git은 분산 버전 관리 시스템입니다. (DVCS, Distributed Version Control System)


분산을 설명하기 전에, 중앙집중식 버전 관리 시스템 (Contralized CVS)를 설명하고 차이점을 설명하겠습니다.

우리는 하나의 프로젝트에 대해 여러개의 스냅샷을 만들고 저장했습니다. 저장한 장소는 해당 프로젝트를 수정한 사람의 컴퓨터(이하 로컬)입니다. 만약에 이 컴퓨터가 침수되어서 저장한 내용을 되찾을 수 없다면 이 프로젝트는 그냥 날라가게 됩니다. 그래서 사람들은 서버를 사용합니다. 개인 컴퓨터가 고장나서 못쓰게 되면 서버에서 다시 다운 받으면 되니까요. 게다가 여러 사람들이 서버에 각자의 프로젝트를 올리고 다른 사람들이 다운받아 볼 수 있게 할 수도 있습니다(이 때 서버에서 하나의 스냅샷만 다운 받아서 checkout). 그런데 이 방식은 서버에서 문제가 생기면 모든 사용자가 프로젝트를 날리게 됩니다. 로컬에 다운 받아 놓은 정보(하나의 스냅샷)는 살아남겠지만 프로젝트 전체(모든 스냅샷에 대한 정보)를 되돌릴 방식은 존재하지 않습니다. 

  이를 해결하기 위해서 '분산'이라는 방식을 사용합니다. 중앙집중식과 달리 분산방식에서는 '서버'가 아닌 '저장소,Repositiory'라는 단어를 사용합니다. 막 되게 중요한 서버가 아니라 여러 사람들이 진행한 내용을 그저 저장해놓은 장소라는 의미만 가지는 것입니다. 개인들은 자신이 작업한 내용(모든 스냅샷에 대한 정보)를 저장소에 저장합니다. 이것이 가능한 이유는 프로젝트가 아무리 커도 각각의 스냅샷은 몇 kb가 되지 않기 때문입니다.(어떻게 스냅샷의 크기가 이렇게 작을 수 있는지는 구글링...혹은 git을 만드신 리눅스토발즈님께 여쭤보기..) 그리고 다른 사용자가 저장소에서 프로젝트를 다운받을 때는 모든 스냅샷에 대한 정보를 한 번에 다운 받습니다. 만약에 저장소가 공격을 받아도 거의 대부분의 프로젝트를 되찾을 수 있다는 장점이 있습니다. 당연히 모든 스냅샷을 다운 받은 모든 사람이 '작년 3월 18일에 작성했던 그 부분까지만 보여줘!'라는 checkout을 할 수 있는 것도 큰 장점입니다. 그리고 모든 정보를 로컬에서 다 가지고 있어서 cmd에서 명령어를 입력할 때 서버가 필요없습니다. 네트워크에 연결되어있지 않아도 원하는 스냅샷으로 checkout할 수 있다는 것은 큰 장점입니다.