Fall in IT.

Git 저장소 옮기기 본문

기타

Git 저장소 옮기기

D.Y 2019. 4. 18. 10:12

오늘은 Onpremise 환경으로 사용하던 Gitlab 저장소를 Cloud 환경의 Github 저장소로 이전해보려고 합니다.

목적
Onpremise 환경의 Gitlab서버를 Cloud 환경의 Github 저장소로 이전한다.

요구사항
이전 commit 이력(history)이 모두 이전되어야 한다.
Git 명령어를 사용하여 이전한다.

구축방법
1. Git 명령어 중 git clone --mirror 옵션을 사용해서 원본 저장소의 모든 기록을 clone(복사) 한다.
2. 이동할 원격 저장소의 경로를 지정한다.
3. 지정한 원격 저장소로 모든 데이터를 push 한다.

# 1. 원본 저장소의 모든 이력(history) 복사
$ git clone --mirror [원본 저장소 경로]

# 2. clone한 디렉터리 안으로 이동
$ cd [원본 저장소 이름].git 

# 3. 이동할 원격 저장소 경로 지정
$ git remote set-url --push origin [이동할 원격 저장소 경로] 

# 4. 원격 저장소로 push
$ git push --mirror 


문제
Gitlab과 달리 Github은 기본적으로 100MB 이상의 파일을 올릴 수 없습니다. 
따라서, commit 이력중에 100MB 이상의 파일을 업로드한적이 있거나 현재 소스에 100MB 이상의 파일이 올라가 있는 경우 Github 원격 저장소에 push 하는 과정에서 Error가 발생할 수 있습니다.

이때는 BFG Repo-Cleaner를 적용하여 해결할 수 있습니다.
원리는 100MB 이상의 파일이 올라간 Commit 이력을 삭제해주는 방식입니다. 

적용방법

# 1. https://rtyley.github.io/bfg-repo-cleaner 링크에서 jar 파일을 다운로드 받습니다.

# 2. 원본저장소를 clone한 디렉터리의 경로에서 아래 명령어를 사용하여 실행합니다.
$ java -jar bfg_x.x.x.jar --strip-blobs-bigger-than 100M # bfg의 버전과 jar 파일의 경로에 주의해주세요.
$ git push --mirror # 다시 원격 저장소로 push


참조

https://rtyley.github.io/bfg-repo-cleaner/
https://medium.com/@stargt/github%EC%97%90-100mb-%EC%9D%B4%EC%83%81%EC%9D%98-%ED%8C%8C%EC%9D%BC%EC%9D%84-%EC%98%AC%EB%A6%AC%EB%8A%94-%EB%B0%A9%EB%B2%95-9d9e6e3b94ef
https://jame0313.github.io/2018/10/14/move-git-repo/

Comments