GitHub, GitLab 등 서로 옮기기도 가능
일반적인 옮기기
- Bare 클론
1
2
| git clone --bare 해당깃링크
cd 클론된 깃 폴더
|
- 옮길 리포지토리에 푸시
1
| git push --mirror 옮길 리포지토리 깃 링크
|
100MB 이상의 파일이 존재할경우 (Git LFS Storage 사용. 비과금시 1GB제한)
- https://git-lfs.github.com/ 와 https://rtyley.github.io/bfg-repo-cleaner/ 사이트에 들어가서 다운로드 하기.
- 복사하고자 하는 저장소(gitlab)의 clone을 생성합니다.
1
2
| git clone --mirror 해당깃링크
cd 클론된 깃 폴더
|
- 커밋 히스토리 내에서 large file을 찾아 트랙킹 합니다. “*.{zip,jar,mp4}” 중괄호 내의 파일은 트래킹을 할 파일 확장자 목록입니다.(이 확장자가 아닌 파일이 100mb를 넘으면 추가 작성)
1
| git filter-branch --tree-filter 'git lfs track "*.{zip,jar,mp4}"' -- --all
|
- BFG를 이용하여 해당 파일들을 git lfs로 변경합니다. (bfg-1.14.0.jar 파일 다운로드 한 경로 지정.) bfg-1.14.0.jar 사용이 잦을 것 같은 경우 고급시스템설정의 환경변수로 이 경로를 등록하면 편합니다.
1
2
3
| java -jar [경로]bfg-1.14.0.jar --convert-to-git-lfs '*.zip'
java -jar [경로]bfg-1.14.0.jar --convert-to-git-lfs '*.jar'
java -jar [경로]bfg-1.14.0.jar --convert-to-git-lfs '*.mp4'
|
- 새로운 저장소(github)로 mirror-push를 진행합니다.
1
| git push --mirror 옮길 리포지토리 깃 링크
|
위와 같이 BFG와 LFS를 이용해서 깃허브를 옮기려면 깃 LFS 스토리지가 사용되며 이는 깃허브를 기준으론 용량제한 정책에 제한을 받습니다(무료기준 1GB). 모든 커밋내역에서 100MB가 넘는 파일의 변경사항을 추적하기 때문에 파일 표기 용량보다 많이 사용될 수 있습니다.
따라서 다음과 같이 하는 방법도 추천드립니다.(100mb 이상의 파일이 히스토리에서 삭제됨)
100MB이상 히스토리 모두 삭제 후 옮기기
- git bash를 엽니다.
- 복사하고자 하는 저장소(gitlab)의 bare clone을 생성합니다.
1
2
| git clone --bare 해당깃링크
cd 클론된 깃 폴더
|
- ( 100MB 에러가 날 경우 ) 기존 Commit에서 100MB보다 큰 파일의 로그를 강제로 없애줘야 합니다.
1
| java -jar [경로]bfg-1.14.0.jar --strip-blobs-bigger-than 100M
|
- 새로운 저장소(github)로 mirror-push를 진행합니다.
1
| git push --mirror 옮길 리포지토리 깃 링크
|