나도 git 좀 써보자 – 원격 서버 구축하기

이 글은 크몽 재능인, socurites님이 원고를 기고하셨습니다.

이 글은 총 4부 중, 3번째 git 원격 서버 구축하기와 관련한 내용입니다.

일단 2명 이상의 개발자가 함께 프로젝트를 하려면 원격 저장소(remote repository)가 필요하다. 원격 저장소를 위한 서버는 직접 운영할 수도 있지만, 무료인 GitHub를 사용할 수도 있다.

원격 저장소는 일반적으로 아래와 같은 작업을 지원해야 한다.

  • 프로젝트를 원격 저장소에 업로드하기
  • 원격 저장소에서 로컬 저장소로 가져오기
  • 변경사항을 원격 저장소에 올리기
  • 다른 개발자가 올린 변경 내용을 로컬 저장소로 가져오기

이제 git에서 어떻게 하면 되는지 하나하나 살펴보려는 찰나, git 매뉴얼을 찾았다. 진작에 봤으면 삽질을 하는 시간이 줄었을텐데, 아쉬울 뿐이다. 대부분 한글로도 번역이 되어 있으므로, 상당히 도움이 된다.

어쨌뜬 서브버전을 쓰든, git을 쓰든 여러 사람과 협업하기 위해서는 원격 서버가 필요하다. Git 서버 매뉴얼에서 설명하는 내용을 따라서 서버를 구축하고 사용하는 법을 살펴보도록 하자.

원격 저장소는 작업 디렉토리(working directory)가 없는 bare 저장소다. 여기서 bare 저장소의 의미는 일반적인 git 프로젝트에서 .git 디렉토리만 있는 저장소라는 뜻이다. 원격 서버를 운영하려면 먼저 원격으로 접속할 프로토콜을 선택해야 한다.

프로토콜

git은 Local, SSH, Git, HTTP 프로토콜을 지원한다. HTTP 프로토콜을 제외한 나머지 방식에서는 모두 서버에 git이 설치되어 있어야 한다.

  • Local
    원격 저장소가 동일한 머신의 다른 디렉토리에 있을 때 사용한다. 즉 팀원이 모두 NFS와 같이 파일 시스템을 공유할 때 사용한다. 결국 쓸데 없을 듯…
  •  Git
    git에 포함된 데몬을 사용하는 방법으로 포트는 9418을 쓴다. 인증 메커니즘이 없으므로, 누구나 프로젝트에 푸시를 할 수 있다. 결국 쓸데 없다.
  •  SSH
    푸쉬를 할 수 있는 유일한 프로토콜이라고 보면 된다. HTTP/S에서도 푸쉬를 하도록 설정할 수 있지만, 잘 사용되지 않는다. 그리고 인증을 할 수 있으므로 보안에 안전하다. 하지만 익명으로는 read가 불가능하다.
  •  HTTP/S
    설정이 간단하다. 하지만 푸시를 설정하기가 까다로우며 거의 사용되지 않는다.

프로토콜을 조합해서 사용해도 되는데, 서버에 푸시를 할 때는 SSH를 사용하고, 익명으로 읽기 권한을 주고자 할 때는 Git 프로토콜을 쓰는 식이다.

서버를 설정하는게 복잡해 보이지만, 실제로도 복잡하다. 매뉴얼 보다가 한숨만 나왔다. Gitosis나 Gitolite를 사용하면 좀 더 간편히 설정할 수 있다고 한다. 현재 일하는 팀에서는 AWS에 Gitlab을 설치해서 사용중이다.

크몽 재능

댓글 남기기