Bitbucket → GitHub 저장소 이관 작업 정리

NuJey·2026년 2월 26일

Bitbucket → GitHub 저장소 이관 (히스토리 유지하며 통합하기)

기존에 Bitbucket에서 관리하던 프로젝트를 GitHub로 완전히 이전했다.
단순히 파일만 옮긴 것이 아니라, 기존 커밋 히스토리까지 모두 유지한 상태로 통합하는 것이 목표였다.


📌 작업 당시 상황

  • Bitbucket → origin/master
  • GitHub → other/main
  • GitHub 쪽이 최신 작업본
  • Bitbucket에만 존재하는 일부 작업 내용이 필요
  • 최종 기준은 GitHub

1️⃣ 모든 remote 최신 상태로 가져오기

git fetch --all

2️⃣ GitHub(main) 기준으로 브랜치 생성

git checkout other/main
git checkout -b main-final

GitHub 브랜치를 기준으로 새 브랜치를 만들어 작업을 진행했다.


3️⃣ Bitbucket(master) 병합

처음 merge를 시도했을 때 아래 에러가 발생했다.

fatal: refusing to merge unrelated histories

이유는 두 저장소가 서로 다른 히스토리로 시작된 완전히 별개의 레포지토리였기 때문이다.
공통 조상이 없으면 Git은 기본적으로 병합을 거부한다.

해결 방법:

git merge origin/master --allow-unrelated-histories

이후 충돌을 해결하고 commit을 완료했다.

이 과정에서 Bitbucket의 커밋 히스토리가 GitHub 히스토리에 연결되었다.


4️⃣ GitHub main 브랜치에 반영

git push other HEAD:main

이제 GitHub main 브랜치에서 Bitbucket의 과거 커밋 로그까지 모두 확인 가능하다.


5️⃣ Bitbucket remote 제거 및 GitHub를 origin으로 변경

이제 Bitbucket은 더 이상 사용하지 않으므로 remote를 정리했다.

git remote remove origin
git remote rename other origin

확인:

git remote -v

이제 origin은 GitHub를 가리키게 된다.


✅ 최종 결과

  • GitHub main이 최종 기준 브랜치
  • Bitbucket 히스토리까지 모두 GitHub에 포함
  • remote 정리 완료
  • 앞으로는 GitHub만 사용

💡 정리하며

  • 서로 다른 저장소를 병합할 때는 --allow-unrelated-histories 옵션이 필요하다.
  • 기준 브랜치를 명확히 정하고 작업해야 히스토리가 꼬이지 않는다.
  • 이관 후 사용하지 않는 remote는 정리하는 것이 좋다.

0개의 댓글