[Git] Repository mirror, lfs를 사용해 100MB가 넘는 깃 리포지토리 미러링하는 법, 저장소 옮기는 법 (with remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.)
gitlab에서 작업하던 repository를 github로 옮기기 위해 세 시간이 넘도록 개고생한 결과를 이 블로그에 기록하고자 한다.
나 같은 사람들이 생기지 않도록^^,,,,
나의 경우 그냥 원래 리포지토리에 100MB가 넘는 파일이 올라가 있었는데 깃허브에는 100MB가 넘는 파일을 올릴 수가 없어서 계속 reject를 당했다. 그 부분에 대해서 중점적으로 다룰 것!!
(remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.)
이 에러가 바로 그 에러다.
순서대로 그대로 따라오세요.
웬만하면 빈 폴더를 하나 준비할 것!
그 폴더 안에서
1. 밑의 파일을 넣어둔다.
(미래에 이 글을 보는 사람들에게: 버전이 너무 구버전일 경우 bfg jar 구글에 검색해서 다운로드하세요)
2. 원본 깃에서 파일을 가져온다.
git clone --mirror 원본 깃 주소
3. 100MB짜리 커밋 내역, 파일을 처리한다.
java -jar bfg-1.14.0.jar --no-blob-protection --strip-blobs-bigger-than 100M 다운 받은 git 폴더명
나 같은 경우 여기서 계속 잘 안됐는데 모든 블로그에는 --strip-blobs-bigger-than 이 옵션만 있고
--no-blob-protection이 없어서 안됐다. 스택오버플로우에 구글링 해서 알게 됐다...
그때 났던 에러: these are your protected commits, and so their contents will NOT be altered:
4. git 폴더 안으로 들어간다.
cd 깃 폴더명
5. 아까 처리한 파일을 정리한다.
git reflog expire --expire=now --all && git gc --prune=now --aggressive
6. 처리 내역을 깃에 반영한다.
git push
7. 깃 원격 저장소 이름을 확인한다.
git remote -v
ex)
origin 깃 주소 (fetch)
origin 깃 주소 (push)
=> origin이 이름
8. 새로 옮길 리포지토리를 등록한다.
git remote add [원격저장소 이름] [옮길 깃 주소] //괄호 없어도 됨
*이 이름은 origin이랑 다름
9. 새로 옮길 깃에 파일을 옮긴다.
git push 아까 적은 원격저장소 이름
이 방법을 찾기 위해 얼마나 많은 시간과 블로그를 참고했는지^^,, 여러분들은 제발 이 블로그를 쉽게 발견해서 빠르게 문제를 해결하기를 빌어요...