사용자 도구

사이트 도구


git:gitserver

서버에 Git 설치하기

서버에 Git을 설치해서 공개하는 방법을 알아보자.

Bare저장소

git init --bare study.git

xxxxx 어떤 서버를 설치하더라도 일단 저장소를 Bare 저장소로 만들어야 한다. 다시 말하지만, Bare 저장소는 워킹 디렉토리가 없는 저장소이다. –bare 옵션을 주고 Clone 하면 새로운 Bare 저장소가 만들어진다. Bare 저장소 디렉토리는 관례에 따라 .git 확장자로 끝난다.

$ git clone --bare my_project my_project.git
Cloning into bare repository 'my_project.git'...
done.

이제 my_project.git 디렉토리에는 복사한 Git 디렉토리 데이터만 들어 있다.

아래와 같이 실행한 것과 비슷하다:

$ cp -Rf my_project/.git my_project.git

물론 설정상의 미세한 차이가 있지만, 저장소의 내용만 고려한다면 같다고 볼 수 있다. 워킹 디렉토리가 없는 Git 저장소인 데다가 별도의 디렉토리도 하나 만들었다는 점에서는 같다. xxxxx

서버에 Bare 저장소 넣기

Bare 저장소는 이제 만들었으니까 서버에 넣고 프로토콜을 설정한다. git.example.com`라는 이름의 서버를 하나 준비하자. 그리고 그 서버에 SSH로 접속할 수 있게 만들고 Git 저장소를 `/srv/git 디렉토리에 저장할 것이다. 서버에 /srv/git 디렉토리가 있다고 가정하고 아래와 같이 Bare 저장소를 복사한다.

$ scp -r my_project.git user@git.example.com:/srv/git

이제 다른 사용자들은 SSH로 서버에 접근해서 저장소를 Clone 할 수 있다. 사용자는 /srv/git 디렉토리에 읽기 권한이 있어야 한다.

$ git clone user@git.example.com:/srv/git/my_project.git

이 서버에 SSH로 접근할 수 있는 사용자가 /srv/git/my_project.git 디렉토리에 쓰기 권한까지 가지고 있으면 바로 Push 할 수 있다.

git init 명령에 –shared 옵션을 추가하면 Git은 자동으로 그룹 쓰기 권한을 추가한다.

$ ssh user@git.example.com
$ cd /srv/git/my_project.git
$ git init --bare --shared

Git 저장소를 만드는 것이 얼마나 쉬운지 살펴보았다. Bare 저장소를 만들어 SSH로 접근할 수 있는 서버에 올리면 동료와 함께 일할 준비가 끝난다.

그러니까 Git 서버를 구축하는데 사람이 할 일은 정말 별로 없다. SSH로 접속할 수 있도록 서버에 계정을 만들고 Bare 저장소를 사람들이 읽고 쓸 수 있는 곳에 넣어 두기만 하면 된다. 이제 준비됐다. 더 필요한 것은 없다.

서버 사용시 고려사항

다음 절에서는 좀 더 정교하게 설정하는 법을 살펴볼 것이다. 사용자에게 계정을 만들어 주는 법, 저장소를 읽고 쓸 수 있게 하는 법, 웹 UI를 설정하는 법 등은 여기에서 설명하지 않는다. 동료와 함께 개발할 때 꼭 필요한 것은 SSH 서버와 Bare 저장소뿐이라는 것만은 꼭 기억하자.

초 간단 뚝딱 만약 창업을 준비하고 있거나 회사에서 Git을 막 도입하려고 할 때는 개발자의 수가 많지 않아서 설정할 게 별로 없다. 사용자를 관리하는 것이 Git 서버를 설정할 때 가장 골치 아픈 것 중 하나다. 사람이 많으면 어떤 사용자는 읽기만 가능하게 하고 어떤 사용자는 읽고 쓰기 둘 다 가능하게 해야 한다. 이렇게 설정하는 것은 조금 더 까다롭다.

SSH 접속 만약 모든 개발자가 SSH로 접속할 수 있는 서버가 있으면 너무 쉽게 저장소를 만들 수 있다. 앞서 말했듯이 정말 할 일이 별로 없다. 그리고 저장소의 권한을 꼼꼼하게 관리해야 하면 운영체제의 파일시스템 권한관리를 이용할 수 있다.

동료가 저장소에 쓰기 접근을 해야 하는 데 아직 SSH로 접속할 수 있는 서버가 없으면 하나 마련해야 한다. 아마 당신에게 서버가 하나 있다면 그 서버에는 이미 SSH 서버가 설치되어 있고 지금도 SSH로 접속하고 있을 것이다.

팀원들이 접속할 수 있도록 하는 방법은 몇 가지가 있다. 첫째로 모두에게 계정을 만들어 주는 방법이 있다. 이 방법이 제일 단순하지만 다소 귀찮다. 팀원마다 `adduser`를 실행시키고 임시 암호를 부여해야 하기 때문에 보통 이 방법을 쓰고 싶어 하지 않는다.

둘째로 서버마다 git’이라는 계정을 하나씩 만드는 방법이 있다. 쓰기 권한이 필요한 사용자의 SSH 공개키를 모두 모아서 'git 계정의 ~/.ssh/authorized_keys 파일에 모든 키를 입력한다. 그러면 모두 git 계정으로 그 서버에 접속할 수 있다. 이 git 계정은 커밋 데이터에는 아무런 영향을 끼치지 않는다. 다시 말해서 접속하는 데 사용한 SSH 계정과 커밋에 저장되는 사용자는 아무 상관없다.

SSH 서버 인증을 LDAP 서버를 이용할 수도 있다. 이미 사용하고 있는 중앙집중식 인증 소스가 있으면 해당 인증을 이용하여 SSH 서버에 인증하도록 할 수도 있다. SSH 인증 메커니즘 중 아무거나 하나 이용할 수 있으면 사용자는 그 서버에 접근할 수 있다.

자료출처

https://git-scm.com/book/ko/v2/Git-서버-서버에-Git-설치하기

깃(git) 서버 만들기

깃헙만 사용하지말고 깃서버도 만들어서 사용해보자.

서버세팅

깃 설치:

$ sudo apt-get install git

깃 서버용 계정 추가:

$ sudo adduser git

깃 프로토콜을 ssh로 할거니깐 로컬의 ssh 공개키를 서버에 추가:

$ cat "공개키 문자열" >> /home/git/.ssh/authorized_keys

프로젝트 생성

홈 폴더에 프로젝트 폴더 생성 및 저장소 생성

$ mkdir hello
$ cd hello
$ git init --bare --shared

클론

로컬 컴퓨터에서 hello 프로젝트를 클론:

$ git clone git@remote.com:hello

자료출처

http://blog.jeonghwan.net/깃git-서버-만들기/

git remote HEAD 변경

clone 해온 remote 브랜치의 HEAD를 변경하고 싶을 때, 예를 들면, remote 브랜치 일부만 남기고 싶을 때, HEAD가 지울 브랜치를 가리킬 경우, 다음과 같이 하여 remote의 HEAD(즉, origin/HEAD)를 바꿀 수 있다.

git remote set-head origin <remote branch name>
git/gitserver.txt · 마지막으로 수정됨: 2025/04/15 10:05 저자 127.0.0.1