본문 바로가기

개발공부/Error Handling

[Git 오류 해결] Git Pull 오류 (refusing to merge unrelated histories)

오늘 제대로 Github repository 연결하고 push, pull 하는 것도 실습을 해봤는데 예상치 못한 오류들이 발생해서 구글링으로 해결 방법 찾아보느라 나도 그렇고 페어님도 그렇고 애를 많이 썼다ㅠ.ㅠ 사실 끝까지 해결 못 했으면 찝찝하고 개운한? 마무리가 안됐을 것 같은데 극적으로 시간 종료 직전에 해결이 됐다!! 힘들긴 했지만 문제 해결하면서 공부도 되고 많이 배울 수 있었던 좋은 경험이었다. 왜 부딪히면서 배우는 거라고 했는 지 알 것 같았던ㅎㅎ

 

(코드 스테이츠에서 올려준 repository는 private이여서 그런지 뭐가 문제인지 잘 모르겠지만 오류가 넘 많아서 아예 새로 repository를 만들고 진행했다.)

 

문제 상황

페어님과 내 깃헙 계정을 연결하고 내 local에서 파일 내용을 수정하고 add → commit → push까지 잘 완료가 된 상황이었다. 그리고 페어님 로컬에서 git bash 화면에 git pull pair master 이라고 입력했는데 아래와 같은 오류 메시지가 떴다.

 

fatal: refusing to merge unrelated histories

 

검색해보니까 이런 오류는 서로 관련 없는 저장소를 합칠 때 git이 거부해서 발생한다고 하는 현상이라고 한다.

그래서 아래의 명령을 입력하면 정상적으로 작동한다는 것을 알 수 있었다.

$ git pull 원격저장소경로명 브랜치명 --allow-unrelated-histories


예시) 
$ git pull origin main --allow-unrelated-histories

 

그러나 페어 프로젝트의 경우 상대방의 원격 저장소 경로로부터 pull 해오는 것이기때문에 다음과 같이 입력해줬다. 서로의 원격저장소 이름은 pair로 지정해놨었고 나랑 페어님 둘 다 master 브랜치로 업로드 했던 상황이기때문에 저장소 명은 pair로, 브랜치 명은 master로 적어줬다.

$ git pull pair master --allow-unrelated-histories

이렇게 입력하니까 linux cli 실습 때 봤던 nano 화면이 뜨긴 했지만 엔터 누르니까 pull이 완료됐다.

그리고 페어님 로컬 디렉토리 확인해봤는데 정상적으로 내 github repository에 있던 파일이 페어님 로컬에 다운 받아진 것을 확인했다. 

 

다음에 프로젝트를 하다가 여럿이서 repository 연결할 때 이런 오류가 발생하면 그 땐 좀 더 쉽게 해결할 수 있을 것 같다.