사용자 도구

사이트 도구


git:gitserver

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
git:gitserver [2023/01/13 15:58] – [Bare저장소] taekgugit:gitserver [2025/04/15 10:05] (현재) – 바깥 편집 127.0.0.1
줄 1: 줄 1:
 +====== 서버에 Git 설치하기 ======
 +서버에 Git을 설치해서 공개하는 방법을 알아보자.
 +==== Bare저장소 ====
 +<code bash>
 +git init --bare study.git
 +</code>
 +
 +**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)를 바꿀 수 있다.
 +<code bash>
 +git remote set-head origin <remote branch name>
 +</code>