Git을 사용하다 보면 "fatal: refusing to merge unrelated histories"라는 오류 메시지를 만날 수 있습니다. 이 오류는 주로 두 개의 서로 다른 Git 히스토리를 병합하려 할 때 발생하는데요, 특히 새로운 프로젝트를 기존 프로젝트와 병합하거나, 새로운 원격 저장소를 추가할 때 자주 나타납니다. 이번 포스팅에서는 이 오류의 원인과 해결 방법을 자세히 살펴보겠습니다.
Git 오류 "fatal: refusing to merge unrelated histories"란?
이 오류는 간단히 말해, 두 개의 서로 다른 프로젝트(혹은 저장소)의 이력이 관련이 없다고 Git이 판단할 때 발생합니다. 예를 들어, 하나의 프로젝트는 이미 히스토리를 가지고 있는데 다른 프로젝트나 새로운 원격 저장소와 병합하려고 할 때, 두 저장소의 공통된 커밋 이력이 없을 경우 이 오류가 발생하게 됩니다.
오류 발생 상황 예시
보통 이 오류는 다음과 같은 상황에서 발생합니다:
- 이미 초기화된 로컬 저장소에 새로운 원격 저장소를 추가하려 할 때
- 서로 다른 Git 프로젝트를 하나로 병합하려 할 때
- GitHub 저장소를 새로 만든 후 기존 프로젝트를 연결하려 할 때
예를 들어, 아래 명령어로 원격 저장소를 추가하고 병합하려 할 때 이 오류가 발생할 수 있습니다:
git remote add origin https://github.com/user/repository.git
git pull origin master
이때, "fatal: refusing to merge unrelated histories" 오류가 발생할 수 있습니다.
오류 해결 방법
이 오류를 해결하는 방법은 간단합니다. Git이 서로 관련이 없는 히스토리라고 판단하더라도 강제로 병합을 진행하면 됩니다. 이를 위해서는 --allow-unrelated-histories
옵션을 사용하면 됩니다. 다음 명령어를 입력하세요:
git pull origin master --allow-unrelated-histories
이 명령어는 Git이 서로 다른 히스토리를 가진 두 프로젝트를 병합하도록 허용하는 역할을 합니다. 이렇게 하면 Git은 더 이상 병합을 거부하지 않고, 두 프로젝트의 히스토리를 병합할 수 있게 됩니다.
주의사항
강제로 히스토리를 병합할 경우, 서로 다른 프로젝트의 파일 구조나 내용이 충돌할 수 있습니다. 따라서 병합 후에는 꼭 충돌이 발생하는 파일이 있는지 확인하고, 필요한 경우 수동으로 충돌을 해결해야 합니다. 이를 위해 다음 명령어를 사용할 수 있습니다:
git status
이 명령어는 병합 중에 발생한 충돌 파일을 확인하는 데 도움이 됩니다. 충돌 파일을 수정한 후 git add
로 스테이징하고 git commit
으로 병합을 완료할 수 있습니다.
특정 브랜치 간 병합을 진행할 때
만약 특정 브랜치 간 병합을 시도할 때 이 오류가 발생한다면, 병합하려는 두 브랜치 간의 히스토리를 비교한 후 동일한 명령어를 사용하여 병합할 수 있습니다. 예를 들어, develop
브랜치를 master
에 병합하려고 할 때:
git checkout master
git merge develop --allow-unrelated-histories
마무리
이번 포스팅에서는 Git에서 발생하는 "fatal: refusing to merge unrelated histories" 오류의 원인과 해결 방법을 알아보았습니다. 이 오류는 서로 다른 프로젝트나 저장소를 병합하려 할 때 자주 발생하므로, --allow-unrelated-histories
옵션을 사용하여 문제를 해결할 수 있습니다.
해당 포스팅을 통해 "fatal: refusing to merge unrelated histories" 문제 해결에 도움이 되셨으면 합니다.
댓글