본문 바로가기

깃(GIT)

[GIT] GIT 이란?

728x90

Git이란,

'컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템'이다.

 

프로젝트를 하다보면, 하나의 프로젝트에서 여러명이 작업을 한다.

각자가 담당하는 파트를 개발하다보면, 소스를 통합해야할 때가 있다.

이때 소스의 중복과 완성된 프로젝트의 버전관리를 위해 하나의 저장소에서 소스를 관리한다.

 

기존의 버전관리시스템은 SVN으로 했었다.

SVN이란, SubVersion의 줄임말로 형상관리/소스 관리 툴이다.

 

다시,

하나의 서버에서 소스를 쉽고 유용하게 관리해주기 위한 목적으로 만들어진 소프트웨어다.

 

여담으로,

 

GITSVN은 버전 관리 방식이 조금 다르다.

먼저,

 

SVN은 하나의 원격 저장소가 있다.

프로젝트는 원격저장소에서 관리되고, 작업은 로컬 컴퓨터에서 이뤄진다.

로컬컴퓨터에서 완료된 작업은 원격저장소에 곧바로 commit된다.

이러한 방식을 중앙집중관리식이라 한다.

 

GIT또한 하나의 원격 저장소에서 관리된다.

다만, 로컬 컴퓨터에서 완료된 작업을 원격저장소에 곧바로 commit 하지 않고, 로컬 저장소에 반영한다.

이후 로컬 저장소에서 Push를 하면 원격 저장소에 반영이 된다.

이러한 방식을 분산관리식이라 한다.

 

분산관리방식의 GIT이 생겨난 이유는, SVN의 직관적인 부분이 단점이 되기 때문이다.

SVN은 모든 사람이 원격 저장소에서 같은 프로젝트를 받아오고, commit 하는 순간 모든 사람들이 공유된다.

때문에 하나의 파일을 두 사람이 수정하고 commit 시 충돌이 일어날 확률이 높다.

 

반면, GIT은 직관적이진 못하지만, 작업물을 로컬 저장소에 commit하고

원격 저장소에서 Fetch로 로컬저장소로 마스터 파일을 받아와 충돌을 피하고,

로컬 저장소의 내용을 원격 저장소에 Push하면 그때 다른 사람들과 작업이 공유된다.

이러한 방식은 SVN보다 다소 복잡하더라도 훨씬 안전하며,

모든 작업이 로컬에서 이뤄지기 때문에 개발 시 처리속도가 빠르고, 어디서나 협업이 가능하다.

또한 충돌이 일어날 경우를 대비할 수 있기에 개발 시 프로젝트의 버전관리에 있어 안전하다.

 

현재는

SVN, CVS 등 다른 버전 관리 시스템들 보다 GIT의 점유율이 압도적으로 높다.

(그래서 나도 SVN, CVS 사용하다 GIT으로 넘어갔...)

나무위키에도 나와 있지만, VS도 기본 버전 관리시스템을 GIT으로 설정한것도 모자라, 대표적인 자유 소프트웨어 저장소인 Github까지 인수했다고 나와있다.

그만큼 GIT은 프로젝트 개발에 있어 아주 기초적이고 필수적인 버전관리 시스템이다.

 

GIT은 점유율이 높아지면서 Github가 자유 소프트웨어로 자리매김했다.

Github는 사용자들에게 무료로 저장소를 서비스해준다.

 

GitGithub사실상 뗄레야 뗄 수 없는 관계이다.

때문에 다음은 GitHubGit 사용법에 포스팅 할 예정이다.

728x90