이번에 대량으로 Git 저장소를 미러링할 일이 있었다. 나중에 잊지 않도록 방법을 적어놓고자 한다.
일반 저장소 미러링
1. Git Bash를 켠다.
2. 미러링하려는 원본 저장소를 clone 한다.
git clone --bare {원본 저장소 주소}
3. 새 저장소에 push 한다.
cd {원본 저장소를 clone한 디렉터리 위치}
git push --mirror {새 저장소 주소}
대용량 파일 있는 저장소 미러링
100MB 이상의 대용량 파일이 있는 저장소의 경우, 이런 에러가 뜬다.
error: ... this exceeds GitHub's file size limit of 100.00 MB
error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
에러 설명에 나와있듯이, Git LFS를 사용해서 크기가 큰 파일도 미러링할 수 있다.
※ Git LFS란?
Git LFS를 사용하면 Git 저장소에 실제 대용량 파일을 저장하는 것이 아니라, 해당 파일에 대한 텍스트 포인터를 저장하게 된다. 실제 파일은 Github과 같은 외부 서버에 저장된다.
Git 저장소를 clone할 때, Github는 Git LFS가 만든 포인터 파일을 사용해 대용량 파일을 찾아온다!
그래서 Github 계정 종류마다 Git LFS로 저장할 수 파일 크기가 한정되어 있다. 자세한 건 여기에.
이제 Git LFS를 사용해 대용량 파일이 있는 저장소를 미러링 해보자.
Git LFS 설치하기
1. Git LFS를 설치한다.
2. Git Bash를 켜고 아래 명령어를 수행해 Git LFS를 활성화한다. (계정 당 한 번만 하면 된다.)
git lfs install
Git LFS로 대용량 파일 미러링
1. 미러링하고자 하는 원본 저장소를 clone한다.
git clone --mirror {원본 저장소 주소}
2. 대용량 파일을 Git LFS 방식으로 변환한다.
cd {원본 저장소를 clone한 디렉터리 위치}
# 현재 브랜치에 있는 모든 .mp4 파일 변환
git lfs migrate import --include="*.mp4"
# 모든 브랜치에 있는 모든 .mp4 파일 변환
git lfs migrate import --everything --include="*.mp4"
# 모든 브랜치에 있는 모든 파일 변환 (파일에 따라 느릴 수 있음)
git lfs migrate import --include="*.*"
3. 새 저장소에 push한다.
git push --mirror {새 저장소 주소}
새 저장소에 가서 보면, 대용량 파일이 Git LFS 포인터 파일 형식으로 저장된 것을 볼 수 있다.
Git LFS 객체가 있는 저장소 미러링
기존 저장소에 Git LFS 객체가 있다면 아래와 같이 미러링하면 된다.
1. Git Bash를 켠다.
2. 원본 저장소를 clone한다.
git clone --bare {원본 저장소 주소}
3. 원본 저장소의 Git LFS 객체를 pull한다.
cd {원본 저장소를 clone한 디렉터리 위치}
git lfs fetch --all
4. 새 저장소로 push한다.
git push --mirror {새 저장소 주소}
# Git LFS 객체 push
git lfs push --all {새 저장소 주소}
참고 자료
'Git' 카테고리의 다른 글
[Git] 상황별 Git 명령어 정리 (0) | 2023.09.11 |
---|