GitLab to GitHub mirroring

Minji·2023년 2월 26일
1

GitHub

목록 보기
2/2

GitLab에서 작업을 하다가 GitHub으로 저장소를 옮기고 싶을 때 mirroring을 사용한다.

GitLab -> GitHub으로 미러링하면...

  • 잔디가 옮겨서 심어진다.
  • Issue나 PR은 안 옮겨진다.

어떻게 옮기는가

  1. GitLab의 repository를 clone한다.
  2. --mirror를 사용해서 미러링한다.
git push --mirror https://github.com/mjseok/SHabit.git

Error발생

문제

100메가가 넘는 파일이 생겨서 mirroring이 불가함

원인

GitHub에 올리는 파일 하나당 100MB의 제한이 있다.

해결방법

  1. 옮길 저장소를 아래와 같은 방법으로 clone한다(bare clone)
git clone --mirror 옮길 저장소

예시)

git clone --mirror https://github.com/mjseok/SHabit.git
  1. 필요한 GLF랑 BFG Repo Cleaner 설치
  1. BFG Repo Cleaner에서 설치한 bfg-버전정보.jar파일을 git폴더 바로 상위 폴더로 옮긴다.(아래 처럼)
  2. 100M보다 큰 파일들을 커밋이력에서 지워준다.
java -jar bfg-1.14.0.jar --strip-blobs-bigger-than 100M [bare clone한 저장소 이름]

예시)

java -jar bfg-1.14.0.jar --strip-blobs-bigger-than 100M SHabit.git

위처럼 해주면, 100M가 넘는 파일들을 커밋에서 삭제해준다.
5. GitHub으로 옮길 저장소 위치로 이동한다.

cd [bare clone한 저장소 이름]

예시)

cd SHabit.git
  1. 실제로 원하지 않는 데이터를 삭제하는 명령어 git-gc를 사용해서 변경사항을 반영합니다.
git reflog expire --expire=now --all && git gc --prune=now --aggressive
  • BFG로는 커밋,브랜치,태그는 업데이트 하지만, 실제 파일이 삭제되거나 변경되지는 않는다. 로컬에서 원하지 않는 데이터를 삭제하려면 위의 명령어를 통해 적용해야 합니다.
  1. 옮길 저장소로 push합니다.
git push --mirror <git 저장소>

참고

profile
매일매일 성장하기 : )

0개의 댓글