Ubuntu 22.04 에서 git server를 만들어 보겠습니다.
# Ubuntu 서버에 git 설치하기
# apt 업데이트
sudo apt-get update
# git 설치
sudo apt-get install -y git
# 설치확인
git --version
# git-shell 경로 확인
which git-shell
# 결과 : /usr/bin/git-shell
# 아래 명령어로 파일을 열어 /usr/bin/git-shell 경로가 없으면 추가
sudo vi /etc/shells
# git 관리용 사용자 만들기
# git 사용자 추가
sudo adduser git
# SSH 디렉토리, 인증 파일 만들기
SSH로 접속해 git-shell 명령어를 사용하기 위해
사용자 git 으로 SSH 디렉토리를 생성하고 권한을 설정 합니다.
# 사용자 전환
sudo su git
# git 홈 디렉토리 이동
cd
# 디렉토리 생성
mkdir ~/.ssh
chmod 700 ~/.ssh
SSH 디렉터리 내에 인증된 키파일을 생성하고 권한을 설정합니다.
# 인증키 파일 생성
touch ~/.ssh/authorized_keys
# 권한 설정
chmod 600 ~/.ssh/authorized_keys
# git 서버용 저장소 생성
git 서버 개별 저장소 디렉터리 생성
# 폴더생성 test-repo.git
mkdir /home/git/test-repo.git
# 폴더로 이동
cd test-repo.git
# git repo 초기화
git init --bare
디렉토리 및 하위 모든 파일 및 디렉토리의 소유자를 git으로, 그룹을 git으로 재귀적으로 변경합니다.
# 재귀적으로 디렉토리 및 파일 권한 변경
cd /home/git/
chown -R git:git test-repo.git
# 다른 사용자로 로컬 시스템에서 git repository 접근
git사용자가 아닌 다른 일반 사용자로 로그인.
SSH key pairs 생성
ssh-keygen -t rsa
공개키 Ununtu의 git 사용자 ~/.ssh 디렉토리에 복사
# ssh-copy-id -i [공개키 위치] git@[ip-address]
ssh-copy-id -i ~/.ssh/id_rsa.pub git@192.168.111.100
# 오류발생 시 키스캔
ssh-keyscan -p 22 192.168.111.100 >> ~/.ssh/known_hosts
프로젝트 디렉터리를 만들고 깃 저장소 초기화를 진행합니다.
mkdir GitProject
cd GitProject
git init
git 원격 저장소에 현재 디렉토리 추가하기
git remote add origin git@192.168.111.100:/home/git/test-repo.git
테스트용 파일을 생성하고 git 명령어를 수행해 봅니다.
touch index.html # 파일생성
git add * # 모든파일 추가
git config user.email "ubuntu@test.com" # 사용자 이메일 설정
git config user.name "ubuntu" # 사용자 이름 설정
git commit -m "커밋테스트" # 커밋
git 원격 저장소로 PUSH 하기
git push --set-upstream origin master
# git 기본 명령어
git status # 현재 상태 확인
git log # 전체 로그 확인
git init # git 저장소 생성하기
git clonw https:~~~ # 저장소 복제 및 다운로드
#저장소에 코드 추가
git add
git add *
git add -A # 커밋에 파일 변경 사항 모두 포함
git commit -m "commit messge 작성" # 커밋 생성
git push origin master # 변경 사항 원격 서버 업로드 (push)
git pull # 원격 저장소변경 내용 현재 디렉토리로 가져오기 (pull)
git diff [branch name] [another branch name] # merge 전에 바뀐 내용 비교
# 다른 컴퓨터에서 Visual Studio Code 에 git-server repository 연동하기
테스트 프로젝트 생성
SOURCE CONTROL 메뉴 - Initialize Repository - Manage Unsafe Repositories - 해당폴더 클릭
프로젝트 폴더 확인하면 .git / . gitignore 생성 확인
git 설치 후 name / email 설정하지 않고 Commit 하면 경고창이 뜬다
# 터미널에서 Git Bash 선택하고 아래 명령어로 name, email 설정
git config --global user.email "email@email.com"
git config --global user.name "name"
SSH 키를 생성하고 git server 에 등록
ssh-keygen -t rsa
# 호스트 키스캔
ssh-keyscan -p 22 [host-ip-address] >> ~/.ssh/known_hosts
# ssh-copy-id -i [공개키 위치] git@[ip-address] 공개키 전송
ssh-copy-id -i /c/Users/[user-name]/.ssh/id_rsa.pub git@[host-ip-address]
git server 에서 키입력 확인
git server 에서 연동할 폴더 생성
# 폴더생성 test-repo.git
mkdir /home/git/git-repository/testgit.git
# 폴더로 이동
cd /home/git/git-repository/testgit.git
# git repo 초기화
git init --bare
# 재귀적으로 디렉토리 및 파일 권한 변경
chown -R git:git /home/git/git-repository/testgit.git
또는 Client Git Bash 에서 SSH 접속하여 작업 진행
ssh git@[ip-address]
준비된 git server 폴더에 연동하기
git remote add origin git@[ip address]:/[경로]
git remote -v #원격지 설정 확인
git push --set-upstream origin main # 원격지 브렌치 연동
# 로컬 저장소에 브렌치와 원격지에 추가하려는 브렌치명 일치시켜야함 ex) master -> origin master
# 현재 브렌치 확인
git branch
# 필요시 브렌치 생성
git checkout -b [branch-name]
이제 VS Code UI 나 확장도구도 연동되어 편하게 사용 가능
추가보안설정! 여러 사용자들이 ssh 를 통해 접속하기 때문에 서버에서 git 계정의 bash 사용 권한을 제한해야 합니다!
# 설정파일 열기
sudo vi /etc/passwd
# git 계정의 설정을 변경합니다. 맨 뒷 부분만 바꿔주면 됩니다.
# 변경 전 >> 후
git ~~~~~~~ /bin/bash >> git ~~~~~~~ /bin/git-shell
이후 저장소 추가시 root 권한으로 폴더를 만들고 폴더소유권한을 git 으로 설정해 주면 됩니다.
'Linux' 카테고리의 다른 글
SVN 권한 설정 ubuntu 22.04 (apache mod dav svn) (0) | 2023.12.01 |
---|---|
SVN 서버 만들기 - Ubuntu 22.04 (4) | 2023.11.21 |
Samba 서버 구축 ubuntu 22.04 - windows 클라이언트 연결 (0) | 2023.11.07 |
FTP 서버 구축 ubuntu 22.04 - Window 에서 접속하기 (0) | 2023.11.06 |
APM 설치 ubuntu 22.04 (apache2, php8.1-common, mysql-server) (0) | 2023.11.06 |