GitLab 설치
환경을 최신으로 유지합니다:
# apt -y update # apt -y upgrade |
GitLab에 필요한 패키지를 설치합니다:
# apt -y install curl openssh-server ca-certificates tzdata perl |
GitLab 패키지 리포지토리를 추가합니다. (CE 버전):
우분투 환경에서 테스트하는 경우, .deb
문자가 포함된 스크립트를 사용하여 추가합니다.
# curl -L “https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh” | sudo bash |
GitLab CE (Community Edition)를 설치합니다. 설치 전에 DNS에서 GitLab 서버 IP와 도메인을 연결해 놓아야 합니다.
도메인을 입력하여 명령을 실행합니다:
# EXTERNAL_URL=”http://도메인 주소” apt -y install gitlab-ce |
웹 인터페이스에 접속하기 위해 초기 패스워드를 확인합니다. 아래 패스워드는 24시간 동안 유효합니다:
# cat /etc/gitlab/initial_root_password | grep Password: Password: ********** |
- 참고
패스워드 파일이 없거나 분실하여 패스워드를 재설정할 필요가 있을 때, 아래 명령을 사용합니다:
# gitlab-rake “gitlab:password:reset[root]” Enter password: (신규 패스워드 입력) Confirm password: (신규 패스워드 재입력) Password successfully updated for user with username root. |
웹 브라우저를 이용해 GitLab 웹 인터페이스에 접속합니다:
- URL: http://도메인 주소
- ID: root
- PW: 위에 출력된 패스워드
- 웹페이지 접근이 되지 않을 때
로컬에서 포트가 이미 사용 중일 수 있으므로 포트를 변경하거나, 도메인이 아닌 IP 주소로 접근할 수 있습니다. 설정 파일에서 사용하지 않는 포트를 추가하여 재설정할 수 있습니다.
external_url에 사용하지 않는 포트를 추가합니다:
# external_url ‘http://도메인 주소:8090’ |
# gitlab-ctl reconfigure |
이제 웹페이지 접근이 가능할 것입니다.
처음 로그인 시, 상단에 다음과 같은 경고 메시지가 표시될 수 있습니다:
“가입 제한을 확인합니다. 당신의 GitLab 인스턴스는 누구나 계정을 등록할 수 있도록 설정되어 있습니다.
이는 공개적으로 노출된 GitLab 인스턴스의 보안 위험이 될 수 있습니다. 공용 사용자가 계정 등록을 하지 않을 것으로 예상되는 경우,
신규 가입 기능을 비활성화하는 것이 좋습니다.”
이제 웹 인터페이스에서 다음과 같은 단계를 수행합니다:
-
가입 제한 설정:
- 화면 상단의 경고 메시지에서
[Deactivate]
버튼을 클릭합니다. - 화면이 ‘Sign-up restrictions’ 항목으로 이동합니다.
- Sign-up enabled: 체크를 해제합니다.
[Save changes]
버튼을 눌러 변경 사항을 저장합니다.
- 화면 상단의 경고 메시지에서
패스워드 변경:
- 좌측 상단의 동그란 프로필 이미지를 클릭합니다.
Preferences
를 클릭합니다.- 좌측 메뉴에서
Password
를 선택합니다. - 패스워드를 변경한 후 저장합니다. (변경 후 자동으로 로그아웃되며, 다시 로그인하면 관리자 초기 페이지가 출력됩니다.)
* 참고
1) 설정 파일: `/etc/gitlab/gitlab.rb`
– 설정을 수정한 후 변경 사항을 반영하려면:
# gitlab-ctl reconfigure |
2) GitLab 서비스 재시작 명령:
# gitlab-ctl restart |
프로젝트 생성
root 사용자로 로그인한 경우, 다음 메뉴를 이용할 수 있습니다:
– Create a project
– Create a group
– Add people
– Configure GitLab
이제 Repository를 만들어 웹에서 소스 파일을 생성하거나 업로드할 수 있습니다. 본 매뉴얼에서는 공개 Repository를 생성하고, CLI를 통해 소스 파일을 업로드하고 증분 데이터 업로드하는 과정을 진행하겠습니다.
1. 프로젝트 생성:
– `Create a project` > `Create blank project` 메뉴를 선택합니다.
– 아래 필수 항목만 입력하고 나머지는 기본값으로 둡니다:
– Project name: `sample`
– Project URL & Project slug: `http://도메인 주소/root/sample`
– Visibility Level: `Private`
파일 업로드
로컬 PC에서 Git 설치
Git을 사용하여 로컬 PC에서 파일을 원격 저장소(Repository)로 업로드하려면 먼저 Git 패키지를 설치해야 합니다. 여기서는 Ubuntu 22.04를 기준으로 Git 설치 방법을 설명합니다.
# apt -y install git |
소스 파일이 있는 디렉토리로 이동
파일을 업로드하려면 먼저 작업할 소스 파일이 있는 디렉토리로 이동해야 합니다. 필자는 이미 업로드할 샘플 파일을 sample 디렉토리에 준비해 두었습니다.
# cd /root/sample/ # ls -al |
위 명령어를 사용하여 sample 디렉토리로 이동한 후, 파일 목록을 확인할 수 있습니다.
로컬 Git 저장소 초기화
로컬 Git 저장소를 초기화합니다. 여기서 main 브랜치를 기본 브랜치로 설정합니다.
# git init -b main |
원격 저장소 추가
원격 저장소를 로컬 저장소에 추가합니다. 이 원격 저장소는 origin 이라는 이름으로 추가됩니다.
# git remote add origin http://도메인 주소/root/sample.git |
참고: 원격 저장소 관리
기존 원격 저장소의 상태를 확인하거나 다른 저장소로 변경하고 싶을 때 사용하는 명령어들입니다.
- 연결 상태 확인 명령어: git remote 또는 git remote -v
- 연결 해제 명령어: git remote remove {해제하려는 원격 저장소 이름}
변경 사항을 스테이징 영역에 추가
현재 작업 디렉토리의 모든 변경 사항을 스테이징 영역(Staging Area)에 추가합니다. “.”은 현재 디렉토리의 모든 파일을 의미합니다.
# git add . |
커밋
스테이징 영역에 추가된 변경 사항들을 실제로 저장소에 기록(커밋)합니다. -m
옵션을 사용하여 커밋 메시지를 작성할 수 있습니다. 커밋 메시지는 변경 사항의 의도를 명확하게 나타내도록 작성하는 것이 좋습니다.
# git commit -m “First commit” |
원격 저장소로 푸시
마지막으로, 로컬 저장소의 변경 사항을 원격 저장소로 전송합니다. -u
옵션을 사용하면 로컬 브랜치를 원격 저장소의 브랜치에 연결할 수 있으며, 이후에는 git push
만으로 간단히 푸시할 수 있습니다.
# git push -u origin main |
[에러 발생 시]
Git에서 “Author identity unknown” 오류는 Git이 당신이 누구인지 알 수 없어서 발생합니다. Git은 커밋을 만들 때마다 사용자 정보를 기록하여 나중에 변경사항을 추적할 수 있도록 합니다. 이를 위해 사용자의 이름과 이메일 주소를 설정해야 합니다.
전역 설정
모든 리포지토리에 대해 사용자 정보를 설정하려면 --global
옵션을 사용합니다:
# git config –global user.email “your.email@example.com” |
여기서 your.email@example.com 은 실제 당신의 이메일 주소로 바꿔야 합니다.
# git config –global user.name “Your Name” |
여기서 Your Name 은 실제 당신의 이름으로 바꿔야 합니다.
원격 저장소에 푸시 실패
에러 메시지:
error: src refspec main does not match any
error: failed to push some refs to ‘http://도메인 주소/root/sample.git’
이 메시지는 원격 저장소와 로컬 저장소의 파일이 일치하지 않아 업데이트가 거부된 경우에 발생할 수 있습니다. 특히 처음 푸시하거나 다른 저장소에서 같은 저장소로 푸시할 때 자주 발생합니다.
해결 방법:
원격 파일 가져오기: 원격 저장소의 파일을 로컬로 가져와 합칩니다.
# git pull origin main # git push -u origin main |
다시 푸시 시도:
# git push -u origin main |
증분 파일 업로드
Git은 파일 변경 사항만 추적하고, 새로운 파일이나 수정된 파일만 스테이징하고 업로드합니다. 모든 파일을 다시 업로드할 필요는 없습니다.
파일 추가 및 업로드
파일 추가: 새로운 파일을 추가합니다.
# cp -arp test10.txt test11.txt |
변경 사항 스테이징: 새로운 파일을 포함하여 변경 사항을 스테이징 영역에 추가합니다.
# git add . |
커밋: 새로운 커밋을 생성하여 변경 사항을 저장소에 기록합니다.
# git commit -m “Second commit” |
다시 푸시: 이번에는 -u
옵션 없이 푸시합니다.
# git push origin main |
이 명령은 변경된 파일이나 새로운 파일만 원격 저장소에 업로드하며, 로컬 디스크에서 삭제된 파일이 있을 경우 원격지에서도 삭제하여 동기화합니다.
확인: GitLab 웹페이지에서 새로운 파일이 업로드된 것을 확인할 수 있습니다. 업로드된 파일 목록에서 각 파일의 업로드 시간이 다르다는 점을 통해, 새로운 파일만 업로드되었음을 확인할 수 있습니다.
커밋 변경 및 복원
작업 도중 실수로 로컬 파일을 삭제하거나 잘못 수정한 경우, 이전 커밋 시점으로 돌릴 수 있습니다.
로그 활용
파일 삭제: 복원 테스트를 위해 file11.bin
파일을 삭제합니다.
# rm test11.txt |
해시 확인: 마지막으로 Git 원격 저장소에 업로드했던 커밋 해시를 확인합니다.
# git log |
커밋 복원: 해당 커밋 시점으로 로컬 저장소를 되돌려 삭제된 파일을 복원합니다.
# git reset –hard 901e0321dae84c83d9408dc88db1b6a20dc62aaa |
스태시 활용
작업 중인 변경 사항을 임시로 저장하려면 git stash
명령을 사용합니다. 이는 현재 브랜치에서 변경 사항을 저장하고 이전 커밋 상태로 돌아갈 수 있도록 합니다.
변경 사항 스태시: 현재 변경된 파일들을 스태시에 저장하고, 작업 디렉토리를 이전 커밋 상태로 되돌립니다.
# git stash |
스태시 적용: 필요할 때 저장된 변경 사항을 다시 적용할 수 있습니다.
# git stash apply |
전체 다운로드
전체 Git 소스를 다운로드할 때 사용되는 일반적인 방법입니다. 로컬에 동일한 디렉토리가 있는 경우 다운로드가 되지 않을 수 있습니다.
# git clone http://도메인 주소/root/sample.git |