떠있는 브랜치를 잡아라!

부제 : (fatal : refusing to merge unrelated histories)

catcha


Git이 익숙치 않을 때에는 브랜치 관리하는 것이 쉽지만은 않습니다.

흔히하는 실수 중에 하나는 원격 브랜치가 분리되는 경우입니다.
GitHub 등에서 원격저장소를 생성하고 Clone을 받아서 체크아웃을 했다면 문제가 없지만…


로컬에서 git init 으로 저장소를 생성하고 로컬에서 작업을 하다가 이후에 원격을 추가 하면
아래와 같이 브랜치가 붕 떠있는 것을 목격할 수 있습니다.



branch

로컬 브랜치가 붕 떠있다!




이런 식으로 로컬 브랜치와 origin/master 원격 브랜치가 아예 분리되어 있을 때에는

branch


master 브랜치에서 origin/master 를 병합하려 해도

branch

” fatal : refusing to merge unrelated histories “

라며 병합을 거부합니다. 😣😣😣





원격 브랜치를 체크아웃 한 다음 병합해도 마찬가지 에러가 발생하기 때문에
처음 이 에러를 겪는 경우에는 당황할 수 있습니다.




해결방법 1

이 때는 침착하게 콘솔에서 (소스트리의 경우 우상단에 터미널을 눌러서)

$ git rebase origin/master

와 같이 rebase 를 해주면

branch

master 브랜치에 그동안 로컬에서 작업한 깔끔하게 내용이 올라갑니다. 👏👏




해결방법 2

또 한가지 방법으로

$ git pull origin master –allow-unrelated-histories

와 같이 강제로 병합을 시키면

branch

사진과 같이 병합할 수도 있습니다. 👏👏