기존에 작업하던 레파지토리에서 완전히 새로운 레파지토리로 옮기고 싶은 경우가 있다. 간단하게는 기존 코드를 새 레파지토리에 복사해서 푸쉬하면 끝이다. 하지만, 그동안의 커밋 로그까지 모두 옮기고 싶을 경우에는 git clone --mirror 을 이용해야 한다. 모든 작업 내역을 새로운 레파지토리로 복사하는 방법을 알아보자.
레파지토리 이사 준비
git clone 명령어와 함께 --mirror 옵션을 이용한다. 옵션뒤에 레파지토리 주소를 넣어서 레파지토리를 영혼까지 복사할 수 있도록 길을 뚫어준다.
git clone --mirror {git Repository 주소}
명령어를 실행하고 나면 복사려는 레파지토리의 이름으로 .git 디렉토리가 생겨있다.
예를들어, 아래와 같은 명령어를 실행했다고 가정해보자 .
git clone --mirror https://github.com/홍길동/repositoryToCopy.git
명령어 실행 후 repositoryToCopy.git 라는 디렉토리가 생겨있다.
이 디렉토리 명을 .git 으로 바꿔주자.
mv repositoryToCopy.git .git
새 레파지토리로 연결
1번으로 이사 준비를 마쳤으면 이사갈 주소를 알려줘야 이사갈 수가 있다. 새로 이사 갈 레파지토리 주소를 지정해주자.
git remote set-url origin {새로 이사갈 레파지토리 주소}
이사 갈 주소를 알려줬으니 짐싸들고 이동하면 된다.
새 레파지토리로 이동
git push 명령어를 이용한다. 옵션으로 --mirror를 써주면 된다.
git push --mirror
Tip. 레파지토리 권한이 없어진 경우
예전엔 권한이 있었지만 지금은 권한이 없어 로컬에만 존재하는 레파지토리가 있을 수 있다. 이 때는 레파지토리 주소를 사용할 수가 없다.
이 상황을 해결하기 위해 레파지토리 루트 디렉토리에 존재하는 .git 디렉토리를 지정해주면 된다.
git clone --mirror ./.git
참조
Git Repository 이동하기 (velog.io)
'GIT' 카테고리의 다른 글
[Git] pull과 fetch의 차이 (1) | 2021.07.18 |
---|---|
내부망 GITLAB 설치 (0) | 2020.12.30 |
댓글