임시 TF 프로젝트를 할 때 형상관리를 어디에 할지 결정되지 않았고
프로젝트는 점점 커지고 혼자 하는 프로젝트가 아니었으므로
일단 내 github에 private으로 올려서 사용했다.
프로젝트 끝날 무렵 연구소가 사용하는 사내 git계정에 올리기로 결정되었다.
커밋이력까지 함께 옮겼으면 해서 찾아봤는데 생각보다 별게 없었다.
크게보면 저장소 URL만 바꿔서 push
push할 때 옵션으로 함께 옮기고 싶은 사항들을 주면 된다.
이번에 사용한 옵션은 --mirror로 저장소의 모든 데이터를 다 옮기는 기능이다.
여기서 말하는 모든 데이터는 다음과 같다.
- 브랜치: 로컬 저장소에 존재하는 모든 브랜치.
- 태그: 로컬 저장소의 모든 태그.
- 원격 설정: 저장소 관련 Git 설정.
- 모든 커밋 이력: 모든 커밋 내역과 로그가 유지됨.
1. 원격 저장소 URL 변경
git remote set-url origin http://git.~/ai-dis-design-project.git
2. URL 변경 확인:
git remote -v
2-1. 혹시 확인시 fetch랑 push가 주소가 다르다면 맞춰줘야 함
git remote set-url --push origin http://git.~/ai-dis-design-project.git
3. 태그와 브랜치까지 완전히 동기화한 강제 푸시
git push --mirror origin
+++++
--mirror옵션 말고
git push --all origin
git push --tags origin
을 사용하는 방법도 있다.
--all 옵션은 로컬의 모든 브랜치를 원격 저장소로 푸시한다.
하지만 태그는 포함되지 않기 때문에 따로 해준다
+++++
다만, 위의 방식은 로컬의 모든 브랜치와 태그이므로 로컬에 없는 브랜치는 반영되지 않는다는 점 유의.
이 프로젝트는 차장님과 둘이서 진행하면서 브랜치가 많지 않았어서 이렇게 간단하게 사용가능했다.
로컬에 모든 정보가 없는 경우라면
git clone --mirror https://github.com/<username>/<repository>.git
을 선행하고 위 과정을 진행하면 된다.