Git - refusing to merge unrelated histories 오류
IntelliJ에서 처음 스프링부트 프로젝트를 생성한 후
깃허브에 push할 때 생긴 오류입니다.
프로젝트를 처음 만들었으니 git init을 한 후에 remote명령어를 통해 GitHub로 push하려했더니,
GitHub에 변동사항이 있으니 pull을 하라는 오류가 떴습니다...
그래서 pull을 했더니 해당 오류가 발생했습니다.
서로 연관되지 않은 Repository둘을 병합하려고 할 때 생기는 오류라는데,
저는 처음 프로젝트를 만들고 push할 때 생겼으니 이유가 뭔지 확실하게를 모르겠습니다.
--allow-unrelated-histories 명령어를 사용하면 해결할 수는 있습니다.
서로다른 기록을 가진 두 프로젝트를 병합할 때 사용하는 것이라고 합니다.
Git에서는 관련없는 두 프로젝트를 병합할 때 거부하도록 설정되어있는데, 이것을 허용해 주는 것이에요.
git pull origin master --allow-unrelated-histories
이렇게 연관없는 저장소에서 pull을 허용한 후 push를 하면 정상적으로 진행이 됩니다.
오류에 대한 이유를 몇가지 생각해봤는데요,
- IntelliJ가 프로젝트 생성시에 자동으로 git을 생성
- Branch이름을 변경한 것이 오류를 발생시킴
첫번째 이유는 IntelliJ에서 프로젝트를 생성하면 .gitignore파일도 자동으로 생성되더라구요.
그래서 혹시나 자동으로 git을 생성해서 나중에 만든 GitHub의 저장소와 다른 프로젝트로 인식되면서
발생한 오류인가 싶어서 찾아봤는데, 자동으로 git을 생성해주는거 같진 않았습니다.
IntelliJ의 기능이 하도 다양하다보니 이런 기능도 있나 싶었어요..
두번째 이유는 'Branch이름의 변경 때문에 서로 다른 프로젝트라고 인식이 된 것 같다.' 입니다.
원래 자동으로 생성되는 default Branch의 이름이 master이었는데,
master라는 단어가 인종차별적인??느낌을 준다고해서 비교적 최근에 main으로 바뀌었다고 들었습니다.
그런데, 로컬에서 git init을 했을때는 아직 master라는 이름으로 생성되길래 GitHub 저장소의 default Branch를
master로 바꿨습니다.
이 과정을 진행했을 때, 뭔가 잘못됨을 느꼈었어서 이게 문제였던것 같아요.
default Branch이름을 변경하다가 서로 다른 프로젝트로 인식이 되어버린 것..으로 결론을 일단 내렸습니다.