깃랩 레포지토리를 깃허브로 옮기기(feat. SSAFY)

·2022년 12월 5일
post-thumbnail

기본적으로 SSAFY의 모든 프로젝트는 GitHub가 아닌 GitLab을 활용해서 진행된다. 그리고 모두 싸피 관계자만 볼 수 있게 되어 있어서, 포트폴리오로 활용하려면 깃허브 반출이 필수!

2학기에 진행한 세 개의 프로젝트 중 마지막 프로젝트를 제외한 두 프로젝트는 모두 용량이 큰 파일 때문에 문제가 발생했었는데, 동기들 덕분에 잘 해결할 수 있었다.

그리고 그 도움을! 블로그에 한 번 정리해보고자 한다 :)

기존의, 내가 미러링하고 싶어하는 대상 ➡ 깃랩 레포지토리
새로운, 내가 미러링한 것을 반영하고 싶은 곳 ➡ 깃허브 레포지토리


1. 대용량 파일이 없을 때

100mb를 초과하는 파일이 없을 때

1. 새로운 폴더를 하나 만들어주기

2. 해당 폴더 내에 깃랩 레포지토리를 클론 받기

git clone --mirror 깃랩레포주소


[예시]
git clone --mirror https://lab.ssafy.com/~~~
  • 완료 시

3. 미러+클론 받은 레포지토리로 이동하기

해당 폴더명은 레포지토리명.git 이다

cd 레포지토리명.git/

4. 해당 폴더에서 깃허브로 푸시하기

git push --mirror 새로운깃허브주소


[예시]
git push --mirror https://github.com/hyunspace/newRepo

만약 100MB가 넘는 파일이 있다면, 오류가 발생한다. 이 때는 두 번째 방법을 활용하자!

  • 어떤 오류인지 궁금하신가요... 이런 오류입니다... 오른쪽의 스크롤을 보세요... ^_ㅠ



2. 대용량 파일이 있을 때

100mb를 초과하는 파일로 인해 바로 push할 수 없을 때

위의 1~3번까지 진행한다

4. lfs 설치하기

git lfs install

git-lfs가 뭔지 궁금하신 분들은 다음 포스트를 참고해보세요!
대용량 파일 github에 push할 때 생기는 오류 정복하기(feat. git-lfs, bfg)

5. bfs repo cleaner 설치하기

bfs 설치 페이지 방문

파일은 레포지토리명.git 폴더와 같은 곳에 다운로드 받아주세요!

6. 대용량 파일 찾아내기

대용량 파일을 트래킹해보겠습니다. 아마 파일 용량 확인 없이 바로 push를 하셨으면, 오류가 나면서 어떤 파일이 문제였는지 보셨을 텐데요. 그 때 파일의 확장자를 잘 기억하고 있다가 여기서 적어주시면 됩니다.

git filter-branch --tree-filter 'git lfs track "*.{100MB 넘는 파일의 확장자명}"' -- --all

저 같은 경우에는 msi 파일이 문제였던지라 해당 파일을 넣었었는데, 다른 문제가 발생해서... 그냥 모든 파일을 다 찾으라고 시켰습니다.
이렇게요!

git filter-branch --tree-filter 'git lfs track "*.*"' -- --all

특정 확장자를 적지 않고 모든 파일을 찾을 경우 꽤 오랜 시간이 걸립니다!

완료 되고 나면 이렇게 문제가 되는(?) 부분을 다시 썼다고 쭉! 나옵니다

7. 찾은 대용량 파일을 bfs repo cleaner를 사용해서 정리하기

만약 특정 확장자를 적으셨다면

java -jar BFG.jar저장경로 --convert-to-git-lfs '*.확장자'

라는 코드를 확장자 개수 만큼 쳐주시면 되고요(확장자에 각 확장자를 넣어서!)

저처럼 확장자를 지정하지 않고 모든 파일을 검사 + bfs 파일 위치가 저와 같다

java -jar ../bfg-1.14.0.jar --convert-to-git-lfs '*.*'

라고 쳐주시면 됩니다.

여기서 주의하실 점은

  • 컴퓨터에 Java(JDK)가 설치되어 있어야 하고
  • 환경 변수에 등록 해두었어야 하고
  • bfs파일명은 다운 시점에 따라 다를 수 있으니 각자 확인해야 하며
  • 파일의 확장자인 .jar까지 입력 해야 한다

는 겁니다.

8. 깃허브로 푸시하기

다 왔습니다! 이제 깃허브로 푸시하기만 하면 됩니다 :)

git push --mirror 새로운깃허브주소

이 때 명령어 입력 후에도 아~무런 반응이 없을 수 있는데요. 일단 기다립시다...! 저는 문제가 생긴 줄 알고 계속 ctrl+C를 눌러서 종료 시켰었는데요, 알고보니 그냥 아주 아주 오래 걸리는 것 뿐이었습니다 ^_ㅠ

이 상태에서 반응이 없어도 그냥 기다려주세요! 언젠가는 다음 줄이 뜹니다!

profile
성장형 개발자

1개의 댓글

comment-user-thumbnail
2023년 6월 6일

대용량일 때 git clone --mirror도 안되던데 괜찮던가요?

답글 달기