Git

1 개요

오픈소스계의 영원한 아이돌 리누스 토발즈는 리눅스 커널을 관리하는 기존 툴이 엉망인 것에 너무 빡친 바람에 git이라는 소스관리 툴을 만든다. 그게 리누스에게 얼마나 깊은 빡침이었는지, 단 2주만에 완성하는 기염을 토했다. (그러고는 후에 “git 만드는게 제일 쉬웠어요”라는 인터뷰로 나와 같은 빠돌이를 지리게 했다).

- 오픈소스의 승리 중에서.

리누스 토르발스가 개발한 분산형 버전 관리 프로그램.

Git은 토르발스가 리눅스 커널 관리를 위해서 개발한 것인데, 매우 빠른 속도[1]와 분산형 저장소 지원이 특징이다. 오픈소스 개발의 특성상 여럿이 달려들어 자기 맘에 드는걸 하기도 하며, 또한 뭘 하나 잘못 붙였다 이상한 걸 건드려 망하기 쉬운데, Git는 이런 환경의 특성에 맞게끔 잘 만들어져 있다.

Git 자체는 오픈소스이며 저장소는 [1]이다.[2] 2010년 이후로 토르발스씨는 더 이상 메인 컨트리뷰터로 활동하지 않고 리포지토리를 다른 사람에게 넘긴 상태. 현재 gitster와 peff 등이 메인 컨트리뷰터로 활동하고 있다.

설령 토르발스가 리눅스를 개발하지 않았더라도, 이것을 개발함으로 인해서 존경을 받았을지 모른다. 오픈소스는 공산주의라고 까던 MS가 Git을 잘 써먹고 있으며, 페이스북, 트위터, 모질라 재단 등에서도 Git를 잘 써먹고 있다. 국내에서 유명한 파일 시스템 기반 php 위키엔진인 모니위키도 Git으로 관리되고 있다.

Git는 다음과 같은 체제를 갖고 있다. 일단 Git의 작업 폴더는 전체 기록과 각 기록을 추적할 수 있는 정보를 포함하고 있는 저장소이다. 즉 자기 컴퓨터에 모든 파일을 다 받아서 하는 셈. 위키로 치자면 위키 전체를 다 받아서 수정하는 것과 같다.[3]

작업이 끝나면 Git 원격 저장소로 다시 발행하는데, 여기에도 원 저장소를 보호하기 위한 가지치기가 있어 가지의 개발이 완료될 시 원 저장소와 합칠 수 있으며, 또한 개발 중간중간 꼬리표를 매겨 개발을 더 수월하게 할 수 있다.

이런 강력한 Git를 호스팅 해주는 Github란 곳이 자유 소프트웨어의 성지로 부각되고 있다. Github에 대한 자세한 사항은 해당 항목 참조.

"비공개 프로젝트가 필요한데 유료라 쓰기 애매하다 + 팀원이 몇 명 안된다"같은 상황이라면 BitBucket도 괜찮은 대안이 될 수 있다. 이쪽은 5명[4] 이하가 참여하는 프로젝트라면 비공개 프로젝트도 무료로 생성 가능.

이러한 외부에서 제공되는 서비스 형태가 아닌, 설치형 Git 서버는 리눅스 서버라면 별다른 추가 프로그램 없이 리눅스의 기본 프로그램(SSH 등)과 배포본에 들어있는 패키지 만으로도 서버를 구동할 수 있다. 그 밖에 유닉스 계열 서버에서도 손쉽게 설정할 수 있다. 그런데 윈도우라면 쉽게 답이 나오지 않았는데, gitbucket 이라는 JVM 기반에 Scala 로 GitHub 을 흉내내어 작성된 오픈소스 프로그램이 등장했다. JVM 구동으로 메모리를 많이 먹는 단점을 제외하면 HTTP는 물론, 윈도우에서 운용하려면 매우 번거롭고 짜증나는 SSH와 메일 알림 같은 여러 서버 기능을 자체적으로 지원하며, GitHub 의 상당히 많은 기능을 매우 비슷하게 구현해 놓았기 때문에 GitHub을 쓰던 사람이라면 거의 그대로 사용할 수 있고, 그렇지 않더라도 GitHub 처럼 매우 쉽게 쓸 수 있다는 장점이 있다.

게다가 TFS 2013부터는 아예 Git 저장소 기능을 기본적으로 제공한다. 자세한 것은 이곳이곳 참고. 비주얼 스튜디오에서도 직접 지원하며, Git을 바로 쓸 수도 있고 SourceTree같은 외부 툴을 사용하기에도 문제가 없다.

2 Git 사용법 배우기

인터넷에 공개된 자료가 매우 많다.

3 기타

리누스 토르발스는 다른 버전관리 시스템인 Subversion을 아주 싫어하여, 대놓고 깐다. 구글에서 한 GIT 강연
  1. 방대한 리눅스 커널 소스코드를 생각해보라. 속도 문제가 매우 중요해질 수 밖에 없다.
  2. 대형 프로젝트 답지 않게 README가 허접스럽고 소스코드도 폴더로 분류되지 않고 난잡하다. 프로젝트 최상단에 표시된 대로 배포 전용 리포지토리라 그런 듯 하다.
  3. git이 아니더라도 DVCS(분산 버전관리 시스템)에 해당하는 Mercurial이나 Bazaar도 해당하는 사항이다.
  4. 메일로 회원을 다단계초대하면 8명까지 가능.