프로젝트를 하다보면 git계정을 여러개 사용해야 할 때도 있다.

나같은 경우에는 무료 SaaS Gitlab을 사용할 건데, 용량이 5GiB로 작기도 하고
회사용, 개인용 구분하고 싶어서 두개 계정을 분리했다.

gitlab을 사용한 이유는 private 프로젝트를 만들기 위해서!

기본적으로 github는 private 프로젝트를 만들 수 있는 수가 제한되어 있다.

 

회사용 - 업무 KPI용 실습프로젝트 (gitlab-A계정)

개인용 - 개인 토이프로젝트 (gitlab-B계정)

개인용 - 알고리즘, TIL, 공부내용 (github)

 

이럴 때 위의 두 개가 동일한 gitlab.com 주소를 사용하게 된다.
각각 다른 아이디로 사용하기 때문에 remote 할 때 각 계정을 구분해주어야 한다.

bitbucket, github도 같은 경우라면 동일하다.

git을 이용하기 때문에 bitbucket에 있는 git정보를 gitlab 으로 복사할 수도 있고

gitlab코드를 github로도 복사할 수 있다.

 

 

우선, ssh key를 계정별로 각각 발급한 후 설정한다.
ssh key 발급, gitlab에 연동은 정보가 많으므로 google에서 찾아서 한다.

일단 각 ssh key를 계정에 연동했다면 이제 ssh config 설정을 해줘야 한다.

 

 

vi ~/.ssh/config

 

각 계정 별 정보를 추가한다.

# 계정A 정보 설정
Host 계정A.gitlab.com
Hostname gitlab.com
PreferredAuthentications publickey
IdentityFile 생성한 ssh 파일경로!! 예시는 아래 참고


# 계정B 정보 설정
Host 계정B.gitlab.com
Hostname gitlab.com
PreferredAuthentications publickey
IdentityFile /home/yunji/.ssh/id_rsa_gitlab.pub

 

저장!!

각 계정에 설정한 ssh key 와 해당 키파일의 위치를 설정해준다. 위처럼!!

그럼 이제 계속 설정을 바꾸지 않고도 host만 변경해서 요청하면 각 계정의 gitlab에 정상적으로 연결된다.

 

 

특정 프로젝트가 있다고 가정하자. 얘는 A 계정 git과 연동되어 있었다.

근데, 얘를 B 계정으로 동일한 코드를 그대로 복사하고 싶을 때가 있다.

이때 특정 branch와 그 history 까지 모두 함께 복사하려면 어떻게 해야할까? 아주 간단하다.

 

 

새로운 B git 계정으로 remote를 추가한다. 

// 이때!! git@gitlab.com이 아님을 유의하자! 특정 계정의 gitlab으로 올릴 것이므로
// 아까 config에 설정한대로 계정B.gitlab을 해준다.
// 기존에 origin으로 설정한 remote가 있으므로, 겹치지 않도록 이름은 바꾼다. 아래예시는 origin2

git remote add origin2 git@계정B.gitlab.com:그룹/프로젝트명.git


//그런다음 이제 push 해주면 끝!
git push origin2

//upstream 설정안한 경우 아래처럼 push 후 끝!
git push --set-upstream origin2 master

 

그룹은 gitlab.com 에서 생성해줄 수 있다.

나중에 사용안할 remote의 경우 아래처럼 제거해 줄 수도있다.

git remote remove origin

위처럼 하면 프로젝트를 gitlab.com에서 생성하지 않아도, 자동 생성되고 해당 branch의 history 정보도 복사된다.

gitlab 뿐만 아니라, git 모듈을 사용하는 모든 프로젝트에서 가능하니 활용해서 사용하도록 한다.

 

 

참고

https://docs.gitlab.com/ee/user/ssh.html#generate-an-ssh-key-pair

 

Use SSH keys to communicate with GitLab | GitLab

Documentation for GitLab Community Edition, GitLab Enterprise Edition, Omnibus GitLab, and GitLab Runner.

docs.gitlab.com

 

+ Recent posts