Git과 GitLab은 같은 것이 아닙니다.
Git을 사용하기 위해 Gitlab이 필요하지는 않지만, Git을 사용하지 않고는 GitLab을 사용할 수 없습니다.
1. 로컬 Git Repository 설정
Git 리포지토리는 필요할 때 액세스할 수 있는 코드 버전을 저장할 수 있는 가상 저장소입니다. 신규 또는 기존 프로젝트에 대한 Git 리포지토리를 초기화하는 방법입니다.
# Install Git
[root@ansible-center hkjeon]# dnf install -y git
... < 중략 >
perl-Term-Cap-1.17-395.el8.noarch perl-TermReadKey-2.37-7.el8.x86_64
perl-Text-ParseWords-3.30-395.el8.noarch perl-Text-Tabs+Wrap-2013.0523-395.el8.noarch
perl-Time-Local-1:1.280-1.el8.noarch perl-URI-1.73-3.el8.noarch
perl-Unicode-Normalize-1.25-396.el8.x86_64 perl-constant-1.33-396.el8.noarch
perl-interpreter-4:5.26.3-416.el8.x86_64 perl-libnet-3.11-3.el8.noarch
perl-libs-4:5.26.3-416.el8.x86_64 perl-macros-4:5.26.3-416.el8.x86_64
perl-parent-1:0.237-1.el8.noarch perl-podlators-4.11-1.el8.noarch
perl-threads-1:2.21-2.el8.x86_64 perl-threads-shared-1.58-2.el8.x86_64
Complete!
# Local Git Repo 초기화
[root@ansible-center demo-project]# cd /root/hkjeon/
[root@ansible-center hkjeon]# mkdir demo-project
[root@ansible-center hkjeon]# cd demo-project/
[root@ansible-center demo-project]# git init
Initialized empty Git repository in /root/hkjeon/demo-project/.git/
# Git User Info
[root@ansible-center demo-project]# git config --global user.name "hkjeon"
[root@ansible-center demo-project]# git config --global user.email "xxxxxxx@hanmail.net"
[root@ansible-center demo-project]# git config --list
user.name=hkjeon
user.email=xxxxx@hanmail.net
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
# New File 생성
[root@ansible-center demo-project]# cat >> README.adoc <<EOF
> Welcome to Demo-Project
EOF
[root@ansible-center demo-project]# git add README.adoc
# Git status 확인
[root@ansible-center demo-project]# git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: README.adoc
# 변경사항 Commit
[root@ansible-center demo-project]# git commit -m "first commit"
[master (root-commit) 068f639] first commit
1 file changed, 1 insertion(+)
create mode 100644 README.adoc
2. GitLab (Remote) Repository 설정
Gitlab 서버에 로그인하고 새 프로젝트를 만드는 방법입니다.
2.1 Gitlab Login
2.2 Gitlab Repo 생성
- Memu -> Projects -> Create New project
- Create blank project
- project name : demo-project / Public 선택
- Create project
3. Push Content to Remote Repository
로컬 Git 리포지토리에 원격 리포지토리를 추가하고 커밋을 원격 Gitlab 프로젝트에 푸시하는 방법입니다.
- GitLab UI Memu -> Projects -> Your Projects
- demo-project 선택
- clone 버튼 선택
- clone with HTTPS URL 주소 복사
# 원격 repository 추가
[root@ansible-center demo-project]# git remote add origin https://gitlab.com/hkjeon/demo-project.git
[root@ansible-center demo-project]# git remote -v
origin https://gitlab.com/hkjeon/demo-project.git (fetch)
origin https://gitlab.com/hkjeon/demo-project.git (push)
# Push Commit
[root@ansible-center demo-project]# git push -u origin master
Username for 'https://gitlab.com': hkjeon
Password for 'https://hkjeon@gitlab.com':
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 239 bytes | 239.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote:
remote: To create a merge request for master, visit:
remote: https://gitlab.com/hkjeon/demo-project/-/merge_requests/new?merge_request%5Bsource_branch%5D=master
remote:
To https://gitlab.com/hkjeon/demo-project.git
* [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
- GitLab UI Memu -> Projects -> Your Projects
- demo-project 선택
- README.adoc 선택 및 내용 일치 확인
4. Securing Communication between Git and GitLab
git을 사용하여 로컬에서 작업한 다음 변경 사항을 GitLab 원격 저장소에 푸시합니다. git과 GitLab 간의 통신을 보호하기 위해 ssh 프로토콜을 사용할 수 있습니다. SSH 키를 사용하여 GitLab 원격 서버에 인증할 때 매번 사용자 이름과 암호를 제공할 필요가 없습니다.
4.1 SSH Key 복사
[root@ansible-center demo-project]# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCi4OEBmkSd < 중 략 > 8= root@ansible-center
4.2 GitLab에 Public Key 추가
- GitLab UI
- 사용자 Profile 사진 선택
- Preferences -> 왼쪽 SSH Keys 메뉴 선택 -> Key 키 복사 -> Add Key 및 저장
4.3 Remote Repo URL 변경
GitLab에서 ssh 공개 키를 추가한 후 로컬 git 저장소에서 원격 저장소 URL을 ssh로 변경합니다.
- GitLab UI Memu -> Projects -> Your Projects
- demo-project 선택
- clone 버튼 선택
- clone with SSH 주소 복사
[root@ansible-center demo-project]# git remote set-url origin git@gitlab.com:hkjeon/demo-project.git
[root@ansible-center demo-project]# git remote -v
origin git@gitlab.com:hkjeon/demo-project.git (fetch)
origin git@gitlab.com:hkjeon/demo-project.git (push)
4.4 연결 확인
[root@ansible-center demo-project]# cat >> README.adoc <<EOF
> Test Line
> EOF
[root@ansible-center demo-project]# git add README.adoc
[root@ansible-center demo-project]# git commit -m "test"
[master 90d07dd] test
1 file changed, 1 insertion(+)
[root@ansible-center demo-project]# git push origin
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Writing objects: 100% (3/3), 272 bytes | 272.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote:
remote: To create a merge request for master, visit:
remote: https://gitlab.com/hkjeon/demo-project/-/merge_requests/new?merge_request%5Bsource_branch%5D=master
remote:
To gitlab.com:hkjeon/demo-project.git
068f639..90d07dd master -> master
5. New Git Branch
git checkout 명령을 사용하여 다음과 같이 마스터 브랜치에서 새 개발 브랜치를 전환하거나 생성할 수 있습니다.
# 새로운 브런치 추가
[root@ansible-center demo-project]# git checkout -b dev-branch
Switched to a new branch 'dev-branch'
[root@ansible-center demo-project]# git branch
* dev-branch
master
# GitLab에 Git 브런치 Push
[root@ansible-center demo-project]# git push origin dev-branch
Total 0 (delta 0), reused 0 (delta 0)
remote:
remote: To create a merge request for dev-branch, visit:
remote: https://gitlab.com/hkjeon/demo-project/-/merge_requests/new?merge_request%5Bsource_branch%5D=dev-branch
remote:
To gitlab.com:hkjeon/demo-project.git
* [new branch] dev-branch -> dev-branch
- GitLab UI Memu -> Projects -> Your Projects
- demo-project 선택
- Branches 선택
- dev-branch 페이지 선택
6. Create and Merge Pull Request
pull 요청은 원격 브랜치(Gitlab dev-branch 저장소)에 푸시한 변경 사항을 알릴 수 있는 기능입니다. 변경 사항이 마스터 브랜치에 병합되기 전에 변경 사항을 검토할 수 있습니다.
6.1 로컬 리포지토리에 코드 생성 및 커밋
# 로컬 리포지토리에서 코드 생성, 준비 및 커밋
[root@ansible-center demo-project]# git checkout dev-branch
Already on 'dev-branch'
[root@ansible-center demo-project]# cat >> main.yml <<EOF
> ---
> - name: Play for PR
> hosts: localhost
> tasks:
> - name: Welcome message
> debug:
> msg: "PR is merged"
> EOF
[root@ansible-center demo-project]# git add main.yml
[root@ansible-center demo-project]# git commit -m "Add main.yml"
[dev-branch ceca33d] Add main.yml
1 file changed, 7 insertions(+)
create mode 100644 main.yml
# 코드를 원격 저장소에 푸시
[root@ansible-center demo-project]# git push origin dev-branch
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 369 bytes | 369.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote:
remote: To create a merge request for dev-branch, visit:
remote: https://gitlab.com/hkjeon/demo-project/-/merge_requests/new?merge_request%5Bsource_branch%5D=dev-branch
remote:
To gitlab.com:hkjeon/demo-project.git
90d07dd..ceca33d dev-branch -> dev-branch
6.2 Pull Request 생성
- GitLab UI Memu -> Projects -> Your Projects
- demo-project 선택
- branch -> dev-branch 선택
- Create merge request 선택
- Title : Add Main.yml / Merge Option Uncheck - Delete source branch when merge request is accepted / Merge Option Check - Squash commits when merge request is accepted
- Create Merge request 선택
6.3 승인 및 병합
풀 리퀘스트를 생성한 후 특정 사람에게 제안한 변경 사항을 검토하도록 요청할 수 있습니다. 조직 구성원인 경우 특정 팀에 변경 사항을 검토하도록 요청할 수도 있습니다.
- GitLab UI Memu -> Projects -> Your Projects
- demo-project 선택
- Merge requests 선택
- Open 선택 -> Add Main.yml 선택
- Approve 선택
- master branch에 변경사항 Merge 버튼 선택
6.4 master git으로 가져오기
[root@ansible-center demo-project]# git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
[root@ansible-center demo-project]# git pull
[root@ansible-center demo-project]# ls -l
total 8
-rw-r--r--. 1 root root 121 Jul 26 13:04 main.yml
-rw-r--r--. 1 root root 36 Jul 26 12:58 README.adoc
'Linux > RHEL7 & 8' 카테고리의 다른 글
[Linux] vi 또는 vim으로 붙여넣기할 때 주석코드 붙은 이후에 자동으로 주석 될때 (0) | 2021.08.12 |
---|---|
[Linux] 서버 전원버튼 눌렀을때 power off 비활성화방법 (0) | 2021.08.11 |
yum rpm download 방법 (1) | 2021.07.25 |
[RHEL7] Rear를 통한 backup 및 restore (0) | 2021.07.20 |
RHEL7에서 RHEL8로 업그레이드 방법 (leapp) (0) | 2021.07.16 |