유추라는 유튜브 채널 추천 프로젝트를 할 때 처음 기획이었던 각 유튜브 채널의 페이지가 있고 그 페이지에서 사람들이 남긴 리뷰도 조회하고 자신의 리뷰, 평가도 남길 수 있는 서비스를 개발하다가
처음부터 많은 기능을 배포하기 보다는 프로토타입으로 간단하게 만들어서 별점 데이터만 먼저 받아서 추천 성능을 높이는 방향으로 가자는 의견이 나와 프로토타입 형태로 다시 간단하게 개발을 하게 되었다.
그 과정에서 원래 사용하던 레포지토리가 아닌 새로운 레포지토리를 파서 개발을 시작했어야했는데 바보같이 원래 사용하던 레포지토리에 브랜치만 새로 파서 어떻게 보면 다른 두 개의 프로젝트가 한 레푀토리에 다른 브랜치로 기록하게 되었다.
원래 개발하던 프로젝트도 거의 완성 되었던 상태라 포트폴리오에라도 작성하고 싶은데 프로토타입보다는 큰 원래 기획의 개발 코드가 default branch가 아니라서 포트폴리오로 제출하기 힘든 상태였다.
그 레포지토리를 커밋 기록과 브랜치까지 모두 그대로 복사해서 새로운 레포지토리에 옮겨야겠다고 생각했다.
방법이 없을까봐 걱정했는데 다행히 방법이 있었다.
$ git clone --mirror {old repository}
$ cd {old repository name}
$ git remote set-url origin {new repository}
$ git push --mirror
맥에 터미널을 열어서 위 코드를 입력하니 에러가 났다고 했는데 막상 레포지토리에는 정상적으로 push된 것을 확인할 수 있었다.
그래서 원래 사용하던 레포지토리에서는 새로 개발한 브랜치를 지워주고 새로 복사한 레포지토리에서는 이전 개발 브랜치를 다 지우려다가 뭔가 잘 못 될까봐 지우지 않았다.