개발자의 코드 저장소는 항상 서버에 호스팅해야 안전하며, 사용하기 편리합니다.
오늘은 Git 서버에 대해 이야기해 보겠습니다.

1. 코드 호스팅 서비스
일반적으로는 Git 서버를 스스로 구축하는 것은 권장되지 않으며, 기존의 서비스를 사용하는 것이 좋습니다. 이들은 대부분 무료입니다.
이 중에서 마지막 Gitee는 국내 서비스인 반면, 나머지는 모두 해외 서비스입니다.
이러한 외부 서비스에 대해서는 더 자세히 설명하지 않겠습니다. 본 글의 중점은 이들에 없으며, 자신만의 Git 서버를 구축해야 할 경우 어떻게 해야 하는지에 대해 이야기하고자 합니다.
2. Git 서버 소프트웨어
자신만의 Git 서버를 구축하는 이유는 외부 네트워크에 접근하기 불편하거나 코드를 다른 사람의 서버에 두고 싶지 않거나, 일부 맞춤화된 요구사항이 있기 때문일 수 있습니다.
이런 경우, 오픈 소스 Git 서버 소프트웨어를 선택할 수 있습니다.
이러한 소프트웨어 중에서 Gogs의 설치는 가장 간단하지만, 기능은 상대적으로 약합니다. 기능이 더 강력한 소프트웨어일수록 설치가 더 복잡해집니다.
만약 웹 인터페이스나 다른 기능을 신경 쓰지 않고 코드를 원격으로 보관할 뿐이라면, 위에 언급된 소프트웨어를 설치할 필요 없이 한 줄의 명령어로 충분합니다.
3. Git 저장소의 SSH 전송
Git을 잘 알고 계신 분들은 Git이 기본적으로 SSH와 HTTP/HTTPS 두 가지 전송 프로토콜을 지원한다는 것을 알고 있을 것입니다.
서버는 일반적으로 SSH를 기본적으로 탑재하고 있어, 우리는 아무것도 설치하지 않고 SSH만을 통해 저장소를 원격 서버에 푸시할 수 있습니다.
따라서 한 줄의 명령어로 충분합니다. 원격 서버에서 동일한 이름의 Git 저장소를 생성하면 서버 설정이 완료됩니다.
$ git init --bare [仓库名].git
위 명령어에서 각 부분의 의미는 다음과 같습니다.
(1) git init : Git 저장소를 초기화합니다.
(2)--bare:새로운 저장소는 작업 디렉토리가 필요 없으며, Git 데이터 디렉토리만 생성합니다.
(3)[仓库名].git:저장소 이름을 지정합니다. 예를 들어, 저장소 이름이 example이라면, example.git이라는 이름의 Git 데이터 디렉토리를 생성해야 합니다.
이 명령을 실행한 후, 가장 간단한 Git 서버가 탄생합니다. 이후, SSH를 통해 로컬 코드를 이 원격 Git 저장소로 푸시할 수 있습니다.
네、操作 데모
이제 전체操作 과정을 데모해 보겠습니다.
操作은 두 부분으로 나뉩니다. 먼저 원격 서버에서操作하고, 그 다음 로컬 컴퓨터에서操作합니다.
4.1 원격 서버操作
아래의 작업은 원격 서버에서 완료되며, 이미 SSH로 로그인했다고 가정합니다. SSH에 익숙하지 않은 분들은 참고하여 이 《SSH 입문》 를 보세요.
원격 서버에 로그인하는 목적은 주로 특별한 사용자를 새로 만들고, 모든 Git 작업은 해당 사용자를 통해 완료되도록 하는 것입니다. 이 단계는 실제로 필요하지 않지만, 이렇게 하면 나중에 작업이 더 유연해집니다(예: 리포지토리를 여러 사람과 공유할 수 있습니다).
$ sudo mkdir /home/git $ sudo useradd git $ sudo mkdir -m 700 /home/git/.ssh $ sudo cp ~/.ssh/authorized_keys /home/git/.ssh/
위 명령의 의미는 다음과 같습니다.
(1) 새로운 사용자의 홈 디렉토리를 만듭니다./home/git.
(2) 새로운 사용자를 만들며, 사용자 이름은 git 입니다.
. /home/git/.ssh (3) 새로운 사용자의 SSH 디렉토리를 만듭니다.
(4) 현재 사용자의 공개키를 git 사용자에게 복사하여 키 로그인을 위해, 자세한 설명은 《SSH 키 로그인》를 참조하세요.
만약 비밀번호로만 로그인하고 키 로그인을 사용하지 않는다면, 위의 세 번째 단계와 네 번째 단계는 필요하지 않지만, git 사용자에게 비밀번호를 설정해야 합니다. 명령은 다음과 같습니다.
$ sudo passwd git
4.2 로컬 컴퓨터 작업
이후의 작업은 모두 로컬 컴퓨터에서 완료됩니다.
이전 소절의 원격 서버의 IP 주소는 192.168.1.25이며, 로컬 Git 저장소 이름은 example입니다.
$ ssh [email protected] git init --bare example.git
위 명령어에서, ssh [email protected]은git 사용자의 권한으로 원격 서버에 로그인합니다. 뒤따르는 부분은 SSH의 문법으로, 로그인 후 원격 서버에서 실행되는 명령을 나타내며, 즉 원격 Git 데이터 디렉토리를 새로 만듭니다.example.git.
이 명령이 실행되면 Git 서버가 생기고, 그 다음에 코드를 푸시할 수 있습니다.
$ cd example $ git remote add myServer [email protected]:example.git $ git push myServer master
위의 명령은 먼저 로컬 저장소로 들어가 원격 서버에 별칭을 추가한 다음 코드를 푸시합니다.
5. 다른 작업 방법
위의 예제는 git init --bare 명령을 사용하여 원격 서버에 Git 데이터 디렉토리를 새로 만듭니다. 사실, Git 데이터 디렉토리는 일반 디렉토리이므로, 로컬 컴퓨터에서 직접 복사해도 됩니다.
$ scp -r example/.git [email protected]:/home/git/example.git
위의 명령은 scp 도구를 사용하여 로컬example 저장소 내의 .git 하위 디렉토리를 원격 서버의 디렉토리 example.git로 복사하면 Git 서버를 설정할 수도 있습니다.
6. 참고 링크
(끝)












