본문 바로가기
IT.인터넷

Git에서 Git으로 저장소 옮기기 (clone —mirror)

by Mr-후 2018. 11. 22.
반응형


Git에서 Git으로 저장소 옮기기 (clone —mirror) 



프로젝트 진행을 외부 저장소(Bitbucket / https://www.bitbucket.org) 이용하면서 진행하다, 이번에 망분리 차원도 있고 내부 서버로 자원을 모으는 일환으로 

프로젝트 저장소를 통째로 옮겨와야 하는 작업을 해야하느라 구글 검색을 통해 정리된 지식을 찾아 하나씩 이관을 해오고 있다. 

가물가물 해지는 기억 탓에 정리도 하면서 아이폰, 안드로이드, 웹까지 모두 옮기는 중이다. 


단, 새로운 저장소에 사용자의 push권한이 반드시 있어야 한다. 



우선 현재 사용하고 있는 Git저장소 폴더로 이동을 한다.  다음, git remote -v 명령을 이용해서 원격지 저장소의 경로를 확인한다. 


younghuui-MacBook-Pro:android younghumin$ git remote -v

origin https://younghumin@bitbucket.org/myapp/old_app_android.git (fetch)

origin https://younghumin@bitbucket.org/myapp/old_app_android.git (push)


이렇게 두개의 항목이 나오는데 fetch push 항목인데 

우선 URL 복사 . 둔다. 나중에 붙혀넣기 사용할 예정이며, fetch push 대해서는 모르겠다. 아시는 분은 댓글로 설명을 달아준다면 Thank you!! 




다음은 원격지의 저장소를 clone한다. 옵션은 —mirror 준다. 


younghuui-MacBook-Pro:android younghumin$ git clone --mirror https://younghumin@bitbucket.org/myapp/old_app_android.git

Cloning into bare repository 'old_app_android.git'...

remote: Counting objects: 5899, done.

remote: Compressing objects: 100% (3309/3309), done.

remote: Total 5899 (delta 3780), reused 4124 (delta 2144)

Receiving objects: 100% (5899/5899), 16.79 MiB | 2.57 MiB/s, done.

Resolving deltas: 100% (3780/3780), done.



잠시 , clone 완료되고 로그까지 확인이 되었다

상태에서 실제 Git저장소(로컬) 보면 old_app_android.git 파일(폴더) 만들어져있다. 


이제 clone 녀석을 새로운 레파지토리로 옮기는 작업을 해야 하는데 그렇게 하기 전에 새로운 레파지토리를 만들고 URL 있어야 한다

그리고 새로운 저장소 폴더로 Cd 명령어를 통해 이동하라고 참조한 곳에서는 명시가 되어 있었는데 엉뚱하게 하다. 


기존 사용하던 저장소의 체크아웃된 폴더에서 , clone 명령을 날린 현재 디렉토리에서 다음 명령어를 이용해서 set-url을하고 —mirror push했더니 제대로 되는 같다. 다만, 얇은 지식 때문에 명확하지는 않다. 


younghuui-MacBook-Pro:android younghumin$ git remote set-url --push origin  http://git.myapp.local/mobile_apps/android.git

younghuui-MacBook-Pro:android younghumin$ git push --mirror

Counting objects: 5899, done.

Delta compression using up to 12 threads.

Compressing objects: 100% (5453/5453), done.

Writing objects: 100% (5899/5899), 15.83 MiB | 7.21 MiB/s, done.

Total 5899 (delta 3784), reused 0 (delta 0)

remote: Resolving deltas: 100% (3784/3784), done.

To http://git.myapp.local/mobile_apps/android.git

 * [new branch]      master -> master

 * [new branch]      origin/HEAD -> origin/HEAD

 * [new branch]      origin/master -> origin/master




그런 다음 소스트리(SourceTree) 통해 새로운 레파지토리를 열어보니 REMOTES > origin  > master 있다

master 더블클릭해서 체크아웃 받았더니 새로운 레파지토리로 사용하겠다고 설정해둔 폴더에 파일이 고스란이 옮겨져 왔으며, Git 히스토리도 그대로 옮겨져 왔다. 통째로 옮겨 것이다. 깔끔하게 !




아무런 변화가 없는 것 같지만, REMOTES > 하위에 노드가 추가 되었으며 master를 확인하면 지금까지 다른 레파지토리에서 했던 작업 내용과 history까지 모두 가져왔다는 것을 확인 할 수 있다. 


실제 새로 만든 저장소의 폴더에서 프로젝트를 확인 한 뒤 안드로이드 스튜디오로 import한 뒤 빌드해서 실행까지 확인했다. 





맞게 한건지는 모르겠으나, 내가 원했던 기능이 완벽하게 수행이 되었다. . 





반응형