최근 사내 Git 서버를 교체하게 되어 저장소 마이그레이션을 진행했다.
단순히 파일만 복사해서 옮기는 것이 아니라,
그동안 쌓아온 모든 커밋 이력(Commit History)을 온전히 보존해야 했다.
나중에 다시 마이그레이션을 할 때 참고하기 위해, 과정을 기록으로 남긴다.
이방법은 Git의 표준 기능을 이용하기 때문에
Github, GitLab, Bonobo 등 어떤 Git 서버간의 이동에도 동일하게 적용이 가능하다.
마이그레이션 전 준비사항
로컬 작업 내역 push
기존 서버에 Push하지 않은 로컬 작업 내용이 있다면 모두 Push하여 서버 상태를 최신으로 맞춘다.
신규 저장소 생성
마이그레이션 대상이 될 새로운 Git Server에 레파지토리를 미리 생성해둔다.
Step1. 기존 레파지토리 복제 (Mirror Clone)
먼저 PC 로컬에 임시 폴더를 생성한뒤
기존 Git Server에서 프로젝트의 레파지토리 주소를 복사한다.
그 다음 터미널에서 아래 명령어를 입력한다.
# 모든 커밋 이력과 브랜치를 포함하여 복제
git clone --mirror [기존_Bonobo_레포지토리_URL]
완료되면 로컬에 [프로젝트명.git] 형태의 폴더가 생성된다.
이 폴더는 단순 소스뿐만 아니라 모든 커밋 히스토리를 포함하고 있다.
Step2. 신규 서버로 Push (Mirror Push)
새로운 Git Server에서 생성한 프로젝트의 URL을 복사한다.
그후 방금 생성된 [프로젝트명.git] 폴더 안으로 진입하여 새 서버로 데이터를 밀어넣는다.
# 생성된 폴더로 진입
cd [프로젝트명.git]
# 새로운 GitLab 서버로 모든 이력 Push
git push --mirror [새로운_GitLab_URL]
마이그레이션이 완료 되면 새로운 Git Server에 커밋 이력이 정상적으로 옮겨져잇는지 확인한다.
*이제 위에서 생성된 [프로젝트명.git] 폴더는 삭제해도 무방하다
Step3. 로컬 설정 변경
마지막으로,
기존에 작업하던 로컬 프로젝트들이 새로운 서버를 바라보도록
원격 저장소 주소를 수정해야한다.
git remote set-url origin [새로운_GitLab_URL]
'Git' 카테고리의 다른 글
| [git / bonobo] window에 Git Server 구축 (0) | 2024.11.18 |
|---|---|
| [git] .gitignore를 수정했는데 적용되지 않을 때 해결 방법 (0) | 2024.08.21 |