Soy's Devlog

특정 repository 커밋 이력까지 그대로 가져오기 본문

Git

특정 repository 커밋 이력까지 그대로 가져오기

소이리 2022. 1. 17. 23:41

깃 레파지토리 목록을 관리하던 중 위치를 바꾸고 싶은 레파지토리가 있었다.

단순 복사를 해버려서 그동안의 히스토리를 잃고 싶지는 않았기 때문에 mirror 옵션을 사용해 이사를 해보았다!

 

사전에 필요한 것은 옮겨질 레파지토리를 그대로 받을 새로운 레파지토리 이다. 

 

1. New Repository

신규 레파지토리를 생성해 준다

 

 

2. 로컬에 Clone 으로 내려받기

옮기고자 하는 레파지토리를 로컬에 clone 해 준다.

구글링을 해 보면 대부분 바로 mirror 옵션을 사용 하라는 경우가 대부분인데, mirror 옵션을 통해 clone할 경우 레파지토리의 소스는 가져오지 못한다. mirror 는 working tree에 있는 소스코드는 포함하지 않는 옵션이기 때문이다!

따라서 소스도 받기 위해서 레파지토리 자체도 clone이 필요하다..

git clone 레파지토리URL
git clone --mirror 레파지토리URL

clone이 모두 완료되면 로컬에 아래와 같이 소스코드 자체와 .git 확장자가 붙은 레파지토리 두 개가 생성되어 있다.

 

 

3. remote 연결 

이제 원격에 연결 해 줄 단계이다.

앞 단계에서 clone을 해왔던 remote가 아닌, 새롭게 반영할 신규 레파지토리를 push할 원격지로 설정해 주어야 한다.

git remote set-url --push 원격이름 신규레파지토리URL

remote 설정을 확인하기 위해 아래의 명령어를 실행해 주면 된다.

git remote -v

 

 

4. push 를 통해 원격지 반영

이제 모두 한번에 push만 해 주면 끝!

git push *

 

원격에 가보니 예전의 커밋이력까지 모두 복사된 것을 확인할 수 있었다

 

Comments