본문 바로가기

Git 으로 버전관리하기/1장. Git 이해하기

버전관리 도구의 종류

반응형

학습목차

1장. Git 이해하기

   1-1. Git에서 버전관리란?

   1-2. 버전관리 도구의 종류

 

이번에는 버전관리 도구의 종류를 알아보고 Git은 어떤 종류인지와 장점 등을 알아보려고 한다.

버전관리 도구의 종류

다음은 최근에 가장 많이 사용하는 버전관리 도구들을 보여주고 있다.

 

버전을 관리해주는 면에서는 동일하지만 그 쓰임새는 다르다.

 

출처:위키피디아

 

위의 표에서 볼 수 있는 것처럼 버전관리 도구는 다음 세가지 종류로 나뉜다.

 

Local Only 종류는 버전을 관리하는 능력만 가지는 도구이다. 반면에 Client-Server(이하 CS) 와 Distributed(이하 분산형) 형식의 도구는 팀 단위로 파일이나 버전을 공유할 수 있게하는 기능도 가지고 있다.

 

그렇다면 CS 형과 분산형의 공유방법에는 어떤 차이가 있을까?

CS 형의 버전 공유방법

CS 형은 모든 팀원이 한 네트워크에 모여서 동일한 시간대에 동일한 프로젝트로 작업하는 환경을 위한 도구이다.

 

팀원들은 동일한 시간대에 동일한 네트워크에 모인 상태에서 공유할 프로젝트를 서버 컴퓨터에 두고 그것을 팀원들이 함께 손대는 방식이다. 그런데 이런 방식은 편리하기는 하지만 동시성 문제를 발생시킨다.

 

* 동시성 문제 : 둘 이상의 팀원이 특정 파일을 동시에 접근하거나 동일한 파일을 서로 다르게 편집하는 문제

 

그래서 동시성 문제를 해결하기 위해서 프로젝트를 공유하는 Server 제품에서는 동시성 문제가 발생하지 않도록 Lock을 거는 방법을 사용한다.

 

어떤 클라이언트가 문서를 열어보려고 하면 Server는 인증을 요구하고 인증이 성공하면 요청문서의 복사본을 제공한다. 그리고 원본에 Lock을 건다.  요청한 문서의 수정본이 돌아와야 Lock이 풀리고 새로운 요청을 받을 수 있다.

 

이런 방식은 직관적이고 순차적으로 작업이 이루어지기 때문에 문서의 버전이 꼬일 일도 없고 편하다. 하지만 이런 방식으로는 팀작업이 불가능 한 경우가 있다.

 

서로 다른 시간대에서 그리고 서로 다른 장소에서 작업을 하고 싶은 경우에는 CS 형식의 도구는 사용할 수가 없다. 그것을 위해서 등장한 버전관리 도구가 분산형 도구이다.

CS 형의 버전 공유방법

분산형 버전관리 도구 중에서 가장 유명한 대표적인 도구가 Git이다.

 

Git은 리눅스를 개발한 리누스 토발즈에 의해서 개발되었으며 리눅스를 개발하기 위해 만들어진 도구이다. 리눅스라는 거대 프로젝트에 참여하는 개발자는 전 세계적으로 수십만 또는 수백만에 이른다.

 

이 사람들이 동시에 모여서 개발에 참여한다는 것은 현실적으로 불가능하다. 그래서 공유된 프로젝트를 각자 가지고 가서 각자 자신이 원하는 시간에 원하는 장소에서 코드를 수정하면서 각자의 버전을 로컬방식으로 추가한다.

 

 

그리고 자신이 작성한 코드가 완성되면 기존 프로젝트에 병합(Merge)을 하는 방식이다. 이 때 병합을 도와주는 도구가 Git이다.

 

분산형은 이렇게 병합을 통해서 코드를 함께 작업하게 해준다. 이러한 방식이 현재 트랜드에 부합되는 방식이다. 시간과 장소에 구애받지 않고 팀작업을 할 수 있기 때문이다.

 

최근에는 오픈소스 생태계가 커지고 오픈소스를 개발하거나 오픈소스를 가져다가 사용할 때 Git의 능력이 아주 많은 도움을 주고 있다.

 

그럼 이제 Git을 통해 버전도 관리해보고 팀간의 협업을 위해 프로젝트를 공유해보도록 하자. 그러기 위해서 우선 다음 시간을 통해서 Git을 준비하는 방법을 알아보도록 하자.

 

다음 : Git 설치하기

반응형

'Git 으로 버전관리하기 > 1장. Git 이해하기' 카테고리의 다른 글

Git 에서 버전관리란?  (0) 2022.01.23