[git] 저장소 이동하기
서버를 변경하거나, 서버가 터졌을 때 저장소 이동이 필요해진다.
이를 위한 과정이다.
1. 기존 저장소 복사
우선 필요한 것은 기존 저장소 복사. 저장소의 내용을 다운로드 받는다.
깃을 이용하는 것이 좋은데, 나는 소스트리를 사용하고 있으니 소스트리의 깃 터미널을 사용한다.
소스트리의 아무 프로젝트에서 깃 터미널을 실행한다.
cd 명령어를 사용하여 원하는 로컬 경로로 이동
git clone 명령어를 사용하여 다운로드 받는다.
--mirror 옵션은 기존의 tracking branches, notes, tags 등 모든 것을 그대로 복제하라는 명령이다.
git clone --mirror http://XXXXXXXXXXX/project.git
다운로드가 완료되면 생성된 폴더로 이동한다.
cd project.git
2. 새 저장소 url 설정
현재 로컬 폴더의 원격 저장소를 변경하여 설정한다.
깃 허브에 저장한다고 가정하면...
git remote set-url --push origin http://github.com/test/test/git
3. 새 저장소에 push
로벌 폴더의 내용을 새 저장소에 push 한다.
git push --mirror
완료되면 저장소에 들어가서 내용을 확인하다.
터미널에서 확인하는 방법도 있다.
git remote -v
위 내용은 새 저장소를 새로 만들어서 옮긴다는 생각으로 진행한 과정이다.
이미 존재하는 저장소에 이동하는 경우, 기존 내용이 없어지고 복제된 데이터로 변경될 수 있다.
4. RPC failed 오류
RPF fariled;
fetch-pack: unexpected disconnect while reading sideband packet
등의 오류가 발생할 수 있다. 아마도 용량이 커서인 것 같다.
git clone --mirror http://XXXXXXXXXXX/project.git --depth 1
depth 옵션을 이용하여 다운받으면 대부분 성공한다.
cd project.git
git fetch --unshallow
다운받은 이후 폴더로 이동하여 fetch 명령어로 남은 내용을 다운받는다.
위의 fetch 명령을 수행하는 과정에서도 문제가 발생할 경우
git fetch --depth=100
git fetch --depth=200
git fetch --depth=300
위와 같이 depth 값을 높여가면서 부분적으로 다운받다 보면 완료 가능하다.