GitLab을 통해서 작업한 파일을 GitHub로 이동하고 싶은 경우가 있을 수 있습니다.
일반적으로 GitLab의 파일을 로컬에 clone 받은 뒤, 그것을 그대로 GitHub에 올리는 방식을 생각해볼 수 있으나, GitLab에서 작성한 commit 내용 등이 모두 제거된다는 문제가 있습니다.
이런 경우 미러링(Mirroring)을 사용한다면 commit 내용까지 모두 Github로 옮길 수 있습니다.
https://github.com/settings/repositories
우선 설정에서 repository 생성 시 기본 branch명을 변경해주어야 합니다.
GItLab는 default branch가 master이지만 GitHub는 main이기 때문에 변경이 없으면 에러가 발생할 수 있습니다.
위 링크를 통해서 repository setting으로 들어가 Repository default branch명을 master로 변경 후 Update를 눌러줍니다.
다음으로 GitHub의 새로운 Repository를 생성합니다.
이때 리포지토리는 public, private 어떤 것을 사용하여도 무방합니다.
다음으로 GitLab에서는 보호되고 있는 브랜치가 있는지 여부를 확인해야 합니다.
Settings - Repository - Protected branches에 들어갔을 때 만약 위와 같이 나온다면 별도로 보호되고 있는 브랜치가 없다는 뜻입니다.
만약 branch에 보호가 적용되어 있다면 우측에 생기는 Unprotect 버튼을 클릭하여 해제해줍니다.
미러링을 진행할 원본 리포지토리(GitLab Repository)를 PC에 clone해 줍니다.
clone이 완료되면 [git push --mirror 미러링할_깃허브_주소]를 입력하여 줍니다.
만약 미러링 도중 위와 같은 에러가 뜨고 정상적으로 미러링이 되지 않는다면 100MB 이상의 대용량 파일이 있으므로 올릴 수 없다는 뜻입니다.
이떄는 BFG를 사용하여 해결할 수 있습니다.
https://rtyley.github.io/bfg-repo-cleaner/
위 사이트로 들어가셔서 파일을 다운로드 받아줍니다.
참고로 해당 파일은 jar 파일을 사용해야하므로 JDK가 PC에 설치되어 있어야 합니다.
https://angelplayer.tistory.com/434
상단의 링크에 JDK 설치 방법이 나와 있으니 참고해주시면 됩니다.
java -jar /c/git-ssafy/bfg-1.14.0.jar --convert-to-git-lfs '*.zip'
git reflog expire --expire=now --all && git gc --prune=now --aggressive
위와 같은 두 줄의 명령을 입력해야하는데 아래 줄은 그대로 이용하시면 됩니다.
첫 번쨰 줄의 경우
1) 앞서 다운받은 bfg.jar 파일의 경로 지정하기
2) 파일 크기가 100MB 초과하는 확장자 지정하기
입니다.
참고로 여러 확장자가 100MB를 초과하는 경우 위에 두 줄을 확장자를 변경해가면서 여러 번 입력하시면 됩니다.
GitHub에 들어가면 GitLab에서 작성한 코드들이 그대로 미러링 된 것을 확인할 수 있으며, commit 내역도 함께 유지되어 있는 것을 확인할 수 있습니다.
[Git] GitLab(Github) Git Flow 프로젝트 적용 예제 (2) | 2023.07.27 |
---|---|
[Git] Git Flow 개념 정리 & Rule (1) | 2023.07.26 |
[Github] Github 저장소(Repository) 생성 & 초기 설정 (0) | 2021.10.31 |
[GitHub] 최근 commit 내용 수정 하기 (0) | 2021.08.10 |