[git] 자세하게 GitLab -> GitHub 대용량 프로젝트 이동(lfs, bfg 등)
- 나중에 필요할 지 모르니, 자세하게 적어보려한다! -
하.............
엄청난 인내심을 발휘했던!!
프로젝트 이동시키는 방법에 대해 쓰려한다..
ㅠㅠㅠㅠㅠ
정말 한달 걸렸다..ㅜㅜㅜ
너무나도 많은 오류와 첨 보는 오류....
알수 없는 오류 사유로 인해서...
일단 옮기려는 GitLab 프로젝트가 대용량 파일과 대용량 커밋 유무 에 대해 알아야한다!
대용량 파일 / 대용량 커밋 | 해결 방법 |
파일과 커밋 모두 대용량 아님 | 🌞 Solution_1 기본방법 |
파일만 대용량 | 🌞 Solution_2 LFS 방법 |
파일과 커밋 모두 대용량이면 | 🌞 Solution_3 BFG repo-clean & LFS 방법 |
나의 경우는 파일과 커밋이 모두 대용량이었어서 < 🌞 Solution_3 BFG repo-clean & LFS 방법 >이었다!
🌞 Solution_1 기본 방법
일단 기본방법에 대해 알아보자
1. 클론할 로컬위치에서 터미널을 열기
이때 클론하는 로컬공간을, 대용량 커밋과 대용량 파일을 다듬을 공간이라고 생각하면 된다.
2. Clone, Push
git clone --bare 🧡이동할 gitlab http주소🧡 #옮길 깃랩repo clone
cd 🧡만들어진 gitlab폴더🧡 #폴더로 이동
git push --mirror 🧡옮길 새로운 github🧡 #새로운 깃헙repo push
🌞 Solution_2 LFS 방법
1. 클론할 로컬위치에서 터미널을 열기
이때 클론하는 로컬공간을, 대용량 커밋과 대용량 파일을 다듬을 공간이라고 생각하면 된다.
2. Clone, Push
git clone --bare 🧡이동할 gitlab http주소🧡 #옮길 깃랩repo clone
cd 🧡만들어진 gitlab폴더🧡 #폴더로 이동
git lfs fetch -all # repo의 대용량파일 가져오기
git push --mirror 🧡옮길 새로운 github http주소🧡 #새로운 깃헙repo로 push
git lfs push --all 🧡옮길 새로운 github http주소🧡 #새로운 깃헙repo로 대용량파일 push
🌞 Solution_3 BFG repo-clean & LFS 방법
lfs로 했는데도 실패가 된 상황... 여기까지 오신 분들 참 고생 많으셨다 😂
나도 참 고생고생.......ㅋㅋㅋ
마지막 방법!! BFG repo-cleaner 방법으로 해보자!!
1. BFG Repo-Cleaner 다운받기
https://rtyley.github.io/bfg-repo-cleaner/
홈페이지 들어가기 귀찮으면 아래 그림에 파일 다운 링크 걸어놨다!!
👇👇 아래 그림 클릭 👇👇
2. java 다운 받기
: 다운받은 BFG 파일이 java로 만들어진 jar파일이다보니
java 설치 및 환경변수를 설정해줘야 한다.
아래 잘 정리 된 포스팅 글 들어가서 java 설치해보긔!!
👉 https://languagestory.tistory.com/11
윈도우 JDK(JAVA Development Kit) 설치
1. 시험환경 ˙ 윈도우 ˙ JDK 17 Win x64 2. 목적 ˙ 윈도우 환경에서 JDK를 설치한다. ˙ 설치한 JDK 환경을 설정한다. 3. 적용 ① 오라클 다운로드 센터에서 JDK for Developers를 클릭한다. - URL : ht..
languagestory.tistory.com
3. 본격 옮기기 전 해야할 일
1) Github에 옮겨놓을 새로운 Repository 만들기
- 뭐 당연한 거겠쥬?? README는 쓸 필요없다! 어차피 깃랩 repo 옮겨오니까 사라진다.. ㅋㅋ
2) default branch 이름 동일하게 맞추기 (아래 캡쳐본 참고하기!)
✨오류 미리 피하기 - 다 진행하면서 수도 없이 오류를 맞딱드리면서 안 사실인데,
깃헙과 깃랩의 defalt 브랜치 이름이 다르다보니 기존 깃헙default를 삭제하려는데
삭제 못한다면서 이런 오류가 뜨니까 충돌나기 전 이름을 바꿔놓았다!
3) Gitlab Branch protect 해제하기
✨오류 미리 피하기 옮겨야할 gitlab의 브랜치가 protect 설정되어 있으면 안옮겨지는 오류가 생긴다.
4. BFG Repo-Cleaner 100MB이상 대용량 히스토리 정리하기
4_1) 깃랩 http주소를 복사한다
: 옮길 깃랩 repository http주소를 복사한다.
4_2) 클론할 로컬위치에서 터미널을 열기
이때 클론하는 로컬공간을, 대용량 커밋과 대용량 파일을 다듬을 공간이라고 생각하면 된다.
4_3) 클론
git clone --mirror 🧡복사한 깃랩 http 주소🧡
# 예시 : git clone --mirror https://gitlab.com/LIMSONA/kdt_project_real.git
4_4) 같은 디렉토리에 다운받은 bf-1.14.0.jar 파일을 위치한다.
4_5) 대용량 파일 삭제
✨오류 미리 피하기 java 설치 & java 환경변수 설정이 정상적으로 안되어있다면 java 명령어가 안먹힐 수 있으니 위에 '2.java 설치'를 다시한번 보고 오길!
java -jar bfg-1.14.0.jar --strip-blobs-bigger-than 100M 🧡생성된 .git으로 끝나는 폴더🧡
# 예시 java -jar bfg-1.14.0.jar --strip-blobs-bigger-than 100M kdt-project-real.git/
4_6) 삭제 내용 적용
cd 🧡클론된 .git 폴더🧡 #생성된 폴더 디렉토리로 이동
#예시 : cd kdt-project-real.git
git reflog expire --expire=now --all && git gc --prune=now --aggressive
5. BFG & LFS 사용하기
5_1) 커밋 히스토리 내에서 대용량 파일 찾기
cd .. # 상위 디렉토리로 이동
# 커밋 히스토리 내에서 대용량 파일 찾기
git filter-branch --tree-filter 'git lfs track "*.{🧡찾고싶은 대용량파일형식🧡}"' -- --all
# 예시: git filter-branch --tree-filter 'git lfs track "*.{pt,npy}"' -- --all
✨오류 미리 피하기 조회하는 와중 오류가 아래그림처럼 발생하였다!
파일디렉토리 이름이 이상한 경우, 커밋자체에 오류가 있었던 경우 등 다양한 이유라고 하는데
해결방법은 해당 커밋을 삭제하니 잘 진행되었다.
삭제방법은 ' git log '를 쳐보면 커밋한 내역이 뜬다. ▶ 그 상태에서 ' / ' 슬러시를 치고 아까 복사한 커밋 아이디를 붙여넣기하여 검색해본다. (#예시 /a1b3c45d6e7f8g9 ) ▶ git reset --soft 이전커밋id
(* git reset 방법 참고 : https://www.devpools.kr/2017/02/05/%EC%B4%88%EB%B3%B4%EC%9A%A9-git-%EB%90%98%EB%8F%8C%EB%A6%AC%EA%B8%B0-reset-revert/ )
🔆아래와 같은 오류가 안뜰수도 있다! 내 경우는 떴다보니, 해결방법을 적어보았다!
5_2) BFG를 이용하여 찾은 파일들을 Git LFS로 변경하기
java -jar 🧡bfg파일(디렉토리포함)🧡 --convert-to-git-lfs '*.🧡대용량파일형식🧡'
git reflog expire --expire=now --all && git gc --prune=now --aggressive
#예시 : 내 경우엔 2개 파일형식이어서 각각 해줘야한다.
java -jar /d/clone_project/bfg-1.14.0.jar --convert-to-git-lfs '*.pt'
git reflog expire --expire=now --all && git gc --prune=now --aggressive
java -jar /d/clone_project/bfg-1.14.0.jar --convert-to-git-lfs '*.npy'
git reflog expire --expire=now --all && git gc --prune=now --aggressive
5_3) 새로운 저장소로 push하기
cd 🧡클론된 .git 폴더🧡 #생성된 폴더 디렉토리로 이동
#예시 : cd kdt-project-real.git
# push하기
git push --mirror 🧡새로운 github repository http주소🧡
# 예시: git push --mirror https://github.com/LIMSONA/Live_streaming_chat_AI_dashboard_project.git
참고:
* BFG파일 실행을 위한 자바설치: https://languagestory.tistory.com/11
* BFG&LFS 방법
- https://codingbetterthangame.tistory.com/203
'😆 Big Data > - etc (OS, Linux)' 카테고리의 다른 글
[오류해결] jupyter notebook Nbextensions 설치 오류 해결 (0) | 2024.02.28 |
---|---|
[Linux] WSL 설치하기 🙂 (0) | 2022.07.15 |
MySQL + VS code 환경 구축하기🙂 (0) | 2022.07.07 |
[conda] 아나콘다 설치하기 (빅데이터 분석 환경 만들기👱♀️) (0) | 2022.06.28 |
[Azure] 👩💻1. 기본 개념 - 클라우드, 클라우드 컴퓨팅, 온프레미스 (0) | 2022.03.10 |