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한 뒤 빌드해서 실행까지 확인했다.
맞게 한건지는 잘 모르겠으나, 내가 원했던 기능이 완벽하게 수행이 되었다. 끝.
'IT.인터넷' 카테고리의 다른 글
AirPort Time Capsule - 2TB (0) | 2018.12.26 |
---|---|
카카오톡 아이디 검색 허용 설정 방법 (0) | 2018.12.03 |
[용어] URI(Uniform Resource Identifier)란 (0) | 2018.11.21 |
PS4 프로(Pro) 버티컬 스탠드 가성비 좋은 제품 (0) | 2018.11.01 |
스마트폰 충전거치대 신지모루 Sync Stand (0) | 2018.10.29 |