카테고리 없음

다른 GIT 저장소로 이력까지 함께 옮기기

숲별 2025. 1. 14. 09:33
728x90

임시 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
을 선행하고 위 과정을 진행하면 된다.