Every Step Matters

[Git] GitLab에서 GitHub로 프로젝트 이동하기, 전체 브랜치 이동하기, 특정 브랜치만 이동하기 (커밋 내역도 그대로!) 본문

Git

[Git] GitLab에서 GitHub로 프로젝트 이동하기, 전체 브랜치 이동하기, 특정 브랜치만 이동하기 (커밋 내역도 그대로!)

imnyoung 2025. 11. 29. 22:16

GitLab에서 GitHub로 프로젝트를 이동시켜야 하는 일이 생겼다. 

처음에는 프로젝트를 이동시킬 때 내 커밋 내용들이 다 날아가는 게 아닐지 걱정했지만, 찾아보니 GitLab에서의 커밋 히스토리도 다 함께 이동시킬 수 있는 방법이 있었고 아주아주 간단했다.

 

1. GitHub 레포지토리 만들기

깃허브 레포지토리를 만든다. private/public은 원하는대로 설정한다. Readme도 GitLab 프로젝트 루트에 있는 Readme 파일을 보여주고 싶기 때문에 처음에 따로 추가하지 않았다.

README 파일 없이 레포지토리를 생성하면 아래와 같이 나타난다.

 

2. GitLab에서 원하는 레포지토리 로컬에 Clone하기

GitLab에서 원하는 레포지토리를 로컬로 가져온다. 

 

3. GitHub로 미러링하기

로컬 폴더 경로에서 다음 명령어를 입력한다.

git push --mirror [생성한 깃허브 레포지토리 주소]

미러링 진행중

참고) 만약 특정 브랜치만 이동시키고 싶다면? (커밋 내역 유지)

만약 브랜치 정리가 완벽하게 안된 상태라서 특정 브랜치만 이동시키고 싶을 수도 있다. 예를 들어 dev 브랜치만 이동시키고 싶다고 하자. 

(1) 먼저 GitLab 원격의 dev 브랜치를 기반으로 로컬 dev 생성해야 한다.

git checkout -b dev origin/dev

(2) 그 로컬 dev를 GitHub에 push 한다.

아래처럼 --mirror 대신 브랜치명을 명시하면 된다. 대신 순서에 주의하자. 이때도 dev의 커밋 히스토리는 그대로 업로드된다!

git push [생성한 깃허브 레포지토리 주소] dev

 

--mirror : 모든 브랜치 + 모든 히스토리 전체 포함
git push [생성한 깃허브 레포지토리 주소 master dev : master, dev 히스토리만 그대로 업로드

 

4. 미러링 결과 확인하기

아래처럼 미러링이 잘 된 것을 확인할 수 있다.

이때 GitLab의 default branch가 master이기 때문에 아래에서도 기본 브랜치가 master 브랜치로 설정이 되었다.

 

 


Reference

https://angelplayer.tistory.com/480