Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

Git 오류 해결: refusing to merge unrelated histories (관련 없는 히스토리 병합 거부)

Git 워크플로우에서는 여러 지점에서 오류가 발생할 수 있습니다. 이 글에서는 그중에서도 원인 파악과 해결이 특히 까다로운 오류 하나를 자세히 살펴보겠습니다.

Git 오류란?

fatal: refusing to merge unrelated histories 오류는 Git 저장소에서 프로젝트를 클론(clone)한 후, 어느 시점에 .git 디렉토리가 삭제되거나 손상되었을 때 발생합니다.

.git 디렉토리는 버전 관리 시스템이 원격 저장소와 로컬 변경 사항을 추적하는 핵심 요소입니다. 로컬 저장소의 루트 디렉토리에서 ls -a 명령어를 실행하면 이 디렉토리의 존재 여부를 확인할 수 있으며, 출력된 목록에 .git 디렉토리가 포함되어 있는지 살펴보면 됩니다.

Git 오류 해결: refusing to merge unrelated histories (관련 없는 히스토리 병합 거부)

.git 디렉토리가 손상되었거나 삭제되면 버전 관리 시스템이 로컬 커밋 히스토리를 인식하지 못합니다. 그 결과 원격 저장소에서 push 또는 pull을 시도할 때 로컬과 원격의 히스토리가 서로 연관이 없다고 판단하여 이 오류가 발생하게 됩니다.

해결 방법

Git은 이 문제를 해결하기 위해 --allow-unrelated-histories라는 옵션을 제공합니다. 이 옵션을 사용하면 히스토리가 일치하지 않는 두 저장소의 병합을 강제로 허용할 수 있습니다.

git pull origin master --allow-unrelated-histories

위 명령어를 실행하면 Git 히스토리가 일치하지 않더라도 원격 저장소와 로컬 프로젝트를 병합할 수 있습니다. 더 자세한 내용은 Git 공식 문서에서 확인할 수 있습니다.

pull 명령어를 성공적으로 실행한 후에는 push 작업도 정상적으로 수행됩니다. 만약 병합 과정에서 충돌(conflict)이 발생한다면, 충돌 파일을 수정한 후 커밋하고 다시 push하면 됩니다.