Git/Trouble Shooting

[Trouble Shooting] git pull - merge 실패 "fatal: Need to specify how to reconcile divergent branches."

강잇 2022. 11. 19. 22:54

발생

작업 공용 브랜치 dev-be로부터 작업할 브랜치를 생성 후 작업함.

작업 후 커밋하기전 dev-be의 작업 전 버전과 작업 후 버전이 차이가 있는 상황.

로컬에서 최신 dev-be를 pull한 다음 충돌나는 부분을 해결 후 커밋하려고 했는데, pull하는 과정에서 아래와 같은 이슈가 발생함.

원인

You have divergent branches and need to specify how to reconcile them.
fatal: Need to specify how to reconcile divergent branches.

현재 Local의 dev-be 버전과 Remote의 dev-be의 버전(분기)가 달라 pull할 때 merge가 되어야 하는데

pull 전략이 따로 지정되어 있지 않아 위와 같은 에러가 발생한 듯 하다. (git 2.27부터 새로 추가된 기능)

해결

오류 내용을 살펴보면 hint로 설정을 바꾸는 방법이 나와있다.

전략은 3개 제시해줬으며 다음과 같다.

hint: git config pull.rebase false # merge
hint: git config pull.rebase true # rebase 
hint: git config pull.ff only # fast-forward only

위의 전략에 대한 설명을 찾아보고 현재 글에 담고 싶었으나.. 간단 명료하게 담기에는 꽤 깊은 내용들이라 나중에 블로깅을 하기로 했다...

일단은 merge전략을 사용하려고 한다.

merge전략은 새로운 브랜치가 있을 경우 3-way-merge를 아니라면 fast-forward로 브랜치를 병합해준다.

git config --global pull.rebase false // 전역으로 설정할 경우
git config pull.rebase false // 현재 폴더 기준으로 설정

 

나는 전역으로 설정하기 위해 git config --global pull.rebase false를 사용했다.

설정 후 pull 명령어 재실행

Automatic merge failed; fix conflicts and then commit the result.

pull을 재실행하니 여러 개의 파일이 pull 되며 마지막에 위와 같은 메세지가 뜬다.

메세지를 따라서 충돌난 코드를 수정하여 다시 커밋하였고 오류는 해결됐다~!