gitlab을 사용하다가 github으로 미러링해야 할 일이 생겼다
기존 파일에 100MB가 넘는 파일이 포함되어 있어 다양한 방법을 시도했지만
계속 에러로 인해 미러링이 되지 않았고, 여러 시행착오 끝에 해결했다.
이 방법이 누군가에게 도움이 되길 바라며 작성한다.
여느 때처럼 gitlab에서 github으로 미러링을 진행하고 있었다.
$ git clone --bare [gitlab repo]
$ cd [gitlab 프로젝트 폴더]
$ git push --mirror [github repo]
당연히 100MB가 넘는 mp4 파일이 포함된 프로젝트이기 때문에 위와 같은 에러가 떴다.
늘 하던데로 jarfile을 사용해서 해결을 시도했다.
다시 상위폴더로 이동
$ cd ../
해당 폴더 위치에 BFG Repo-Cleaner
설치
$ ls
[gitlab 프로젝트 폴더].git/ bfg-1.14.0.jar
[gitlab 프로젝트 폴더].git에서 100MB 넘는 것 제거
$ java -jar bfg-1.14.0.jar --strip-blobs-bigger-than 100M [gitlab 프로젝트 폴더].git
그런데 여기서 다음과 같은 Protected commits
에러가 발생했다.
이 protected commits을 포함시켜서 제거해주어야 하기 때문에 jarfile 실행 명령어에 조건을 추가해줬다. > --no-blob-protection
$ java -jar bfg-1.14.0.jar --strip-blobs-bigger-than 100M --no-blob-protection S06P31A308.git
100MB 넘는 파일이 제대로 삭제가 되었다.
마지막으로 다시 push를 해주면 제대로 브랜치, 커밋이 미러링 된다.
$ git push --mirror [github repo]
잔디까지 제대로 옮겨졌는지 확인하면 끝!
https://hongjuzzang.github.io/howto/git_mirror/
https://rtyley.github.io/bfg-repo-cleaner/