기존에 Bitbucket에서 관리하던 프로젝트를 GitHub로 완전히 이전했다.
단순히 파일만 옮긴 것이 아니라, 기존 커밋 히스토리까지 모두 유지한 상태로 통합하는 것이 목표였다.
origin/masterother/maingit fetch --all
git checkout other/main
git checkout -b main-final
GitHub 브랜치를 기준으로 새 브랜치를 만들어 작업을 진행했다.
처음 merge를 시도했을 때 아래 에러가 발생했다.
fatal: refusing to merge unrelated histories
이유는 두 저장소가 서로 다른 히스토리로 시작된 완전히 별개의 레포지토리였기 때문이다.
공통 조상이 없으면 Git은 기본적으로 병합을 거부한다.
해결 방법:
git merge origin/master --allow-unrelated-histories
이후 충돌을 해결하고 commit을 완료했다.
이 과정에서 Bitbucket의 커밋 히스토리가 GitHub 히스토리에 연결되었다.
git push other HEAD:main
이제 GitHub main 브랜치에서 Bitbucket의 과거 커밋 로그까지 모두 확인 가능하다.
이제 Bitbucket은 더 이상 사용하지 않으므로 remote를 정리했다.
git remote remove origin
git remote rename other origin
확인:
git remote -v
이제 origin은 GitHub를 가리키게 된다.
main이 최종 기준 브랜치--allow-unrelated-histories 옵션이 필요하다.